大家好,經(jīng)過幾個(gè)月的研發(fā),夜鶯v5正式版跟大家見面了,這個(gè)版本做了巨大的產(chǎn)品定位調(diào)整,不再是一個(gè)運(yùn)維平臺(tái),而是專注監(jiān)控告警這個(gè)細(xì)分領(lǐng)域,擁抱Prometheus生態(tài),爭取把監(jiān)控這個(gè)事情,做到極致!這是新版的截圖,給大家一個(gè)直觀的認(rèn)識先。

這個(gè)版本的功能設(shè)計(jì)全部是圍繞監(jiān)控告警來的,比如告警規(guī)則、屏蔽規(guī)則、訂閱規(guī)則的管理,活躍告警、歷史告警的查看,監(jiān)控?cái)?shù)據(jù)查看,提供不同的看圖視角,監(jiān)控對象的管理,告警自愈機(jī)制,人員權(quán)限等等
為啥開始擁抱Prometheus生態(tài)呢?
核心是PromQL的能力,作為一款完備的監(jiān)控產(chǎn)品,一定要具備QL的能力,否則靈活性將大大降低,之前Open-Falcon或者Nightingale的老版本,只能通過標(biāo)簽做匹配,靈活性不好,需要把一些計(jì)算邏輯前置到采集側(cè),新版本我們想解決這個(gè)問題,但是重復(fù)造輪子也不可取,所以就沿用了PromQL的能力。
這個(gè)版本非常的開放,不止可以和Prometheus深度集成,也可以和Telegraf、Grafana、Grafana-Agent、Datadog-Agent、VictoriaMetrics、M3DB等良好協(xié)同,沒有軟件綁定問題。
與Open-Falcon的區(qū)別
因?yàn)殚_發(fā)Open-Falcon和Nightingale的是一撥人,所以很多社區(qū)伙伴會(huì)比較好奇,為何要新做一個(gè)監(jiān)控開源軟件。核心點(diǎn)是Open-Falcon和Nightingale的差異點(diǎn)實(shí)在是太大了,Nightingale并非是Open-Falcon設(shè)計(jì)邏輯的一個(gè)延續(xù),就看做兩個(gè)不同的軟件就好。
Open-Falcon是14年開發(fā)的,當(dāng)時(shí)是想解決Zabbix的一些容量問題,可以看做是物理機(jī)時(shí)代的產(chǎn)物,整個(gè)設(shè)計(jì)偏向運(yùn)維視角,雖然數(shù)據(jù)結(jié)構(gòu)上已經(jīng)開始設(shè)計(jì)了標(biāo)簽,但是查詢語法還是比較簡單,無法應(yīng)對比較復(fù)雜的場景。
Nightingale直接支持PromQL,支持Prometheus、M3DB、VictoriaMetrics多種時(shí)序庫,支持Telegraf做監(jiān)控?cái)?shù)據(jù)采集,支持Grafana看圖,整個(gè)設(shè)計(jì)更加云原生,雖然也保留了機(jī)器歸組的邏輯以應(yīng)對物理機(jī)時(shí)代的需求,但是設(shè)計(jì)上,更傾向于使用標(biāo)簽來分組,而不是HostGroup或者樹形結(jié)構(gòu)。
與Prometheus的區(qū)別
Nightingale可以簡單看做是Prometheus的一個(gè)企業(yè)級版本,把Prometheus當(dāng)做Nightingale的一個(gè)內(nèi)部組件-時(shí)序庫,當(dāng)然,也不是必須的,時(shí)序庫除了Prometheus,還可以使用VictoriaMetrics、M3DB等。各種Exporter也可以繼續(xù)使用,不過我們更推薦使用All-in-one的Telegraf,運(yùn)維代價(jià)會(huì)更小一些。
Nightingale可以接入多個(gè)Prometheus/M3DB/VictoriaMetrics,可以允許用戶在頁面上配置告警規(guī)則、屏蔽規(guī)則、訂閱規(guī)則,在頁面上查看告警事件,配置告警自愈機(jī)制,管理監(jiān)控對象,配置監(jiān)控大盤等,就把Nightingale看做是Prometheus的一個(gè)WEBUI也是可以的,不過實(shí)際上,它遠(yuǎn)遠(yuǎn)不止是一個(gè)WEBUI,用一下就會(huì)深有感觸。
夜鶯v5版本架構(gòu)
夜鶯v5的設(shè)計(jì)非常簡單,核心是server和webapi兩個(gè)模塊,webapi無狀態(tài),放到中心端,承接前端請求,將用戶配置寫入數(shù)據(jù)庫;server是告警引擎和數(shù)據(jù)轉(zhuǎn)發(fā)模塊,一般隨著時(shí)序庫走,一個(gè)時(shí)序庫就對應(yīng)一套server,每套server可以只用一個(gè)server實(shí)例,也可以多個(gè)實(shí)例組成集群,server可以接收Telegraf上報(bào)的數(shù)據(jù),寫入后端時(shí)序庫,周期性從數(shù)據(jù)庫同步告警規(guī)則,然后查詢時(shí)序庫做告警判斷。每套server依賴一個(gè)redis。架構(gòu)圖如下:

新版本的文檔放到了gitee.io,地址是 https://n9e.gitee.io/ 感謝開源中國提供的平臺(tái),訪問速度挺快的 :)