Prometheus 监控报警系统 AlertManager 之邮件告警 (2)

注意:这里新增一个名称为 node-exporter 的 job 配置,target 就是上边 node-exporter 请求地址,默认 http 方式,请求地址后缀默认为 /metric,如果不是该地址,那么就需要配置 metrics_path: <path>。同时我为每个 job 新增了 label 标签配置,这个是很有必要的,通过配置不同的 label 来附加一些必要的信息,在后边 Alertmanager 告警邮件中和 Grafana Dashboard 展示中,都是很重要的区分表示。配置完毕,需要将新的配置文件覆盖容器内配置文件,并重启 Prometheus 来使配置生效。

$ docker run -d --name prometheus -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest

这里通过挂载的方式将外部配置文件覆盖容器内配置,重启 prometheus 服务,浏览器访问 :9090/targets 可以看到新增加的 target,并且是 healthy 状态。

img

不过,有没有发现默认使用 static_configs 静态配置方式,虽然可以正确配置,但是每次配置都需要重启 Prometheus 服务,当我们需要分批次添加很多 Node 时,频繁重启服务就会造成监控的多次中断,这太不友好了。当然 Prometheus 也提供了多种服务发现方式。

更多详细配置可查看 ,这里我们可以采用 file_sd_configs 方式,将 targets 以 Json 或 Yaml 方式写入特定文件中,那么只要文件发生变化,Prometheus 就会自动加载,是不是很方便啦!

$ midir -p /root/prometheus/groups/nodegroups && cd /root/prometheus/groups/nodegroups $ vim node.json [ { "targets": [ "192.168.1.124:9100" ], "labels": { "instance": "vm-192.168.1.124", "service": "node-service" } } ]

新建一个 node.json 文件,将 prometheus.yml 中 job_name: \'node-exporter\' 下的信息以 Json 方式配置到该文件中,然后修改 prometheus.yml 加载方式为 file_sd_configs,配置修改如下:

... - job_name: \'node-exporter\' file_sd_configs: - files: [\'/usr/local/prometheus/groups/nodegroups/*.json\']

注意:这里我们指定加载容器内目录配置文件,那么需要将本地 node.json 文件挂载到容器内指定目录上,修改 Prometheus 启动命令如下:

$ docker run -d --name prometheus -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/groups/:/usr/local/prometheus/groups/ prom/ prometheus:latest

启动成功,以后在添加或修改 Node 相关的 exproter,就可以直接在该 Json 文件中更新即可,不需要重启 Prometheus 服务,更多关于 Prometheus 配置可以参考 官网文档。

4、启动并配置 AlertManager

接下来,我们需要启动 AlertManager 来接受 Prometheus 发送过来的报警信息,并执行各种方式的告警。同样以 Docker 方式启动 AlertManager,最简单的启动命令如下:

$ docker run --name alertmanager -d -p 9093:9093 prom/alertmanager:latest

这里 AlertManager 默认启动的端口为 9093,启动完成后,浏览器访问 <IP>:9093 可以看到默认提供的 UI 页面,不过现在是没有任何告警信息的,因为我们还没有配置报警规则来触发报警。

img

4.1、AlertManager 配置邮件告警

AlertManager 默认配置文件为 alertmanager.yml,在容器内路径为 /etc/alertmanager/alertmanager.yml,默认配置如下:

global: resolve_timeout: 5m route: group_by: [\'alertname\'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: \'web.hook\' receivers: - name: \'web.hook\' webhook_configs: - url: \'http://127.0.0.1:5001/\' inhibit_rules: - source_match: severity: \'critical\' target_match: severity: \'warning\' equal: [\'alertname\', \'dev\', \'instance\']

简单介绍一下主要配置的作用:

: 全局配置,包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。

: 用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。

: 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式。

: 抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfzsz.html