本章主要对如何使用Prometheus与Alertmanager组件集成配置,以及对警报规则 Rules 的俩种类型及其模板内容进行讲解。
与Alertmanager集成
Prometheus把产生的警报发给Alertmanager进行处理时,需要在Prometheus使用的配置文件中添加关联Alertmanager的组件的对应配置信息。
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
alertmanagers:
[ - <alertmanager_config> ... ]
# alertmanagers 为 alertmanager_config 数组,
配置范例:
alerting:
alert_relabel_configs: # 动态修改 alert 属性的规则配置。
- source_labels: [dc]
regex: (.+)\d+
target_label: dc1
alertmanagers:
- static_configs:
- targets: ['127.0.0.1:9093'] # 单实例配置
#- targets: ['172.31.10.167:19093','172.31.10.167:29093','172.31.10.167:39093'] # 集群配置
- job_name: 'Alertmanager'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:19093']
上面的配置中的 alert_relabel_configs
是指警报重新标记在发送到Alertmanager之前应用于警报。 它具有与目标重新标记相同的配置格式和操作,外部标签标记后应用警报重新标记,主要是针对集群配置。
这个设置的用途是确保具有不同外部label的HA对Prometheus服务端发送相同的警报信息。
Alertmanager 可以通过 static_configs
参数静态配置,也可以使用其中一种支持的服务发现机制动态发现,我们上面的配置是静态的单实例,针对集群HA配置,后面会讲。
此外,relabel_configs
允许从发现的实体中选择 Alertmanager,并对使用的API路径提供高级修改,该路径通过 __alerts_path__
标签公开。
完成以上配置后,重启Prometheus服务,用以加载生效,也可以使用前文说过的热加载功能,使其配置生效。然后通过浏览器,访问 http://192.168.1.220:19090/alerts 就可以看 inactive
pending
firing
三个状态,没有警报信息是因为我们还没有配置警报规则 rules
。
警报规则
警报规则 rules
使用的是 yaml 格式进行定义,在Prometheus中通过我们前面讲过的 PromQL
配置实际警报触发条件,Prometheus 会根据设置的警告规则 Ruels
以及配置间隔时间进行周期性计算,当满足触发条件规则会发送警报通知。
警报规则加载的是在 prometheus.yml
文件中进行配置,默认的警报规则进行周期运行计算的时间是1分钟,可以使用 global
中的 evaluation_interval
来决定时间间隔。
范例:
global:
evaluation_interval: 15s
警报规则可以指定多个文件,也可以自定到自定义的目录下面,为了管理更为便捷,方便阅读,可以把警报规则拆成多分,用以区分环境,系统,服务等,如:prod,test,dev 等等,并且支持以正则表达式定义。
范例:
rule_files: