使用 Apache Kafka 和 SigNoz 實現應用可觀測性
SigNoz 是一個開源的應用可觀察性平台。SigNoz 是用 React 和 Go 編寫的,它從頭到尾都是為了讓開發者能夠以最小的精力儘快實現他們的可觀察性目標。
本文將詳細介紹該軟體,包括架構、基於 Kubernetes 的部署以及一些常見的 SigNoz 用途。
SigNoz 架構
SigNoz 將幾個組件捆綁在一起,創建了一個可擴展的、耦合鬆散的系統,很容易上手使用。其中一些最重要的組件有:
- OpenTelemetry Collector
- Apache Kafka
- Apache Druid
OpenTelemetry Collector 是跟蹤或度量數據收集引擎。這使得 SigNoz 能夠以行業標準格式獲取數據,包括 Jaeger、Zipkin 和 OpenConsensus。之後,收集的數據被轉發到 Apache Kafka。
SigNoz 使用 Kafka 和流處理器來實時獲取大量的可觀測數據。然後,這些數據被傳遞到 Apache Druid,它擅長於存儲這些數據,用於短期和長期的 SQL 分析。
當數據被扁平化並存儲在 Druid 中,SigNoz 的查詢服務可以查詢並將數據傳遞給 SigNoz React 前端。然後,前端為用戶創建漂亮的圖表,使可觀察性數據可視化。
![SigNoz architecture](/data/attachment/album/202105/01/231722jhxch2akvpcsusss.png "SigNoz architecture")
安裝 SigNoz
SigNoz 的組件包括 Apache Kafka 和 Druid。這些組件是鬆散耦合的,並協同工作,以確保終端用戶的無縫體驗。鑒於這些組件,最好將 SigNoz 作為 Kubernetes 或 Docker Compose(用於本地測試)上的微服務組合來運行。
這個例子使用基於 Kubernetes Helm Chart 的部署在 Kubernetes 上安裝 SigNoz。作為先決條件,你需要一個 Kubernetes 集群。如果你沒有可用的 Kubernetes 集群,你可以使用 MiniKube 或 Kind 等工具,在你的本地機器上創建一個測試集群。注意,這台機器至少要有 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
現在你應該能夠使用本地瀏覽器訪問你的 SigNoz 儀錶板,地址為 http://localhost:3000
。
現在你的可觀察性平台已經建立起來了,你需要一個能產生可觀察性數據的應用來進行可視化和追蹤。對於這個例子,你可以使用 HotROD,一個由 Jaegar 團隊開發的示例應用。
要安裝它,請運行:
$ kubectl create ns sample-application
$ kubectl -n sample-application apply -Rf sample-apps/hotrod/
探索功能
現在你應該有一個已經安裝合適儀錶的應用,並可在演示設置中運行。看看 SigNoz 儀錶盤上的指標和跟蹤數據。當你登錄到儀錶盤的主頁時,你會看到一個所有已配置的應用列表,這些應用正在向 SigNoz 發送儀錶數據。
![SigNoz dashboard](/data/attachment/album/202105/01/231722afr4g9r9z9boz45f.png "SigNoz dashboard")
指標
當你點擊一個特定的應用時,你會登錄到該應用的主頁上。指標頁面顯示最近 15 分鐘的信息(這個數字是可配置的),如應用的延遲、平均吞吐量、錯誤率和應用目前訪問最高的介面。這讓你對應用的狀態有一個大概了解。任何錯誤、延遲或負載的峰值都可以立即看到。
![Metrics in SigNoz](/data/attachment/album/202105/01/231723a4h7uhbhh4b6ahxx.png "Metrics in SigNoz")
追蹤
追蹤頁面按時間順序列出了每個請求的高層細節。當你發現一個感興趣的請求(例如,比預期時間長的東西),你可以點擊追蹤,查看該請求中發生的每個行為的單獨時間跨度。下探模式提供了對每個請求的徹底檢查。
![Tracing in SigNoz](/data/attachment/album/202105/01/231723meexmz14ioor8g13.png "Tracing in SigNoz")
![Tracing in SigNoz](/data/attachment/album/202105/01/231723ttzi3iqdi0wz3rei.png "Tracing in SigNoz")
用量資源管理器
大多數指標和跟蹤數據都非常有用,但只在一定時期內有用。隨著時間的推移,數據在大多數情況下不再有用。這意味著為數據計劃一個適當的保留時間是很重要的。否則,你將為存儲支付更多的費用。用量資源管理器提供了每小時、每一天和每一周獲取數據的概況。
![SigNoz Usage Explorer](/data/attachment/album/202105/01/231723f6cc5um366mjei68.png "SigNoz Usage Explorer")
添加儀錶
到目前為止,你一直在看 HotROD 應用的指標和追蹤。理想情況下,你會希望對你的應用進行檢測,以便它向 SigNoz 發送可觀察數據。參考 SigNoz 網站上的儀錶概覽。
SigNoz 支持一個與供應商無關的儀錶庫,OpenTelemetry,作為配置儀錶的主要方式。OpenTelemetry 提供了各種語言的儀錶庫,支持自動和手動儀錶。
了解更多
SigNoz 幫助開發者快速開始度量和跟蹤應用。要了解更多,你可以查閱 文檔,加入社區,並訪問 GitHub 上的源代碼。
via: https://opensource.com/article/21/4/observability-apache-kafka-signoz
作者:Nitish Tiwari 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive