開源的Datadog?可觀測性平臺SigNoz是否名副其實?
SigNoz號稱自己是開源領(lǐng)域的Datadog,基于OpenTelemetry做了一套可觀測性方案。夜鶯從V6版本開始,也希望做全棧可觀測性方案,巧了,大家目標一致,今天我們一起來對SigNoz做個初步了解,看看其產(chǎn)品設(shè)計如何,也幫大家未來選型做參考。
1. SigNoz介紹
SigNoz is an open-source application performance monitoring tool that helps you monitor your applications and troubleshoot problems. SigNoz uses distributed tracing to gain visibility into your software stack.
SigNoz是一個開源的應用性能監(jiān)控工具,幫助您監(jiān)控應用程序并解決問題。SigNoz使用分布式跟蹤來獲得對軟件堆棧的可見性。
點評:上面這個英文介紹是從其官網(wǎng)摘錄的,從這個介紹中,我第一感受是SigNoz更側(cè)重分布式鏈路追蹤。
With SigNoz, you can do the following:
Monitor application metrics such as latency, requests per second, error rates
Monitor infrastructure metrics such as CPU utilization or memory usage
Track user requests across services
Set alerts on metrics
Find the root cause of the problem by going to the exact traces which are causing the problem
See detailed flame graphs of individual request traces
使用SigNoz,您可以做下面這些事情:
監(jiān)控應用程序指標,如延遲、每秒請求、錯誤率
監(jiān)控基礎(chǔ)設(shè)施指標,比如CPU利用率或內(nèi)存使用率
在多個服務之間追蹤用戶請求
在指標上設(shè)置警報
通過轉(zhuǎn)到出問題的trace來找到問題的根本原因
查看單個請求trace的詳細火焰圖
點評:上面的介紹是SigNoz聲稱自己可以做到的事情,但是程度如何還未可知,不同的可觀測性產(chǎn)品通常都說自己可以觀測到軟件的健康狀況、可以定位根因,但真正用起來就會發(fā)現(xiàn),要么數(shù)據(jù)不全,要么做得太淺,基本都只是把可觀測性三大支柱的數(shù)據(jù)簡單筒倉式羅列,真正好用的沒幾個。所以這樣的宣傳語看看就好,具體好不好用,還是要真正的去用一下才知道。
2. SigNoz架構(gòu)

這個架構(gòu)很清晰,SigNoz自身不提供采集器,完全復用 OpenTelemetry 的能力,不過 Otel Collector 這塊它在架構(gòu)圖里冠以 SigNoz,不知道是否對社區(qū)的 Collector 做了二次開發(fā),存儲使用 ClickHouse,SigNoz 自己用 Go 開發(fā)了 Query Service 組件和 Alert Manager 組件,前端使用 React 開發(fā)。
從數(shù)據(jù)流上來講,應用程序埋點推送監(jiān)控數(shù)據(jù)給 Otel Collector,Otel Collector 對數(shù)據(jù)做初步處理,之后直接寫入 ClickHouse,寫入鏈路就算完事了。前端和 Alert Manager 對 ClickHouse 的查詢會統(tǒng)一發(fā)給 Query Service,Query Service 會把 HTTP 請求轉(zhuǎn)換為 ClickHouse 的 TCP 查詢語句。
點評:鏈路追蹤的 Span 數(shù)據(jù)存入 ClickHouse 這種列存存儲,是越來越多公司的做法,長期數(shù)據(jù)扔到 S3 節(jié)省成本,也沒毛病。對于日志數(shù)據(jù),也有越來越多公司嘗試存入 ClickHouse,SigNoz 顯然也是把日志存入了 ClickHouse。不過,指標也存入 ClickHouse 的做法未必妥當,指標的標簽是不固定的,但是 ClickHouse 是固定 Schema 的,難道直接扔到 Map 字段了?開源社區(qū)里指標的存儲,筆者還是覺得 VictoriaMetrics、Thanos 是更好的選擇。
3. SigNoz安裝
最簡單的安裝方式是 Docker compose:
git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/ docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d
筆者是 Macbook M1,可以正常運行:

