如何在 Ubuntu 20.04 LTS 上安装和配置 Prometheus Alert Manager
Prometheus Alert Manager 用于根据 Prometheus 上生成的警报事件通过电子邮件和其他 Web 服务(即 PagerDuty、Slack、GitLab、WeChat)发送警报。
Prometheus 可以在目标不可用时生成警报,并将其发送到警报管理器,同时向您发送电子邮件通知,让您知道目标已关闭。这只是一个例子。 Prometheus 可以根据任何 Prometheus 指标向警报管理器发送警报。因此,可能性是无限的。
在本文中,我将向您展示如何在 Ubuntu 20.04 LTS 上安装 Prometheus Alert Manager。我还将向您展示如何配置 Prometheus 和警报管理器,以便在 Prometheus 目标关闭(不可用)时通过 Gmail 向您发送电子邮件通知。那么,让我们开始吧。
目录:
先决条件
安装警报管理器
创建数据目录
启动时启动警报管理器
配置普罗米修斯
创建 Prometheus 警报规则
在警报管理器上配置 Gmail 接收器
警报管理器电子邮件传送问题故障排除
结论
参考
先决条件:
要阅读本文,您必须:
创建一个prometheus系统用户。
在您的计算机上安装 Prometheus。
本文是如何在 Ubuntu 20.04 LTS 上安装 Prometheus 一文的延续。如果您需要有关在 Ubuntu 20.04 LTS 上安装 Prometheus 和创建 prometheus 系统用户的任何帮助,请务必查看。
安装警报管理器:
您可以从 Prometheus 官方网站下载最新版本的 Alert Manager 并非常轻松地将其安装在 Ubuntu 20.04 LTS 上。
首先,导航到 ~/Downloads 目录(或您选择的任何其他临时目录),如下所示:
使用以下命令下载最新版本的警报管理器(在撰写本文时为 v0.22.2):
正在下载警报管理器。可能需要一段时间才能完成。
此时,应下载警报管理器。
下载警报管理器后,您应该在当前工作目录中找到一个新的存档文件alertmanager-0.22.2.linux-amd64.tar.gz,如下面的屏幕截图所示。
使用以下命令提取 alertmanager-0.22.2.linux-amd64.tar.gz 存档:
您应该找到一个新目录alertmanager-0.22.2.linux-amd64/,如下面的屏幕截图所示。
现在,将 alertmanager-0.22.2.linux-amd64 目录移动到 /opt/ 目录,并将其重命名为 alertmanager ,如下所示:
将/opt/alertmanager/目录下所有文件和目录的用户和组更改为root,如下:
在/opt/alertmanager目录中,您应该找到alertmanager二进制文件和警报管理器配置文件alertmanager.yml,如屏幕截图中标记的那样以下。您稍后将使用它们。所以,请记住这一点。
创建数据目录:
警报管理器需要一个可以存储数据的目录。由于您将以 prometheus 系统用户身份运行警报管理器,因此 prometheus 系统用户必须拥有该数据目录的访问权限(读取、写入和执行权限)。
您可以在 /opt/alertmanager/ 目录中创建 data/ 目录,如下所示:
使用以下命令将 /opt/alertmanager/data/ 目录的所有者和组更改为 prometheus :
/opt/alertmanager/data/ 目录的所有者和组应更改为 prometheus,如下面的屏幕截图所示。
启动时启动警报管理器:
现在,您必须为Alert Manager 创建一个systemd 服务文件,以便您可以轻松地使用systemd 管理(启动、停止、重新启动和添加到启动)alertmanager 服务。
要创建 systemd 服务文件 alertmanager.service,请运行以下命令:
在 alertmanager.service 文件中键入以下行。
Description=Alertmanager for prometheus
[Service]
Restart=always
User=prometheus
ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
完成后,按
要使 systemd 更改生效,请运行以下命令:
现在,使用以下命令启动 alertmanager 服务:
将 alertmanager 服务添加到系统启动中,以便使用以下命令在启动时自动启动:
如您所见,alertmanager服务处于活动/正在运行状态。它还启用(它将在启动时自动启动)。
配置普罗米修斯:
现在,您必须配置 Prometheus 才能使用警报管理器。您还可以使用 Prometheus 监控警报管理器。我将在本节中向您展示如何做到这两点。
首先,使用以下命令找到安装警报管理器的计算机的 IP 地址:
就我而言,IP 地址是 192.168.20.161。这对你来说会有所不同。因此,请确保从现在开始将其替换为您的。
现在,使用nano文本编辑器打开Prometheus配置文件/opt/prometheus/prometheus.yml,如下所示:
在 scrape_configs 部分中输入以下行,添加警报管理器以使用 Prometheus 进行监控。
static_configs:
- targets: ['192.168.20.161:9093']
另外,在警报>警报管理器部分中输入警报管理器的IP地址和端口号,如下面的屏幕截图所示。
完成后,按
为了使更改生效,请重新启动 prometheus 服务,如下所示:
从您最喜欢的网络浏览器访问 URL http://192.168.20.161:9090/targets,您应该看到 alertmanager 处于 UP 状态。因此,Prometheus 可以很好地访问警报管理器。
注意:我在同一台计算机上安装了 Prometheus 和 Alert Manager。因此,我的 Prometheus 实例的 IP 地址与警报管理器的 IP 地址相同。如果您已在另一台计算机上安装了 Prometheus,请从现在开始进行必要的调整。
创建 Prometheus 警报规则:
在 Prometheus 上,您可以使用 up 表达式来查找添加到 Prometheus 的目标的状态,如下面的屏幕截图所示。
处于 UP 状态(正在运行且可被 Prometheus 访问)的目标的值为 1,不处于 UP 状态的目标将具有值 1 (或 DOWN)状态(未运行或 Prometheus 无法访问)的值为 0。
如果您停止其中一个目标 - node_exporter(比方说)。
该目标的 up 值应为 0,如下面的屏幕截图所示。你明白了。
因此,您可以使用 up == 0 表达式仅列出未运行或 Prometheus 无法访问的目标,如下面的屏幕截图所示。
该表达式可用于创建 Prometheus 警报,并在一个或多个目标未运行或 Prometheus 无法访问时向警报管理器发送警报。
要创建 Prometheus 警报,请在 /opt/prometheus/ 目录中创建一个新文件 rules.yml,如下所示:
现在,在 rules.yml 文件中输入以下行。
- name: test
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
完成后,按 + X,然后按 Y 和
在这里,当目标未运行或 Prometheus 无法访问(即 up == 0)一分钟(1m)时,将触发警报 InstanceDown >)。
现在,使用nano文本编辑器打开Prometheus配置文件/opt/prometheus/prometheus.yml,如下所示:
在 prometheus.yml 配置文件的 rule_files 部分中添加 rules.yml 文件,如下面的屏幕截图所示。
prometheus.yml 文件的另一个重要选项是evaluation_interval。 Prometheus 将在每个 evaluation_interval 时间检查是否有规则匹配。默认值为 15 秒(15 秒)。因此,rules.yml 文件中的警报规则将每 15 秒检查一次。
完成后,按
为了使更改生效,请重新启动 prometheus 服务,如下所示:
现在,从您最喜欢的网络浏览器导航到 URL http://192.168.20.161:9090/rules,您应该会看到刚刚添加的规则 InstanceDown 。
从您最喜欢的 Web 浏览器导航到 URL http://192.168.20.161:9090/alerts,您应该会看到警报 InstanceDown 的状态,如下面的屏幕截图所示。
由于您之前已停止 node_exporter,因此警报处于活动状态,并且正在等待发送到警报管理器。
一分钟过去后,警报 InstanceDown 应处于 FIRING 状态。这意味着警报被发送到警报管理器。
在警报管理器上配置 Gmail 接收器:
在本节中,我将向您展示如何将 Gmail 配置为警报管理器接收器,以便您可以在 Prometheus 目标关闭时从警报管理器获取 Gmail 帐户上的电子邮件。
要将 Gmail 配置为警报管理器接收器,您必须从 Google 帐户的安全设置中生成 Gmail 的应用程序密码。
为此,请从您喜爱的网络浏览器导航至 URL https://myaccount.google.com,然后点击安全 > 应用密码,如下面的屏幕截图所示。
您应该看到以下页面。
从选择应用下拉菜单中选择邮件,如下面的屏幕截图所示。
从选择设备下拉菜单中选择其他(自定义名称),如下面的屏幕截图所示。
输入alertmanager(或任何您喜欢的内容),然后单击生成,如下面的屏幕截图所示。
应生成应用程序密码。复制它并将其存储在安全的地方。您稍后会需要它。
现在,使用 nano 文本编辑器打开警报管理器配置文件 /opt/alertmanager/alertmanager.yml,如下所示:
要添加新的 Gmail 接收器,请在 alertmanager.yml 文件的 receivers 部分中输入以下行,如下面的屏幕截图所示。
email_configs:
- to: '<google-username>@gmail.com'
from: '<google-username>@gmail.com'
smarthost: smtp.gmail.com:587
auth_username: '<google-username>@gmail.com'
auth_identity: '<google-username>@gmail.com'
auth_password: '<google-app-password>'
注意:请务必将
然后,将警报管理器接收器设置为gmail (您刚刚创建的接收器),如下面的屏幕截图所示。
完成后,按
从现在开始,警报管理器将使用 gmail 接收器。
repeat_interval 也是一个重要的警报管理器选项。默认情况下,repeat_interval 设置为 1h(1 小时)。如果警报管理器已成功通过您的 Gmail 帐户向您发送一封电子邮件,它将等待一个小时,然后再向您发送另一封电子邮件。如果您不想频繁收到电子邮件,可以增加它。
现在,重新启动 alertmanagersystemd 服务以使更改生效,如下所示:
您的 Gmail 帐户很快就会收到一封电子邮件,如下面的屏幕截图所示。
您之前已经停止了 node_exporter ,还记得吗?
警报管理器电子邮件传送问题故障排除:
您可以使用以下命令监控警报管理器电子邮件传送问题:
应显示 alertmanager systemd 服务日志,如下面的屏幕截图所示。
如果警报管理器无法将电子邮件发送到您的电子邮件地址,您应该能够在此处找到失败的原因。
下面的屏幕截图显示了电子邮件发送失败的示例。如果您阅读日志消息,您应该能够知道由于密码不正确而导致传送失败。
结论:
在本文中,我向您展示了如何在 Ubuntu 20.04 LTS 上安装警报管理器。我还向您展示了如何配置警报管理器和 Prometheus,以便在 Prometheus 目标关闭时向您的 Gmail 帐户发送电子邮件通知。
参考:
GitHub – prometheus/alertmanager: 普罗米修斯警报管理器
集成|普罗米修斯