前言
我曾經在我的OpenTelemetry
系列文章中介紹了使用OpenTelemetry
社群提供的一系列工具和來實現可觀測性的能力。但是從實際的使用角度來說,每一個環節都不是簡單的配置就能夠放心在生產環境使用的。包括資料的大量產生後的併發處理,collector
的多例項部署,資料的儲存問題等等。這些都沒法直接在OpenTelemetry
社群找到現成的解決方案。對於使用的人來說需要的是一個完整的解決方案,而不是一個一個的開源專案。今天就在這裡介紹一個開源的效能監控平臺SigNoz
。
SigNoz介紹
SigNoz
是一個開源的效能監控工具,可以用來監控應用程式。SigNoz
使用分散式跟蹤獲得可見性。
SigNoz
在很多地方是基於OpenTelemetry
體系的,他的collector
是基於OpenTelemetry Collector
的,他的客戶端取樣方式也是基於OpenTelemetry
。
從架構圖我們可以看到SigNoz
基於OpenTelemetry Collector
研發了自己的collector
,這個collector
可以接收app的資料上報,也能接收OpenTelemetry Collector
的二次分發。SigNoz
的儲存使用的ClickHouse
,後端API和告警服務使用的Golang
開發,前端則使用的是React
。
SigNoz使用
為了體驗SigNoz
提供的能力,我們就先來本地進行一下安裝。
本地安裝
本地安裝有多種方式,但是在此處建議使用docker
來進行安裝。安裝前需要確保3301 4317 4318
三個埠是可用的。
首先,執行:
git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/
將signoz
專案clone下來並進入deploy
目錄。
然後執行:
docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d
安裝完成後可以看到如下的一系列映象:
訪問http://localhost:3301/
就能夠看到頁面,之後發起註冊
完成登陸:
使用
SigNoz
體系已經搭建完成,現在我們就能夠開始進行使用了。首先我們需要接入OpenTelemetry
的SDK,這個在我的OpenTelemetry
系列文章中有提到過,這裡就不贅述了。大家可以選用自己的語言匹配的SDK。在此處我使用的是OpenTelemetry Java Instrumentation
即Java Agent模式。
我在此使用了兩個基於SpringBoot
的測試應用:spring-provider
和spring-receiver
。這兩個應用僅僅包含了普通的請求和OpenFeign
請求。
在Trace
看板中,我們自定義篩選條件,自定義圖示的選項來檢視不同維度的Trace
資料,在下方的列表頁中選擇一行點進去會跳轉到Trace
的詳情頁,在詳情頁中可以看到鏈路的具體呼叫資訊,Span等維度的資料。
從Service
中找到一個具體的服務進入其詳情頁就能看到一些Metrics
的資料:
在metrics的圖表中會有99線,95線等維度。
在Logs
中可以檢視服務的日誌資訊,目前Logging
維度在OpenTelemetry
中還未完全的GA,配套的collector
等都還在快速迭代中,因此SigNoz
的這部分也還是在Beta
中。
在ServiceMap
中可以看到服務的呼叫圖譜
SigNoz
也提供了告警的能力,在Alert
皮膚中可以配置不同型別的告警
在這裡配置一個Trace的告警需要有如下的三個步驟:
- 使用資料庫查詢語句定義度量指標
- 定義告警條件
- 其他告警配置
配置完畢後儲存就能夠看到配置的告警了。
總結
總的來說相比自己搭建OpenTelemetry
的整個採集體系,然後分別用jaeger
來檢視trace,用prometheus
來查詢metrics,SigNoz
整合了Trace
,Metrics
,Logging
等的一些列的聚合,展示與管理。他是一個可觀測體系平臺的集合,有著豐富的能力。在本片中介紹到的僅僅是他的能力的一部分,有興趣的朋友可以自己去本地裝一下體驗一下。