原文:https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
警報規則使您可以基於Prometheus表達式語言定義警報條件,並將有關觸發警報的通知發送到外部服務。 只要警報表達式在給定的時間點產生一個或多個矢量元素,警報就被視爲這些元素的標籤集處於活動狀態。
定義警報規則
警報規則在Prometheus中的配置方式與記錄規則相同。
帶有警報的示例規則文件:
groups:
- name: example
rules:
- alert: HighRequestLatency
expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: High request latency
可選的for參數使Prometheus在第一次遇到新的表達式輸出向量元素與將警報計爲對此元素的觸發進行計數之間等待一段時間。 在這種情況下,Prometheus將在每次發出警報之前檢查警報在10分鐘內是否繼續處於活動狀態。 元素處於活動狀態,但尚未觸發,而是處於掛起狀態。
labels參數允許指定一組附加標籤來附加到警報。 任何現有的衝突標籤都將被覆蓋。 標籤值可以模板化。
annotations參數指定一組信息標籤,這些標籤可用於存儲更長的附加信息,例如警報描述或運行手冊鏈接。 註釋值可以模板化。
模板化
標籤和註釋值可以使用控制檯模板進行模板化。 $labels變量保存警報實例的標籤鍵/值對。 可以通過$externalLabels變量訪問已配置的外部標籤。 $value變量保存警報實例的評估值。
# To insert a firing element's label values:
{{ $labels.<labelname> }}
# To insert the numeric expression value of the firing element:
{{ $value }}
Examples:
groups:
- name: example
rules:
# Alert for any instance that is unreachable for >5 minutes.
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} down"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
# Alert for any instance that has a median request latency >1s.
- alert: APIHighRequestLatency
expr: api_http_request_latencies_second{quantile="0.5"} > 1
for: 10m
annotations:
summary: "High request latency on {{ $labels.instance }}"
description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"
在運行時檢查警報
要手動檢查哪些警報處於活動狀態(掛起或觸發),請導航到Prometheus實例的“Alerts”選項卡。這將向您顯示每個定義的警報當前處於活動狀態的確切標籤集。
對於掛起和觸發警報,Prometheus還存儲格式爲 ALERTS{alertname="<alert name>", alertstate="pending|firing", <additional alert labels>}的合成時間序列。只要警報處於指示的活動(掛起或觸發)狀態,樣本值就設置爲1;如果不再是這種情況,則將系列標記爲陳舊。
發送警報通知
Prometheus的警報規則擅長於確定當前已損壞的內容,但它們並不是完整的通知解決方案。在簡單的警報定義之上,還需要另一層來添加摘要,通知速率限制,靜默和警報依賴性。在Prometheus的生態系統中,Alertmanager擔當了這個角色。因此,Prometheus可以配置爲定期將有關警報狀態的信息發送到Alertmanager實例,該實例隨後負責調度正確的通知。
可以將Prometheus配置爲通過其服務發現集成自動發現可用的Alertmanager實例。