我這只是初步測試嘗試,所以直接使用 Docker compose 在筆記本運行了,生產(chǎn)環(huán)境運行的話,重點要關(guān)注 ClickHouse 的部署。
之后瀏覽器訪問:http://localhost:3301/就可以看到 SigNoz 的登錄頁面了,隨便輸入用戶名密碼就可以登錄了。第一個用戶默認進來就是Admin。
4. SigNoz功能初體驗

左側(cè)菜單可以看出 SigNoz 的核心功能,我們挨個看一下。首先是 Services,即服務列表,即接入鏈路追蹤系統(tǒng)的那些微服務,會展示每個服務的 P99 延遲、錯誤率、每秒請求數(shù),顯然是符合 RED 方法論的。上圖截圖就是這個頁面。
Traces 菜單,是展示近期所有 Span,可以通過 Service Name、Operation、Status、Duration 等做篩選,如圖:

點擊某個 Span,可以跳轉(zhuǎn)到相關(guān)的那個 Trace 的瀑布流圖:

點評:以上功能其實都是 Trace 功能,相關(guān)競品有 Skywalking、Zipkin、Jaeger 等??雌饋?SigNoz 主打的也是 Trace,后面還有一個拓撲圖的菜單,也是 Trace 相關(guān)的。只是簡單看這些頁面,感覺也基本夠用。能夠檢索鏈路信息,也能根據(jù) Trace 數(shù)據(jù)生成基本的 Metrics 數(shù)據(jù),如果再能夠從日志里跳轉(zhuǎn)到 Trace,那就更好了(沒有看到這個打通)。
Logs 菜單,是展示日志。當前效果圖如下:

點擊某個日志行,可以看到日志詳情,日志體沒有做字段拆解,可能還是需要引入 logstash 之類的組件才可以:

點評:初步體驗下來,沒有 ELK 的體驗好,比如 Kibana 頁面可以看到不同維度信息的 Top 視圖,這才是可觀測性產(chǎn)品應該提供的能力。只是提供基礎(chǔ)數(shù)據(jù)還遠遠不夠,把數(shù)據(jù)的特征展示出來,進而幫助用戶建立觀點洞察,最終形成 actionable insights,才是可觀測性產(chǎn)品的核心價值所在。我看 SigNoz 也提供了 Cloud 產(chǎn)品,不知道是否做的更多一些,一些更牛的功能放到 Cloud 也是不錯的商業(yè)決策。畢竟,全職研發(fā)人員有收入了才能反哺開源社區(qū)。
其他功能,比如 Dashboards、Alerts,在筆者看來還非常初級,Dashboards 還是?Grafana?(?https://grafana.com/ )做得更好一些,Alerts 這塊則是?Nightingale( https://github.com/ccfos/nightingale?)?做得更好一些。
權(quán)限這塊,SigNoz 分為 Admin、Editor、Viewer 三種角色,分別對應不同的權(quán)限,比如 Viewer 就只能看,不能操作,Editor 則可以做日常操作,Admin 則是最高權(quán)限,可以做所有操作。這塊沒有看到數(shù)據(jù)權(quán)限的控制,比如告警規(guī)則,沒有更多分組劃分,比如云平臺的告警規(guī)則我想單獨分組,單獨一撥人管理,電商業(yè)務的告警規(guī)則單獨分組,單獨一撥人管理,目前看 SigNoz 是做不到的。
5. 總結(jié)
本文對 SigNoz 做了初探,不深入,導致有些評價可能有所偏頗,僅供參考。整體來看,如果使用 SigNoz 做 Trace,是可以嘗試的,如果做日志方案,還是 ELK 方案更成熟,不過 ElasticSearch 日志存儲成本比較高,如果只是存近期數(shù)據(jù)用于排障,ElasticSearch 是很好的選擇,如果想存很久的數(shù)據(jù),SigNoz 用 ClickHouse 存儲,成本會低很多。Metrics 方面,不建議使用 SigNoz,Metrics 的成熟方案太多了,比如 Prometheus、InfluxDB、VictoriaMetrics 等,SigNoz 這塊還是太初級了。不管大家用什么監(jiān)控系統(tǒng),最終的告警降噪、值班OnCall還是希望在一個平臺解決,這塊筆者還是推薦?FlashDuty( https://flashcat.cloud/product/flashduty/?)。
今天就到這里,感謝大家閱讀,歡迎大家留言評論,如果有公司把 SigNoz 用起來了,也歡迎分享使用感受,一起學習,交流進步。