使用 Apache Kafka 和 SigNoz 實現(xiàn)應用可觀測性
SigNoz 幫助開發(fā)者使用最小的精力快速實現(xiàn)他們的可觀測性目標。
SigNoz 是一個開源的應用可觀察性平臺。SigNoz 是用 React 和 Go 編寫的,它從頭到尾都是為了讓開發(fā)者能夠以最小的精力盡快實現(xiàn)他們的可觀察性目標。
本文將詳細介紹該軟件,包括架構、基于 Kubernetes 的部署以及一些常見的 SigNoz 用途。
SigNoz 架構
SigNoz 將幾個組件捆綁在一起,創(chuàng)建了一個可擴展的、耦合松散的系統(tǒng),很容易上手使用。其中一些最重要的組件有:
- OpenTelemetry Collector
- Apache Kafka
- Apache Druid
OpenTelemetry Collector 是跟蹤或度量數(shù)據(jù)收集引擎。這使得 SigNoz 能夠以行業(yè)標準格式獲取數(shù)據(jù),包括 Jaeger、Zipkin 和 OpenConsensus。之后,收集的數(shù)據(jù)被轉發(fā)到 Apache Kafka。
SigNoz 使用 Kafka 和流處理器來實時獲取大量的可觀測數(shù)據(jù)。然后,這些數(shù)據(jù)被傳遞到 Apache Druid,它擅長于存儲這些數(shù)據(jù),用于短期和長期的 SQL 分析。
當數(shù)據(jù)被扁平化并存儲在 Druid 中,SigNoz 的查詢服務可以查詢并將數(shù)據(jù)傳遞給 SigNoz React 前端。然后,前端為用戶創(chuàng)建漂亮的圖表,使可觀察性數(shù)據(jù)可視化。
SigNoz architecture
安裝 SigNoz
SigNoz 的組件包括 Apache Kafka 和 Druid。這些組件是松散耦合的,并協(xié)同工作,以確保終端用戶的無縫體驗。鑒于這些組件,最好將 SigNoz 作為 Kubernetes 或 Docker Compose(用于本地測試)上的微服務組合來運行。
這個例子使用基于 Kubernetes Helm Chart 的部署在 Kubernetes 上安裝 SigNoz。作為先決條件,你需要一個 Kubernetes 集群。如果你沒有可用的 Kubernetes 集群,你可以使用 MiniKube 或 Kind 等工具,在你的本地機器上創(chuàng)建一個測試集群。注意,這臺機器至少要有 4GB 的可用空間才能工作。
當你有了可用的集群,并配置了 kubectl 來與集群通信,運行:
$ git clone https://github.com/SigNoz/signoz.git && cd signoz
$ helm dependency update deploy/kubernetes/platform
$ kubectl create ns platform
$ helm -n platform install signoz deploy/kubernetes/platform
$ kubectl -n platform apply -Rf deploy/kubernetes/jobs
$ kubectl -n platform apply -f deploy/kubernetes/otel-collector
這將在集群上安裝 SigNoz 和相關容器。要訪問用戶界面 (UI),運行 kubectl port-forward
命令。例如:
$ kubectl -n platform port-forward svc/signoz-frontend 3000:3000
現(xiàn)在你應該能夠使用本地瀏覽器訪問你的 SigNoz 儀表板,地址為 http://localhost:3000
。
現(xiàn)在你的可觀察性平臺已經(jīng)建立起來了,你需要一個能產(chǎn)生可觀察性數(shù)據(jù)的應用來進行可視化和追蹤。對于這個例子,你可以使用 HotROD,一個由 Jaegar 團隊開發(fā)的示例應用。
要安裝它,請運行:
$ kubectl create ns sample-application
$ kubectl -n sample-application apply -Rf sample-apps/hotrod/
探索功能
現(xiàn)在你應該有一個已經(jīng)安裝合適儀表的應用,并可在演示設置中運行。看看 SigNoz 儀表盤上的指標和跟蹤數(shù)據(jù)。當你登錄到儀表盤的主頁時,你會看到一個所有已配置的應用列表,這些應用正在向 SigNoz 發(fā)送儀表數(shù)據(jù)。
SigNoz dashboard
指標
當你點擊一個特定的應用時,你會登錄到該應用的主頁上。指標頁面顯示最近 15 分鐘的信息(這個數(shù)字是可配置的),如應用的延遲、平均吞吐量、錯誤率和應用目前訪問最高的接口。這讓你對應用的狀態(tài)有一個大概了解。任何錯誤、延遲或負載的峰值都可以立即看到。
Metrics in SigNoz
追蹤
追蹤頁面按時間順序列出了每個請求的高層細節(jié)。當你發(fā)現(xiàn)一個感興趣的請求(例如,比預期時間長的東西),你可以點擊追蹤,查看該請求中發(fā)生的每個行為的單獨時間跨度。下探模式提供了對每個請求的徹底檢查。
Tracing in SigNoz
Tracing in SigNoz
用量資源管理器
大多數(shù)指標和跟蹤數(shù)據(jù)都非常有用,但只在一定時期內(nèi)有用。隨著時間的推移,數(shù)據(jù)在大多數(shù)情況下不再有用。這意味著為數(shù)據(jù)計劃一個適當?shù)谋A魰r間是很重要的。否則,你將為存儲支付更多的費用。用量資源管理器提供了每小時、每一天和每一周獲取數(shù)據(jù)的概況。
SigNoz Usage Explorer
添加儀表
到目前為止,你一直在看 HotROD 應用的指標和追蹤。理想情況下,你會希望對你的應用進行檢測,以便它向 SigNoz 發(fā)送可觀察數(shù)據(jù)。參考 SigNoz 網(wǎng)站上的儀表概覽。
SigNoz 支持一個與供應商無關的儀表庫,OpenTelemetry,作為配置儀表的主要方式。OpenTelemetry 提供了各種語言的儀表庫,支持自動和手動儀表。
了解更多
SigNoz 幫助開發(fā)者快速開始度量和跟蹤應用。要了解更多,你可以查閱 文檔,加入社區(qū),并訪問 GitHub 上的源代碼。