開源可觀測性平臺SigNoz

騎牛上青山發表於2023-03-26

前言

我曾經在我的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-providerspring-receiver。這兩個應用僅僅包含了普通的請求和OpenFeign請求。


Trace看板中,我們自定義篩選條件,自定義圖示的選項來檢視不同維度的Trace資料,在下方的列表頁中選擇一行點進去會跳轉到Trace的詳情頁,在詳情頁中可以看到鏈路的具體呼叫資訊,Span等維度的資料。

Service中找到一個具體的服務進入其詳情頁就能看到一些Metrics的資料:

在metrics的圖表中會有99線,95線等維度。

Logs中可以檢視服務的日誌資訊,目前Logging維度在OpenTelemetry中還未完全的GA,配套的collector等都還在快速迭代中,因此SigNoz的這部分也還是在Beta中。

ServiceMap中可以看到服務的呼叫圖譜

SigNoz也提供了告警的能力,在Alert皮膚中可以配置不同型別的告警

在這裡配置一個Trace的告警需要有如下的三個步驟:

  1. 使用資料庫查詢語句定義度量指標
  2. 定義告警條件
  3. 其他告警配置

配置完畢後儲存就能夠看到配置的告警了。

總結

總的來說相比自己搭建OpenTelemetry的整個採集體系,然後分別用jaeger來檢視trace,用prometheus來查詢metrics,SigNoz整合了TraceMetricsLogging等的一些列的聚合,展示與管理。他是一個可觀測體系平臺的集合,有著豐富的能力。在本片中介紹到的僅僅是他的能力的一部分,有興趣的朋友可以自己去本地裝一下體驗一下。

相關文章