Prometheus 告警

github alertmanager 文檔
Prometheus Alerting rules
Prometheus alerting configuration

前幾篇文章講了Prometheus的監(jiān)控找前,這一篇文章,講通過監(jiān)控指標(biāo)觸發(fā)告警

常用的告警方式有發(fā)郵件、調(diào)用指定接口(webhook) 等档泽。本文講解webhook方式吹菱,完成這個示例需要準(zhǔn)備4個組件:prometheus威鹿、node_exporter踩官、alertmanagers、接受webhook調(diào)用的web服務(wù)

1

首先準(zhǔn)備一個rule_file超歌,機(jī)器的近1分鐘負(fù)載超過0.8砍艾,就觸發(fā)告警。如下:
my_rules.yml:

groups: # 一組告警規(guī)則
- name: cpu_gt30 # 這個組的名稱
  rules:  # 下面可以寫多條規(guī)則
  - alert: cpu_usage_high  # 告警名稱
    expr: node_load1 > 0.8  # PromQL 表達(dá)式(計算規(guī)則)
    for: 1m # 持續(xù)超標(biāo)1分鐘才觸發(fā)
    labels:
      severity: warning # 告警級別巍举,可選字段為warning脆荷、critical和emergency
    annotations: # 告警的描述信息
      summary: "{{$labels.instance}}: 節(jié)點(diǎn)CPU使用率過高"
      description: "{{$labels.instance}}: CPU使用率超過 80% (當(dāng)前: {{ $value }}"

上面配置中expr和for是比較重要的。prometheus每隔一段時間就會計算一下expr是否滿足觸發(fā)條件懊悯。
如果expr計算結(jié)果不滿足蜓谋,這條告警就是inactive狀態(tài):


如果計算結(jié)果滿足這條規(guī)則就變成了pending狀態(tài):


如果連續(xù)1分鐘(for配置的值)expr都滿足,就會觸發(fā)告警炭分,變成firing狀態(tài)


2

修改alertmanager配置文件:
alertmanager.yml

route:
  group_by: ['alertname']  # 根據(jù)alertname標(biāo)簽進(jìn)行分組桃焕,具有相同標(biāo)簽的告警將被視為一組,聚合成一條發(fā)送捧毛。alertname標(biāo)簽 對應(yīng)rule文件里的 alert: cpu_usage_high
  group_wait: 30s # 告警分組的時間窗口观堂,如果第一個告警觸發(fā)后,30秒內(nèi)又觸發(fā)了具有相同alertname的告警呀忧,它們將被合并為一個告警組
  group_interval: 5m # 告警組的刷新間隔师痕。每5分鐘,Alertmanager 會重新評估告警組而账,并將新的告警添加到現(xiàn)有的組中
  repeat_interval: 1h # 告警的重復(fù)間隔胰坟。如果一個告警已經(jīng)被發(fā)送,那么在告警狀態(tài)沒有變化的情況下泞辐,它會每隔1小時再次發(fā)送
  receiver: 'web.hook'
receivers:
  - name: 'web.hook'
    webhook_configs:
      - url: 'http://192.168.254.1:5000/alert'

啟動alertmanager ./alertmanager --config.file=./alertmanager.yml

3

修改prometheus配置文件為如下內(nèi)容
prometheus.yml:

global:
  ... # 省略一些與本節(jié)內(nèi)容無關(guān)的配置
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 192.168.243.99:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "/my_rules.yml"

使用上述配置文件啟動prometheus

4

起一個web服務(wù)笔横,接受webhook調(diào)用:

from fastapi import FastAPI, Request
import uvicorn

app = FastAPI(debug=False)

@app.post("/alert")
async def print_args(request: Request):
    body = await request.json()
    print(body)

    return {}

if __name__ == '__main__':
    uvicorn.run(app, host="0.0.0.0", port=5000)

運(yùn)行python腳本使CPU飆高:

import math
import time

def cpu_intensive_task():
    while True:
        for i in range(1000000):
            math.sqrt(i)

try:
    cpu_intensive_task()
except KeyboardInterrupt:
    print("exited")

然后靜待告警觸發(fā),你會看到上面3個告警狀態(tài)的變化咐吼,web服務(wù)收到的請求參數(shù)為:

{'receiver': 'web.hook',
     'status': 'firing',
     'alerts': [{'status': 'firing',
                 'labels': {'alertname': 'cpu_usage_high',
                            'instance': '192.168.243.99:9100',
                            'job': 'node_exporter',
                            'severity': 'warning'},
                 'annotations': {
                     'description': '192.168.243.99:9100: CPU使用率超過 80% (當(dāng)前: 0.97',
                     'summary': '192.168.243.99:9100: 節(jié)點(diǎn)CPU使用率過高'},
                 'startsAt': '2024-10-22T14:02:11.03Z',
                 'endsAt': '0001-01-01T00:00:00Z',
                 'generatorURL': 'http://f2f05a8126f0:9090/graph?g0.expr=node_load1+%3E+0.8&g0.tab=1',
                 'fingerprint': 'd3155240a05e4626'}],
     'groupLabels': {'alertname': 'cpu_usage_high'},
     'commonLabels': {'alertname': 'cpu_usage_high',
                      'instance': '192.168.243.99:9100',
                      'job': 'node_exporter',
                      'severity': 'warning'},
     'commonAnnotations': {'description': '192.168.243.99:9100: CPU使用率超過 80% (當(dāng)前: 0.97',
                           'summary': '192.168.243.99:9100: 節(jié)點(diǎn)CPU使用率過高'},
     'externalURL': 'http://master:9093',
     'version': '4',
     'groupKey': '{}:{alertname="cpu_usage_high"}',
     'truncatedAlerts': 0}

等待告警解除后吹缔,又會收到一個 告警已解決的通知

{'receiver': 'web.hook', 'status': 'resolved', ...} # 其余部分更上面差不多,就不粘貼出來了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锯茄,一起剝皮案震驚了整個濱河市涛菠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撇吞,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件礁叔,死亡現(xiàn)場離奇詭異牍颈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)琅关,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門煮岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讥蔽,“玉大人,你說我怎么就攤上這事画机∫鄙。” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵步氏,是天一觀的道長响禽。 經(jīng)常有香客問我,道長荚醒,這世上最難降的妖魔是什么芋类? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮界阁,結(jié)果婚禮上侯繁,老公的妹妹穿的比我還像新娘。我一直安慰自己泡躯,他們只是感情好贮竟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著较剃,像睡著了一般咕别。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上重付,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天顷级,我揣著相機(jī)與錄音,去河邊找鬼确垫。 笑死弓颈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的删掀。 我是一名探鬼主播翔冀,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼披泪!你這毒婦竟也來了纤子?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤款票,失蹤者是張志新(化名)和其女友劉穎控硼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艾少,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卡乾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缚够。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幔妨。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹦赎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出误堡,到底是詐尸還是另有隱情古话,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布锁施,位于F島的核電站陪踩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沾谜。R本人自食惡果不足惜膊毁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望基跑。 院中可真熱鬧婚温,春花似錦、人聲如沸媳否。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽篱竭。三九已至力图,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掺逼,已是汗流浹背吃媒。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吕喘,地道東北人赘那。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像氯质,于是被迫代替她去往敵國和親募舟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容