SOFA Scalable Open Financial Architecture
是螞蟻金服自主研發的金融級分布式中間件,包含了建構金融級雲原生架構所需的各個元件,是在金融場景裡錘煉出來的最佳實踐。
SOFALookout 是螞蟻金服在 SOFAStack 體系内研發開源的一款解決系統的度量和監控問題的輕量級中間件服務。本文給大家介紹下 SOFALookout 伺服器端主要提供的特性以及使用方式。
SOFALookout:
https://github.com/sofastack/sofa-lookout| 前言
容器,K8S,微服務,Mesh 以及 Serverless 這些新技術方向正在根本的變革我們運作軟體的方式。我們建構的系統更加分布式化,另外由于容器,系統的生命周期更加短,變得易逝。針對這些變化,SOFALookout 希望提供一套輕量級的監控分析解決方案。之前 SOFALookout 已經開源用戶端的能力。今天,SOFALookout 伺服器端 Metrics 部分的代碼終于正式開源啦!本文給大家介紹下 SOFALookout 伺服器端的主要特性以及使用方法。
| 什麼是 SOFALookout
SOFALookout 是螞蟻金服開源的一款解決系統的度量和監控問題的輕量級中間件服務。它提供的服務包括:Metrics 的埋點、收集、加工、存儲與查詢等。該開源項目包括了兩個獨立部分,分别是用戶端與伺服器端服務。
SOFALookout 目标是打造一套輕量級 Observability 實時工具平台,幫助使用者解決基礎設施、應用和服務等的監控和分析的問題。SOFALookout 是一個利用多元度的 Metrics 對目标系統進行度量和監控的項目。SOFALookout(目前已開源部分) 的多元度 Metrics 參考 Metrics2.0 [1] 标準。
SOFALookout [2]:
SOFALookout 安裝文檔 [3]:
https://www.sofastack.tech/sofa-lookout/docs/quickstart-metrics-server
SOFALookout 伺服器端的主要特性:
适配社群主要 Metrics 資料源協定寫入(比如: Prometheus[4],Metricbeat [5]等);
資料的存儲支援擴充,暫時開源版預設支援 Elasticsearch [6],并且透明和自動化了相關運維操作;
遵循 Prometheus 查詢 API 的标準以及支援 PromQL [7] ,并進行了适當改進;
自帶資料查詢的控制台,并支援 Grafana [8] 進行資料可視化;
使用簡單,支援單一程序運作整個伺服器端子產品。
随着 SOFALookout (Metrics)伺服器端代碼開源,Metrics 資料的處理已經形成閉環。後續我們将會進一步開源 Trace 和 Event 相關的服務能力,敬請期待。
| SOFALookout 項目結構
伺服器端代碼分别包括兩部分:Gateway 子產品和 Server 子產品。如下圖所示(展示了 SOFALookout 源碼項目的子產品概要結構)
├── boot
├── client
├── gateway
└── server
項目中的 boot 子產品作用是友善內建和運作服務端的子產品,既可以單獨運作 Gateway 和 Server 的服務,也可以借助 SOFAArk 完成(Gateway 和 Server)的 All in One 的合并為單一程序運作。
| SOFALookout 工作機制
下圖完整展示了 SOFALookout 如何從 Metrics 資料采集、上報、存儲到最終展示的完整流程路徑。
目前 SOFALookout 支援靈活的 Metrics 資料存儲選型。但開源版本我們暫時隻支援了 Elasticsearch 作為存儲的方案(後續可能繼續支援 Cassandra,InfluxDB...),其他存儲地适配我們希望更多同學能參與共建和支援。優先支援 Elasticsearch 是因為我們考慮到了 ELK 解決方案在業界已經廣泛使用,尤其是日志資料。
為了開箱即用,同時考慮到不熟悉 Elasticsearch 的同學的使用,SOFALookout已經内置了關于 mMetrics 資料存儲的自動化運維工具,可以免除大家自己建 Index,和日常維護 ES Index 的麻煩,更多細節後續單獨講解。
| 本次新增開源子產品
一、SOFALookout Gateway 子產品
SOFALookout Gateway 輕量的資料管道,它提供豐富的協定接入支援,包括自有SDK(SOFALookout Client)上報協定,還支援 Prometheus 的資料協定(推模式和拉模式),Metricbeat 協定(版本是6),OpenTSDB [9] 寫入協定。每種資料來源對應于一個 Importer 的概念。
SOFALookout Gateway 對于遠端(推模式)上報提供本地硬碟緩沖的支援。Gateway 總體設計是圍繞資料加工的Pipeline 形式,包括前置後置的資料過濾器友善進行開發者資料加工。 另外 Gateway 可以支援自定義 Exporter,預設提供了 Elasticsearch Exporter,Standard Exporter(用于 Gateway 間資料中繼),開發者也可以自定義其他存儲的 或 Kafka 等各式各樣 Exporter。
二、 SOFALookout Server 子產品
SOFALookout Server 相容和增強了 Prometheus 的資料及中繼資料查詢的 RESTful API。同樣對應 PromQL 我們也基本實作了相容和增強(不包括 Alert 相關文法),SOFALookout 的 promQL 相關解析邏輯是從 Prometheus 移植而來,做了一些優化和改進, 感謝 Prometheus 開源了如此易用和強大的 golang 版本的 QL 實作。
為了友善友善開發者做資料探索和試驗,我們也提供了自有 Web-UI 的支援,能夠滿足基本功能使用。
我們還是推薦大家使用 Grafana 進行資料展示。Grafana 內建 SOFALookout 很簡單,隻需要選擇 Prometheus 作為資料源協定即可(SOFALookout預設查詢端口也是: 9090)。下圖展示 Grafana 新增資料源配置:
| 近期計劃
下圖是近期的 Roadmap:
非常歡迎更多同學參與 SOFALookout 共建,尤其是支援更多的 Metrics 存儲庫。
| 文中涉及的相關連結
[1] Metrics2.0:
http://metrics20.org/[2] SOFALookout:
[3] SOFALookout 安裝文檔:
[4] Prometheus:
https://prometheus.io[5] Metricbeat:
https://www.elastic.co/guide/en/beats/metricbeat/6.4/index.html[6] Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch[7] PromQL:
https://prometheus.io/docs/prometheus/latest/querying/basics/[8] Grafana:
https://grafana.com/[9] OpenTSDB:
http://opentsdb.net/