[英]Prometheus AlertManager - Send Alerts to different clients based on routes
我有 2 個要監控的服務A和B。 此外,我在 AlertManager 配置文件中以receivers
的形式有 2 個不同的通知通道X和Y。
我想送,服務A出現故障,並想服務B下降到通知Ÿ通知X。 我怎樣才能實現這個我的配置?
我的 AlertManager YAML 文件是:
route:
receiver: X
receivers:
- name: X
email_configs:
- name: Y
email_configs:
alert.rule
文件是:
groups:
- name: A
rules:
- alert: A_down
expr: expression
for: 1m
labels:
severity: critical
annotations:
summary: "A is down"
- name: B
rules:
- alert: B_down
expr: expression
for: 1m
labels:
severity: warning
annotations:
summary: "B is down"
配置應該大致如下(未測試):
route:
group_wait: 30s
group_interval: 5m
repeat_interval: 2h
receiver: 'default-receiver'
routes:
- match:
alertname: A_down
receiver: X
- match:
alertname: B_down
receiver: Y
這個想法是,每個route
字段都可以有一個routes
字段,您可以在其中放置不同的配置,如果match
中的標簽與條件匹配,則啟用該字段。
為了澄清 - 在 Prometheus 中處理警報的一般流程(Alertmanager 和 Prometheus 集成)是這樣的:
SomeErrorHappenInYourConfiguredRule( Rule ) -> RouteToDestination( Route ) -> TriggeringAnEvent( Reciever )-> GetAMessageInSlack/PagerDuty/Mail/etc...
例如:
如果我的 aws 機器集群 production-a1 關閉,我想觸發一個事件,向我的團隊發送“pagerDuty”和“Slack”,並顯示相關錯誤。
有 3 個文件對於在 prometheus 系統上配置警報很重要:
我附上一個虛擬示例為了演示這個想法,在這個示例中,我將觀察我的機器中的過載(使用安裝在其上的節點導出器):在/var/data/prometheus-stack/alertmanager/alertmanager.yml
global:
# The smarthost and SMTP sender used for mail notifications.
smtp_smarthost: 'localhost:25'
smtp_from: 'JohnDoe@gmail.com'
route:
receiver: defaultTrigger
group_wait: 30s
group_interval: 5m
repeat_interval: 6h
routes:
- match_re:
service: service_overload
owner: ATeam
receiver: pagerDutyTrigger
receivers:
- name: 'pagerDutyTrigger'
pagerduty_configs:
- send_resolved: true
routing_key: <myPagerDutyToken>
在 /var/data/prometheus-stack/prometheus/ yourRuleFile.yml 上添加一些規則
groups:
- name: alerts
rules:
- alert: service_overload_more_than_5000
expr: (node_network_receive_bytes_total{job="someJobOrService"} / 1000) >= 5000
for: 10m
labels:
service: service_overload
severity: pager
dev_team: myteam
annotations:
dev_team: myteam
priority: Blocker
identifier: '{{ $labels.name }}'
description: 'service overflow'
value: '{{ humanize $value }}%'
放在/ var /數據/普羅米修斯堆棧/普羅米修斯/ prometheus.yml添加此片段整合alertmanager:
global:
...
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager:9093"
rule_files:
- "yourRuleFile.yml"
...
注意這個例子的關鍵點是service_overload ,它將規則連接並綁定到正確的接收器中。
重新加載配置(再次重新啟動服務或停止並啟動您的 docker 容器)並對其進行測試,如果配置良好,您可以在http://your-prometheus-url:9090/alerts
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.