螞蟻金服在 Service Mesh 監控落地經驗總結

来源:https://www.cnblogs.com/java-xiatian/archive/2020/06/18/13159616.html
-Advertisement-
Play Games

Service Mesh 是目前社區最為炙手可熱的技術方向,去年雙11在螞蟻金服得到全面的應用,並平穩順滑的支撐了大促服務。作為目前規模最大的 Service Mesh 集群,本文從監控的領域對 Service Mesh 落地進行經驗總結,主要從以下幾方面進行介紹: 雲原生監控,介紹螞蟻金服 Me... ...


引言

Service Mesh 是目前社區最為炙手可熱的技術方向,去年雙11在螞蟻金服得到全面的應用,並平穩順滑的支撐了大促服務。作為目前規模最大的 Service Mesh 集群,本文從監控的領域對 Service Mesh 落地進行經驗總結,主要從以下幾方面進行介紹:

  1. 雲原生監控,介紹螞蟻金服 Metrics 監控的落地;
  2. 用戶視角分析,介紹從應用 owner 的角度對這一基礎服務設施的體驗以及 SRE 從全站服務的穩定性對監控提出的要求;
  3. 未來的思考,介紹後續發展方向;

雲原生監控

雲原生應用的設計理念已經被越來越多的開發者接受與認可,今年螞蟻金服應用服務全面雲原生化,對我們監控服務提出更高的要求。目前 Metrics 指標監控服務也逐漸形成體系,如下圖所示基於社區原生 Prometheus 採集方案在螞蟻金服監控場景下落地。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

怎麼採集

螞蟻金服監控採集 AGENT 是部署在物理機上,支持多個採集插件,如下圖,包括執行命令、日誌、HTTP 請求、動態 SQL 採集、系統指標採集、JVM 採集以及進程監控等,同時支持多個解析插件自定義解析、單行文本解析、Lua 腳本解析、JSON 解析以及 Prometheus 解析等。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

在Service Mesh 監控落地中,業務方參考業界標準輸出 Metrics 指標數據,監控採集該物理機不同 Pod、App 和 Sidecar 的各項指標,包含 Metrics 指標和系統服務指標(CPU、MEM、DISK、JVM、IO 等),然後計算清洗集群節點通過拉取最近周期數據進行數據彙總、groupby 等,數據採集周期又分為:5秒級數據和分鐘級數據。 對於 Service Mesh 來說,主要關註的指標有系統指標和 Metrics 指標:

  • 系統指標(包括 Pod、App 和 MOSN 等 Sidecar 多個維度的系統指標): 系統指標, 包含 CPU、LOAD、MEM、BYTES、TCP、UCP 等信息; 磁碟,包含分區可用空間、使用率等信息; IO,包含 IOPS 等信息;
  • Metrics 指標: PROCESSOR,包含 MOSN 進程打開的 fd 數量、申請的虛擬記憶體大小等進程資源信息; GO,包含 MOSN 進程 goroutine 數量(G)、thread 數量(M)以及 memstats 等 go runtime 信息; Downstream,包含全局下游累計建鏈數、總讀取位元組數、累計請求數、請求耗時等; Upstream,包含上游請求失敗次數、集群累計建鏈數、累計斷鏈數、異常斷鏈次數、上游請求平均耗時等; MQ Mesh,包含發送消息總數、耗時、失敗數等以及消費消息總數、耗時、失敗數等; Gateway Mesh,包含 qps、rt、限流以及多維度的成功數和失敗數等;

數據計算

對於 Agent 採集的數據需要從不同維度向上匯聚,滿足不同用戶對不同視角(LDC、IDC、APP、架構域、站點等視角)的數據需求,以適配螞蟻金服運維架構體系。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

此時對於這麼大規模的數據體系,我們團隊建設螞蟻金服統一的監控數據計算平臺。

  • 使用統一的監控數據標準、插件化的數據採集接入、通用的數據服務 API 服務來幫助不同的監控產品的快速迭代;
  • 建立一套健全的數據質量體系、高可用計算集群來保障監控數據質量;
  • 通過類 SQL 任務定義、自定義計算任務、插件化來提供豐富、開放的數據分析能力,來滿足技術風險業務領域下各種複雜數據分析的需求;
螞蟻金服在 Service Mesh 監控落地經驗總結

 

其中計算任務調度(spark)執行的關鍵組件包括 GS(Global-Scheduler 全局圖調度)和 CS (Compute-Space 計算空間)。

GS 是平臺的任務調度中心,如下圖所示,它收集了所有業務的數據源配置,根據數據源之間的計算關係,構建出全局計算任務拓撲模型(GlobalGraph)。再根據不同的任務執行策略,將全局任務拓撲圖切割成小範圍的任務拓撲(Graph)。主要特性有:

  • GS 根據任務優先順序、資源質量、負載情況等策略,將 Graph 分發到不同的計算空間進行計算(Cspace);
  • 同一個 Graph 內部的數據依賴是計算過程中直接依賴的;
  • 不同的 Graph 之間的數據依賴會通過存儲進行數據解耦;
  • GS 會管理所有 Graph 及計算節點的任務狀態,根據 Graph 的依賴關係和依賴 Graph 的執行狀態,控制 Graph 的執行時間;
