如何在 Ubuntu 20.04 LTS 上安装和配置 Prometheus Alert Manager如何在 Ubuntu 20.04 LTS 上安装和配置 Prometheus Alert Manager如何在 Ubuntu 20.04 LTS 上安装和配置 Prometheus Alert Manager如何在 Ubuntu 20.04 LTS 上安装和配置 Prometheus Alert Manager
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 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 向您发送电子邮件通知。那么,让我们开始吧。

目录:

  1. 先决条件

  2. 安装警报管理器

  3. 创建数据目录

  4. 启动时启动警报管理器

  5. 配置普罗米修斯

  6. 创建 Prometheus 警报规则

  7. 在警报管理器上配置 Gmail 接收器

  8. 警报管理器电子邮件传送问题故障排除

  9. 结论

  10. 参考

先决条件:

要阅读本文,您必须:

  • 创建一个prometheus系统用户。

  • 在您的计算机上安装 Prometheus。

本文是如何在 Ubuntu 20.04 LTS 上安装 Prometheus 一文的延续。如果您需要有关在 Ubuntu 20.04 LTS 上安装 Prometheus 和创建 prometheus 系统用户的任何帮助,请务必查看。

安装警报管理器:

您可以从 Prometheus 官方网站下载最新版本的 Alert Manager 并非常轻松地将其安装在 Ubuntu 20.04 LTS 上。

首先,导航到 ~/Downloads 目录(或您选择的任何其他临时目录),如下所示:

$ cd ~/Downloads

使用以下命令下载最新版本的警报管理器(在撰写本文时为 v0.22.2):

$ wget https://github.com/prometheus/alertmanager/releases/download/v0.22.2/alertmanager-0.22.2.linux-amd64.tar.gz

正在下载警报管理器。可能需要一段时间才能完成。

此时,应下载警报管理器。

下载警报管理器后,您应该在当前工作目录中找到一个新的存档文件alertmanager-0.22.2.linux-amd64.tar.gz,如下面的屏幕截图所示。

$ ls -lh

使用以下命令提取 alertmanager-0.22.2.linux-amd64.tar.gz 存档:

$ tar xzf alertmanager-0.22.2.linux-amd64.tar.gz

您应该找到一个新目录alertmanager-0.22.2.linux-amd64/,如下面的屏幕截图所示。

$ ls -lh

现在,将 alertmanager-0.22.2.linux-amd64 目录移动到 /opt/ 目录,并将其重命名为 alertmanager ,如下所示:

$ sudo mv -v alertmanager-0.22.2.linux-amd64 /opt/alertmanager

将/opt/alertmanager/目录下所有文件和目录的用户和组更改为root,如下:

$ sudo chown -Rfv root:root /opt/alertmanager

在/opt/alertmanager目录中,您应该找到alertmanager二进制文件和警报管理器配置文件alertmanager.yml,如屏幕截图中标记的那样以下。您稍后将使用它们。所以,请记住这一点。

创建数据目录:

警报管理器需要一个可以存储数据的目录。由于您将以 prometheus 系统用户身份运行警报管理器,因此 prometheus 系统用户必须拥有该数据目录的访问权限(读取、写入和执行权限)。

您可以在 /opt/alertmanager/ 目录中创建 data/ 目录,如下所示:

$ sudo mkdir -v /opt/alertmanager/data

使用以下命令将 /opt/alertmanager/data/ 目录的所有者和组更改为 prometheus :

$ sudo chown -Rfv prometheus:prometheus /opt/alertmanager/data

/opt/alertmanager/data/ 目录的所有者和组应更改为 prometheus,如下面的屏幕截图所示。

$ ls -lh

启动时启动警报管理器:

现在,您必须为Alert Manager 创建一个systemd 服务文件,以便您可以轻松地使用systemd 管理(启动、停止、重新启动和添加到启动)alertmanager 服务。

要创建 systemd 服务文件 alertmanager.service,请运行以下命令:

$ sudo nano /etc/systemd/system/alertmanager.service

在 alertmanager.service 文件中键入以下行。

[Unit]
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

完成后,按 + X,然后按 Y 和 保存alertmanager.service< 文件。

要使 systemd 更改生效,请运行以下命令:

$ sudo systemctl daemon-reload

现在,使用以下命令启动 alertmanager 服务:

$ sudo systemctl start alertmanager.service

将 alertmanager 服务添加到系统启动中,以便使用以下命令在启动时自动启动:

$ sudo systemctl enable alertmanager.service

如您所见,alertmanager服务处于活动/正在运行状态。它还启用(它将在启动时自动启动)。

$ sudo systemctl status alertmanager.service

配置普罗米修斯:

现在,您必须配置 Prometheus 才能使用警报管理器。您还可以使用 Prometheus 监控警报管理器。我将在本节中向您展示如何做到这两点。

首先,使用以下命令找到安装警报管理器的计算机的 IP 地址:

$ hostname -I

