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

文章目录

    • 1、Prometheus & AlertManager 介绍
    • 2、环境、软件准备
    • 3、启动并配置 Prometheus
      • 3.1、Docker 启动 Prometheus
      • 3.2、Docker 启动 node-exporter
      • 3.3、Prometheus 配置 node-exproter
    • 4、启动并配置 AlertManager
      • 4.1、AlertManager 配置邮件告警
      • 4.2、Prometheus 配置 AlertManager 告警规则
      • 4.3、触发报警发送 Email
      • 4.4、AlertManager 配置自定义邮件模板

1、Prometheus & AlertManager 介绍

Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,最初有 SoundCloud 开发的,后来随着越来越多公司使用,于是便独立成开源项目。Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件、微信、钉钉、Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等,是一款很好用的告警通知系统。

2、环境、软件准备

本次演示环境,我是在本机 MAC OS 上操作,以下是安装的软件及版本:

  • Docker: 18.06.3-ce
  • Oracle VirtualBox: 6.0.8 r130520 (Qt5.6.3)
  • Linux: 7.6.1810
  • Prometheus: v2.11.1
  • Alertmanager: v0.18.0
  • Node-Exporter: v0.18.1

注意:这里为了快速方便启动 Prometheus、Alertmanager、Node-Exporter 服务,我使用 Docker 方式启动,所以本机需要安装好 Docker 环境,这里忽略 Docker 的安装过程,着重介绍一下如何启动并配置 Prometheus 监控报警系统 集成 AlertManager,并配置 Email 发送告警信息。

3、启动并配置 Prometheus

3.1、Docker 启动 Prometheus

启动 Prometheus 很简单,这里为了方便,我采用 Docker 方式启动,最简单的启动命令如下:

这里默认 Prometheus 开放 端口,我们使用最新版官方镜像,当前最新版本为 ,启动完成后,浏览器访问 即可看到默认 UI 页面。

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

从默认配置可以看到 Alertmanager 配置、rule 报警规则、监听目标端点配置等,每一项的配置我就不一一解释了,下边具体使用中,会分别讲到。现在 Prometheus 已经启动起来了,我们需要启动一个 exporter 来供 Prometheus 监控获取指标值,这里以一个常用的 为例,它是最基本的节点监控客户端,负责监控机器的各个指标,包括节点存活、CPU、Mem、Network、IO 等等,方便后边演示 Alertmanager 报警时的触发条件,例如配置节点存活检测,当机器 Down 时,触发报警控制,那么就可以通过停止 来模拟实现了。

3.2、Docker 启动 node-exporter

同样采用 Docker 方式启动 服务,最简单的启动命令如下:

这里 默认启动端口为 ,当前镜像最新版本为 。启动完成后,浏览器访问 可以看到提供的监控指标项列表了。

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

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

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

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

4.1、AlertManager 配置邮件告警

AlertManager 默认配置文件为 ,在容器内路径为 ,默认配置如下:

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

  • global: 全局配置,包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。
  • route: 用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。
  • receivers: 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式。
  • inhibit_rules: 抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。

那么,我们就来配置一下使用 Email 方式通知报警信息,这里以 QQ 邮箱为例,配置如下:

以上配置我反复试验后,发现不同的环境参数配置也不一样,调试期间出现了各种报错问题,将其中几个关键的配置说明一下:

  • : 这里为 QQ 邮箱 SMTP 服务地址,官方地址为 端口为 或 ,同时要设置开启 服务。
  • : 这里为第三方登录 QQ 邮箱的授权码,非 QQ 账户登录密码,否则会报错,获取方式在 QQ 邮箱服务端设置开启 服务时会提示。
  • : 是否使用 tls,根据环境不同,来选择开启和关闭。如果提示报错 ,那么就需要设置为 true。着重说明一下,如果开启了 tls,提示报错 ,需要在 下配置 来跳过 tls 验证。

修改 AlertManager 启动命令,将本地 文件挂载到容器内指定位置。

4.2、Prometheus 配置 AlertManager 告警规则

接下来,我们需要在 Prometheus 配置 AlertManager 服务地址以及告警规则,新建报警规则文件 如下:

说明一下:该 rules 目的是监测 node 是否存活, 为 PromQL 表达式验证特定节点 是否活着, 表示报警状态为 后等待 15s 变成 状态,一旦变成 状态则将报警发送到 AlertManager, 和 对该 alert 添加更多的标识说明信息,所有添加的标签注解信息,以及 中该 job 已添加 label 都会自动添加到邮件内容中,更多关于 rule 详细配置可以参考 这里。

然后,修改 配置文件,添加 rules 规则文件。

注意: 这里 为容器内路径,需要将本地 文件挂载到容器内指定路径,修改 Prometheus 启动命令如下,并重启服务。

Prometheus 监控报警系统 AlertManager 之邮件告警
Prometheus 监控报警系统 AlertManager 之邮件告警
Prometheus 监控报警系统 AlertManager 之邮件告警
最终发送的默认报警邮件信息如下:
来源:哎_小羊_168

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月2日
下一篇 2019年7月2日

相关推荐