Prometheus的告警規(guī)則是通過在Prometheus的配置文件中定義來的。在配置文件中,我們可以使用PromQL語言來定義告警規(guī)則,例如:
groups:
- name: example
rules:
- alert: HighErrorRate
expr: sum(rate(http_requests_total{status="500"}[5m])) / sum(rate(http_requests_total[5m])) * 100 > 1
for: 5m
labels:
severity: critical
annotations:
summary: High error rate detected
在上面的例子中,我們定義了一個(gè)告警規(guī)則,名稱為HighErrorRate,當(dāng)過去5分鐘內(nèi)http請求中狀態(tài)碼為500的請求占比超過1%時(shí),觸發(fā)告警。告警規(guī)則還可以設(shè)置如何觸發(fā)告警(例如for多少時(shí)間內(nèi)滿足條件)、告警的標(biāo)簽和注釋等信息。
告警規(guī)則觸發(fā)的條件是通過Prometheus監(jiān)控的時(shí)間序列數(shù)據(jù)來計(jì)算的。當(dāng)定義的表達(dá)式計(jì)算結(jié)果為true時(shí),表示條件滿足,觸發(fā)告警。
告警的觸發(fā)是由Prometheus自動(dòng)進(jìn)行的,當(dāng)某個(gè)告警規(guī)則的條件滿足時(shí),Prometheus會(huì)生成一個(gè)告警事件,并發(fā)送給Alertmanager進(jìn)行處理。Alertmanager可以根據(jù)配置的路由規(guī)則,將告警事件發(fā)送給指定的接收者(如郵件、Slack等)。