就我而言,IP 地址是 192.168.20.161。这对你来说会有所不同。因此,请确保从现在开始将其替换为您的。

现在,使用nano文本编辑器打开Prometheus配置文件/opt/prometheus/prometheus.yml,如下所示:

$ sudo nano /opt/prometheus/prometheus.yml

在 scrape_configs 部分中输入以下行,添加警报管理器以使用 Prometheus 进行监控。

- job_name: 'alertmanager'
  static_configs:
  - targets: ['192.168.20.161:9093']

另外,在警报>警报管理器部分中输入警报管理器的IP地址和端口号,如下面的屏幕截图所示。

完成后,按 + X,然后按 Y 和 保存 prometheus.yml< 配置文件。

为了使更改生效,请重新启动 prometheus 服务,如下所示:

$ sudo systemctl restart prometheus.service

从您最喜欢的网络浏览器访问 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(比方说)。

$ sudo systemctl stop node-exporter.service

该目标的 up 值应为 0,如下面的屏幕截图所示。你明白了。

因此,您可以使用 up == 0 表达式仅列出未运行或 Prometheus 无法访问的目标,如下面的屏幕截图所示。

该表达式可用于创建 Prometheus 警报,并在一个或多个目标未运行或 Prometheus 无法访问时向警报管理器发送警报。

要创建 Prometheus 警报,请在 /opt/prometheus/ 目录中创建一个新文件 rules.yml,如下所示:

$ sudo nano /opt/prometheus/rules.yml

现在,在 rules.yml 文件中输入以下行。

groups:
 - name: test
   rules:
   - alert: InstanceDown
     expr: up == 0
     for: 1m

完成后,按 + X,然后按 Y 和 保存 rules.yml文件。

在这里,当目标未运行或 Prometheus 无法访问(即 up == 0)一分钟(1m)时,将触发警报 InstanceDown >)。

现在,使用nano文本编辑器打开Prometheus配置文件/opt/prometheus/prometheus.yml,如下所示:

$ sudo nano /opt/prometheus/prometheus.yml

在 prometheus.yml 配置文件的 rule_files 部分中添加 rules.yml 文件,如下面的屏幕截图所示。

prometheus.yml 文件的另一个重要选项是evaluation_interval。 Prometheus 将在每个 evaluation_interval 时间检查是否有规则匹配。默认值为 15 秒(15 秒)。因此,rules.yml 文件中的警报规则将每 15 秒检查一次。

完成后,按 + X,然后按 Y 和 保存 prometheus.yml< 文件。

为了使更改生效,请重新启动 prometheus 服务,如下所示:

$ sudo systemctl restart prometheus.service

现在,从您最喜欢的网络浏览器导航到 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,如下所示:

$ sudo nano /opt/alertmanager/alertmanager.yml

要添加新的 Gmail 接收器,请在 alertmanager.yml 文件的 receivers 部分中输入以下行,如下面的屏幕截图所示。

- name: 'gmail'
  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>'

注意:请务必将 替换为您的 Google 帐户的用户名(电子邮件中 @ 部分之前的部分)和 使用您之前生成的应用程序密码。

然后,将警报管理器接收器设置为gmail (您刚刚创建的接收器),如下面的屏幕截图所示。

完成后,按 + X,然后按 Y 和 保存alertmanager.yml< 配置文件。

从现在开始,警报管理器将使用 gmail 接收器。

repeat_interval 也是一个重要的警报管理器选项。默认情况下,repeat_interval 设置为 1h(1 小时)。如果警报管理器已成功通过您的 Gmail 帐户向您发送一封电子邮件,它将等待一个小时,然后再向您发送另一封电子邮件。如果您不想频繁收到电子邮件,可以增加它。

现在,重新启动 alertmanagersystemd 服务以使更改生效,如下所示:

$ sudo systemctl restart alertmanager.service

您的 Gmail 帐户很快就会收到一封电子邮件,如下面的屏幕截图所示。

您之前已经停止了 node_exporter ,还记得吗?

警报管理器电子邮件传送问题故障排除:

您可以使用以下命令监控警报管理器电子邮件传送问题:

$ sudo journalctl --follow --no-pager --boot --unit alertmanager.service

应显示 alertmanager systemd 服务日志,如下面的屏幕截图所示。

如果警报管理器无法将电子邮件发送到您的电子邮件地址,您应该能够在此处找到失败的原因。

下面的屏幕截图显示了电子邮件发送失败的示例。如果您阅读日志消息,您应该能够知道由于密码不正确而导致传送失败。

结论:

在本文中,我向您展示了如何在 Ubuntu 20.04 LTS 上安装警报管理器。我还向您展示了如何配置警报管理器和 Prometheus,以便在 Prometheus 目标关闭时向您的 Gmail 帐户发送电子邮件通知。

参考:

  1. GitHub – prometheus/alertmanager: 普罗米修斯警报管理器

  2. 集成|普罗米修斯

©2015-2025 艾丽卡 support@alaica.com