螞蟻金服在 Service Mesh 監控落地經驗總結

 

CS 是計算平臺抽象的計算任務執行空間,如下圖所示,主要負責 Graph 的解析和具體計算任務的提交執行,適用於不同的計算引擎,如 Spark/Flink。以 Spark 為例,CS 接收到 GS 發出的 GraphTask,根據 GraphTask 中的 Node(Transform) 解析成 Spark 的 Transfomation 運算元和 Action 運算元,組成計算 DAG 並提交到 Spark 集群執行。

在任務執行過程中,CS 會向 GS 同步各任務的執行狀態,用於任務跟蹤監控。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

多個 CSpace 組成一個 CSpaceGroup,CSpace 之間可以根據負載均衡、資源等級、藍綠發佈等具體場景劃分不同的計算分組,多個 CSpace 之間的任務切流可以滿足負載均衡、資源隔離、藍綠發佈、灰度等高可用的要求。

規模化問題

對於螞蟻金服這麼大規模的 Service Mesh 集群數據,產品請求無法都通過 PromQL 方式實時查詢結果,以及報警及時通知。此時我們對於監控數據進行分類,其中應用、機房、站點等維度數據進行預計算聚合,例如不同機房的 QPS、RPC 轉發成功量、Error 錯誤等等,前端通過自定義配置出自己關註的大盤視圖。

其中今年大促 MOSN 容器達到幾十萬,在頻繁的發佈部署,上線下線過程中,對監控查看的實時性提出更高的要求。其中 Meta 元數據模塊對接 K8s 集群,部署監控 operator 監控容器狀態變化,達到秒級將最新採集配置通過 Agent registry 更新到 Agent 模塊。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

大促保障

我們一方面對監控高可用進行保障,做到採集計算水平擴縮容,另一方面對容量進行評估,通過對不同任務進行分級處理,在大促的時候對高優先順序任務進行重點保障,對低優先順序任務和業務方進行溝通做降級處理。這樣在監控計算資源緊張的情況下,保障核心數據穩定。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

產品視角

Service Mesh 是螞蟻金服內部應用服務所使用的基礎服務設施,對不同的用戶看的視角不一樣。在監控產品上,用戶對產品的使用主要集中在“配、看、用”數據這三個層面。我們早期也做過類似的用戶分析。在螞蟻金服按使用方式將用戶分為全局關註者,產品 owner、SRE、領域專家和普通用戶等,這裡監控產品對於 Service Mesh 也提供不同的視角滿足不同的用戶需求,舉例來說:

  • 產品 Owner 視角:特指 MOSN 產品的開發們,他們重點負責 MOSN 的監控指標數據覆蓋、數據準確性以及重點調優目標;
  • 普通用戶視角:特指應用 Owner,應用 Owner 主要看 MOSN 服務對應用 RPC 調用的影響以及該應用使用 MOSN 服務帶來的效率提升;
  • SRE 視角:他們關註全局視角,需要知道全部 MOSN 服務的穩定性,更註重預警、分析;
  • 領域專家視角:特指對深度監控數據的使用者,比如深度的 JVM、CPU,Go 等指標,以及更深入的 perf、jfr 分析;
  • 全局視角:特指架構師層次或全站維度關註者,關註全站應用服務領域;

應用 Owner

應用 Owner 對於這一新服務,期待又緊張,既期待這個 MOSN 服務可以給自己帶來什麼新的特性和服務,又擔憂新服務給我又帶來一層依賴和穩定性問題。此時對於產品上,在滿足數據可觀測性的同時,重點突出 MOSN 核心指標觀測,以及 MOSN Error 的數據歸檔,同時告警能力及時適配,讓開發 Owner 第一時間知道問題出在哪。

由於 MOSN 的部署模式是和應用容器是在同一個 Pod 裡面,那麼應用 Owner 這時會擔心資源搶占問題,當然最終還是靠數據來驗證,此時水位數據平鋪對比必不可少。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

MOSN 產品專家

MOSN 產品技術專家對自己新的服務充滿信心,但是他們需要檢驗自己產品總體的性能指標以及性能調優,以達到最優化。所以一開始監控產品配合 MOSN 服務從線下到線上完成數據的覆蓋和準確性校驗,後來到核心指標的全局觀測與對比。

在 MOSN 服務上線的過程中,打交道最多就是 MOSN 技術專家,類似 MOSN 大盤已經有應用維度匯聚的大盤展示,但是對於錯誤排查來說,全局的單機維度系統指標(cpu、mem、load) top n 更有意義,可以協助快速發現 CPU、MEM 異常的實例。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

SRE 專家

