linux系統監控之實時警報

前面我們講過怎麼用prometheus和grafana,加node_exporter全面監控linux系統的各個指標和歷史曲線。作為運維人員,有這樣一個控制檯可以查看運行狀態是必要的,但是,不能一直在控制檯上面查看,所以,prometheus提供了alert的功能,這個功能在grafana中也支持,但是grafana中,只能支持曲線展示的graph才可以添加alert,而且通知的信息內容在定製方面也差很多,所以,官方也是建議如果使用alert,最好是使用alertmanager來提供警報。所以,這裡我們使用prometheus的alertmanager來作為警報系統。

linux系統監控之實時警報

architecture

從prometheus整個生態系統的架構圖中,可以很清楚看出來,prometheus server發出警報給alertmanager,然後alertmanager根據不同的路由來發送到不同的通知渠道。這裡我們在docker-compose.yml中,添加alertmanager的啟動,並使prometheus連接到alertmanager。

linux系統監控之實時警報

下面,我們需要修改prometheus的配置文件,設置prometheus的alert push的target地址。

linux系統監控之實時警報

alerting 配置

這裡我們把alert push到了alertmanager的9093端口,因為我們在docker-compose文件中,做了連接。如果有多個alertmanager的話,我們可以寫多個targets。

然後,要添加rule文件,來定義警告規則。

linux系統監控之實時警報

rules

我們來看一下rule文件是怎麼配置的。

linux系統監控之實時警報

rules.yml

我們可以定義多個alert,這裡我們就定義了一個簡單的警告,機器當前的內存使用超過102400 bytes時候,會發出警告。for: 30s表示,prometheus在第一次遇到這個警報後,等待30s,如果還是處於活動狀態的話,再觸發警報,如果處於活動狀態(Active),但沒有觸發(Firing)處於暫掛狀態(Pending),這就是alert的一個靜默期。否則,警告就會一直不停的發送。

annotations可以把當前query到的結果綜合到一個長的表達式裡面,然後在alert的template中,直接獲取這段表達。比如當前,我們設置了一個summary,說明變量為instance的這個node內存使用過高,當前內存使用是多少。

定義好prometheus的rules之後,我們就可以修改alertmanager的配置。

linux系統監控之實時警報

config.yml

這裡我們可以定義多個receivers,來指定不同的警報接受者,最新的alertmanager已經支持了企業微信的通知,所以大家可以註冊一個企業微信,來接受警報通知。需要到自己的企業微信後臺,拿到企業id (corp_id),然後創建一個應用,可以拿到agent_id和api_secret。把對應的信息填寫到這裡。

上面的routes定義了各個級別的警報的接受者,下面的templates,我們可以在裡面定義通知的內容,基於什麼樣的模板來發送。

linux系統監控之實時警報

這裡,我們定義了wechat的默認信息模板,首先是消息的標題,然後我們會遍歷所有的alerts,然後輸出alerts的簡要信息,這個是我們之前定義的annotation裡面寫的summary。

然後,我們就可以在企業微信中,當內存超過閾值的時候,就可以收到警報信息了。

linux系統監控之實時警報

警報信息

ok,到這我們就簡單配好了prometheus的alertmanager把警報信息發送到企業微信中。謝謝大家。


分享到:


相關文章: