監(jiān)控系統(tǒng)自監(jiān)控怎么做?
問(wèn)題
監(jiān)控系統(tǒng)用于監(jiān)控其他的系統(tǒng)、基礎(chǔ)設(shè)施,絕對(duì)是 P0 級(jí)的服務(wù),那監(jiān)控系統(tǒng)的自監(jiān)控應(yīng)該怎么做呢?如果自己監(jiān)控自己,有些組件掛掉了難免循環(huán)依賴,如果單獨(dú)搞一套新的監(jiān)控系統(tǒng)來(lái)監(jiān)控當(dāng)前服役的監(jiān)控系統(tǒng),又搞得有些過(guò)于復(fù)雜。本文我們來(lái)探討一下監(jiān)控系統(tǒng)的自監(jiān)控應(yīng)該怎么做。
解決方案:自身指標(biāo)
首先,監(jiān)控系統(tǒng)自身是會(huì)暴露監(jiān)控指標(biāo)的,比如 Prometheus、VictoriaMetrics、Nightingale,都通過(guò)?/metrics
?接口暴露了自身的監(jiān)控指標(biāo),這些指標(biāo)通過(guò)監(jiān)控系統(tǒng)自身的采集機(jī)制去采集就好,相關(guān)數(shù)據(jù)的歷史趨勢(shì)圖、告警規(guī)則,也在監(jiān)控系統(tǒng)自身配置好,只要自身模塊沒(méi)有掛掉,或者沒(méi)有全部掛掉,相關(guān)數(shù)據(jù)基本都可以正常使用。
比如 Nightingale 的自身監(jiān)控指標(biāo),可以通過(guò) categraf 的 input.prometheus 插件來(lái)采集,即?conf/input.prometheus/prometheus.toml
?的內(nèi)容如下:
localhost:17000
?換成你的 Nightingale 的地址即可。然后導(dǎo)入內(nèi)置儀表盤:https://github.com/ccfos/nightingale/tree/main/integrations/n9e/dashboards,即可看到 Nightingale 自身的監(jiān)控指標(biāo)了。
解決方案:存活監(jiān)控
如果監(jiān)控系統(tǒng)同時(shí)有多個(gè)模塊故障,此時(shí)自身指標(biāo)可能都采集不到了,告警引擎可能也有故障,此時(shí)就沒(méi)法通過(guò)自身指標(biāo)來(lái)監(jiān)控了,此時(shí)就需要一個(gè)外掛的小監(jiān)控系統(tǒng)來(lái)監(jiān)控這類嚴(yán)重情況了。而且,告警通道盡量也不要復(fù)用之前的通道,因?yàn)橥ǖ揽赡芤矔?huì)故障。
我的建議是采用?catpaw ( https://mp.weixin.qq.com/s/Y-KipuKZxVn8o-NR6-ZBZg ?)?+?FlashDuty?( https://mp.weixin.qq.com/s/oFwOv8yoiVA6Plq3OOVn5A )來(lái)搞這個(gè)需求。FlashDuty 是外網(wǎng)的 SaaS 服務(wù),只要公網(wǎng)出口是好的,就能提供監(jiān)控服務(wù),而且無(wú)需我們維護(hù),使用免費(fèi)套餐都?jí)蛴?,畢竟監(jiān)控系統(tǒng)也不會(huì)經(jīng)常掛。。。
catpaw 最新版本是 v0.7.0,已經(jīng)提供了 exec(執(zhí)行腳本的插件)、filechange(文件變化監(jiān)控的插件)、http(HTTP探測(cè)的插件)、journaltail(系統(tǒng)日志異常檢測(cè)插件)、mtime(遞歸判斷文件變化的插件)、net(TCP、UDP探測(cè)的插件)、ping(PING插件)、procnum(進(jìn)程數(shù)量監(jiān)控插件)、sfilter(自定義腳本插件,相比exec插件更簡(jiǎn)單,匹配腳本輸出)等多個(gè)監(jiān)控插件,我們可以使用 net 插件來(lái)探測(cè)監(jiān)控系統(tǒng)的各個(gè)組件的存活情況,比如下面是 net 插件的配置樣例:
如果目標(biāo) IP:Port 連不上了,就會(huì)報(bào)警,報(bào)警事件的具體推送策略在?[instances.alerting]
?配置段配置。
如果監(jiān)控系統(tǒng)的某個(gè)模塊,不監(jiān)聽(tīng)端口,沒(méi)法監(jiān)控端口存活,可以使用進(jìn)程數(shù)量監(jiān)控,即 procnum 插件,相關(guān)配置樣例如下:
net 和 procnum 這兩個(gè)插件配合,理論上一定可以發(fā)現(xiàn)進(jìn)程掛掉的情況,如此一來(lái),嚴(yán)重的情況 catpaw 就可以發(fā)現(xiàn)了,不嚴(yán)重的情況,監(jiān)控系統(tǒng)自身的指標(biāo)就可以發(fā)現(xiàn)了,齊活。
enjoy :-)