SRE 專家們總是對新產品上線產生莫名的擔憂,特別是今年螞蟻金服 MOSN 服務這麼大規模,所以此時需要充分數據做驗證來達到上線的標準。此這時候又需要監控提供數據,特別是全站維度的數據,為此我們專門提供核心應用服務盯盤,在壓測過程中觀測核心應用 MOSN 的 rt、報錯量以及 top 實例的水位等等。

螞蟻金服在 Service Mesh 監控落地經驗總結

 

全局架構師

全局觀測者當然關註核心指標,在瞭解 SRE 穩定性方案的同時,關註全部 MOSN 服務帶來的性能提升,例如業務轉發成功率,MOSN rt 等指標。

除了上述的這些基本產品能力以外,我們還嘗試著從數據、功能、體驗這些角度繼續提升產品。

未來的思考

螞蟻金服監控產品將致力於成為雲原生時代的全棧監控,從應用到基礎設施,從雲、邊到端,將技術風險領域的監控數據全部透明化,均具備一站式可觀測能力。對內將支撐技術風險各個領域的業務場景,包括應急、容量、限流、安全、變更、大促等,對外將支撐科技輸出、雲產品、國際賦能和商業化。

後續重點方向有 Monitoring as a Service,旨在讓業務研發和 SRE 同學通過 Code 方式完成從監控數據採集、數據聚合、預警規則配置、大盤 CMS 報表展現等功能,提升監控業務場景的便利性、靈活性和創造性,為監控領域豐富多彩的玩法帶來更多可能。

最後,也歡迎志同道合的伙伴加入我們,一起參與金融級監控系統架構設計和創新。

小結:

最後小編整理了一份Java相關的資料,需要的小伙伴可以加我微信即可免費領取!

放一些大概截圖,感興趣的小伙伴可以收著。

螞蟻金服在 Service Mesh 監控落地經驗總結

java面試題及大廠真題

螞蟻金服在 Service Mesh 監控落地經驗總結

大量電子書

知識點相關面試題

螞蟻金服在 Service Mesh 監控落地經驗總結

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 發佈Python包 上一篇介紹瞭如何使用別人的輪子,現在我們討論下如何自己造輪子給別人用。 作為一個流行的開源開發項目,Python擁有一個活躍的貢獻者和用戶支持社區,這些社區也可以讓他們的軟體可供其他Python開發人員在開源許可條款下使用。這允許Python用戶有效地共用和協作,從其他人已經創建 ...
  • 老孟導讀:Flutter中佈局組件有水平 / 垂直佈局組件( Row 和 Column )、疊加佈局組件( Stack 和 IndexedStack )、流式佈局組件( Wrap )和 自定義佈局組件(Flow)。 水平、垂直佈局組件 Row 是將子組件以水平方式佈局的組件, Column 是將子組 ...
  • python -m 和 python 的區別 -m 的含義表示將庫當作腳本來執行。 python file.py 正常的執行Python腳本似乎都是這個樣子,甚至於有些小伙伴根本不曉得 -m 是個什麼玩意。 在help 中對 -m 的解釋為: 將文件看作腳本來執行。 什麼叫當成腳本來執行呢?我們來看 ...
  • 錯誤: 前臺頁面id為空,或其他數據映射問題(方案2) 原因: java的bean類屬性和資料庫欄位命名不一致,查詢的時候就不能把數據封裝進bean類里, 在資料庫欄位命名規範中,通常使用下劃線“_”來連接兩個單詞,比如:user_type。 解決方案1: 在mapper全局配置文件裡面配置駝峰命名 ...
  • 本文源碼:GitHub·點這裡 || GitEE·點這裡 一、資源和加鎖 1、場景描述 多線程併發訪問同一個資源問題,假如線程A獲取變數之後修改變數值,線程C在此時也獲取變數值並且修改,兩個線程同時併發處理一個變數,就會導致併發問題。 這種並行處理資料庫的情況在實際的業務開發中很常見,兩個線程先後修 ...
  • Docker 搭建多容器組合服務 (nginx + php) 首先要確保本地 docker 環境已經安裝成功 Docker 安裝 Nginx docker pull nginx (拉取最新 nginx 鏡像) docker images (查看本地 nginx 鏡像是否安裝成功) Docker 安裝 ...
  • 一、IDEA IDEA 全稱IntelliJ IDEA,是java語言開發的集成環境,IntelliJ在業界被公認為最好的java開發工具之一,尤其在智能代碼助手、代碼自動提示、重構、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創新的GUI設計等方面的功能可以說是超常的。IDEA是Je ...
  • 筆者最近在學習Java多線程的一些基礎知識,淺談一些自己關於Java鎖的一些理解 Java鎖是用來乾什麼的? 我們做一個程式,終歸的目的,就是想讓程式按我們想要的方式來,但是在多線程場景下,很多自己很難預計的到的事情會發生,導致數據的不安全,這時候我們會想到一些方法來解決數據不一致的問題: 避免數據 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...