我有两个要监视的不同的服务 A 和 B 。另外,我在AlertManager配置文件中以receivers
的形式有2个不同的通知通道 X 和 Y 。
如果服务 A 发生故障,我想发送通知 X ,如果服务 B 我想通知 Y >掉下来。如何实现我的配置?
我的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"
答案 0 :(得分:1)
配置应大致如下所示(未经测试):
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
中的标签符合条件,该配置就会启用。 / p>
答案 1 :(得分:1)
为了澄清-用于处理Prometheus(Alertmanager和Prometheus集成)中的警报的 General Flow 像这样:
SomeErrorHappenInYourConfiguredRule( Rule )-> RouteToDestination( Route ) -> TriggeringAnEvent(收件人)-> 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 / data / prometheus-stack / prometheus / 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
中查看警报