使用AlertManager配置Prometheus电子邮件警报

在本教程中,您将学习如何使用AlertManager配置Prometheus电子邮件警报。 警报管理器 用于处理由客户端应用程序(例如Prometheus服务器)发送的警报。它负责将重复数据删除,分组和路由到正确的接收者集成,例如电子邮件,PagerDuty或OpsGenie。它还负责沉默和禁止警报。

使用AlertManager配置Prometheus电子邮件警报

在之前的指南中,我们学习了如何使用Prometheus和Grafana监视SSL / TLS证书的有效期。

我们将Telegraf与Prometheus集成了SSL / TLS证书。

从上面的屏幕截图中,您可以看到 2591897 秒,相当于 ~30 days (a month) 证书过期之前。

在这段时间里,人们可能会忘记SSL / TLS证书已过期,因此可能会忘记更新证书。这就是为什么配置Prometheus电子邮件警报很重要的原因,以便在需要几天的时间进行证书续订时,可以通过电子邮件通知您。

因此,假设您已经启动并运行了Prometheus,如何使用AlertManager配置Prometheus电子邮件警报?

因此,打开Prometheus配置文件并设置alertmanager配置,Promtheus警报规则文件如下所示;

vim /etc/prometheus/prometheus.yml

相应地更新下面的行;

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - localhost:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "alert_rules.yml"

没有注释行,这就是我们的Prometheus配置文件的样子;

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - localhost:9093
rule_files:
   - "alert_rules.yml"
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'SSL/TLS Certs'
    static_configs:
    - targets: ['192.168.59.12:9273']

保存并退出配置文件。

创建普罗米修斯警报规则

“警报规则使您可以基于Prometheus表达式语言表达式定义警报条件,并将有关触发警报的通知发送到外部服务。 只要警报表达式在给定的时间点产生一个或多个矢量元素,警报就被视为对这些元素的“标签集”有效。

在我们的配置文件中,我们将Prometheus规则文件定义为 alert_rules.yml。该文件应位于Prometheus配置目录中, /etc/prometheus

因此,创建规则文件,其内容类似于下面的内容;

vim /etc/prometheus/alert_rules.yml

请注意,在此示例中,我们将创建规则以在SSL / TLS证书将在几天后到期时向我们发出警报。

如上所示,我们有一个证书,该证书将在未来30天内进行续订。为了简化此演示,我们将创建一个规则,以在30天或更短的时间内进行证书更新时发出警报。

groups:
- name: alert_rules
  rules:
  - alert: SSL_TLS_Cert_Expiry
    expr: x509_cert_expiry{job="SSL/TLS Certs"} <= 2592000 
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: SSL/TLS Certificate Expiry

已经解释了各种设置值 这里

保存并退出文件。

检查规则文件是否有效;

promtool check rules /etc/prometheus/alert_rules.yml
Checking /etc/prometheus/alert_rules.yml
  SUCCESS: 1 rules found

如果您在Prometheus Web界面的“规则”页面上进行检查;

使用AlertManager配置Prometheus电子邮件警报

安装和配置AlertManager

安装AlertManager

可以使用可从Prometheus下载的预编译二进制文件安装AlertManager。 下载部分

因此,在您可以安装AlertManager之前;

创建AlertManager系统用户和组,如下所示;

useradd -M -r -s /bin/false alertmanager

接下来,导航到下载部分,并获取最新版本的AlertManager。您只需使用 get 下载。截至撰写本文时,当前发行版本是0.21.0。

VER=0.21.0
wget https://github.com/prometheus/alertmanager/releases/download/v$VER/alertmanager-$VER.linux-amd64.tar.gz

提取下载的二进制文件;

tar xzf alertmanager-0.21.0.linux-amd64.tar.gz

复制AlertManager二进制文件, alertmanageramtool 到二进制目录 /usr/local/bin/

cp alertmanager-0.21.0.linux-amd64/{alertmanager,amtool} /usr/local/bin/

接下来,为AlertManager创建一个配置目录,并将YAML配置复制到该目录;

cp alertmanager-0.21.0.linux-amd64/alertmanager.yml /etc/alertmanager/

为上面创建的alertmanager用户设置AlertManager配置目录和二进制文件的所有权;

chown alertmanager: /etc/alertmanager/alertmanager.yml /usr/local/bin/{alertmanager,amtool}

配置AlertManager

在此设置中,我们将通过电子邮件发送警报,在这种情况下,我们将使用Gmail中继。

因此,如下配置AlertManager;

vim /etc/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 24h
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '[email protected]'
    from: '[email protected]'
    smarthost: smtp.gmail.com:587
    auth_username: '[email protected]'
    auth_identity: '[email protected]'
    auth_password: 'password'

保存并退出配置文件。确保正确设置电子邮件设置。

有关配置的更多信息 配置 页面和 git回购 页。

检查Alertmanager配置文件以对其进行验证。

amtool check-config /etc/alertmanager/alertmanager.yml
Checking '/etc/alertmanager/alertmanager.yml'  SUCCESS
Found:
 - global config
 - route
 - 0 inhibit rules
 - 1 receivers
 - 0 templates

运行AlertManager

您可以通过执行以下命令以独立模式运行Alertmanager。

alertmanager --config.file /etc/alertmanager/alertmanager.yml

记住,我们将Prometheus设置为通过以下方式连接到Alertmanager localhost:9093,因此请更换 x.x.x.x 使用正确的地址。

将AlertManager作为服务运行;

cat > /etc/systemd/system/alertmanager.service << 'EOL'
[Unit]
Description=AlertManager Server Service
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/alertmanager --config.file /etc/alertmanager/alertmanager.yml

[Install]
WantedBy=multi-user.target
EOL

有关其他选项,请咨询 /usr/local/bin/alertmanager --help

重新加载系统配置并启动Alertmanager;

systemctl daemon-reload
systemctl enable --now alertmanager

检查状态;

systemctl status alertmanager
● alertmanager.service - AlertManager Server Service
   Loaded: loaded (/etc/systemd/system/alertmanager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-04-10 23:16:25 EAT; 1s ago
 Main PID: 3959 (alertmanager)
    Tasks: 8 (limit: 2359)
   Memory: 13.5M
   CGroup: /system.slice/alertmanager.service
           └─3959 /usr/local/bin/alertmanager --config.file /etc/alertmanager/alertmanager.yml --web.external-url=http://localhost:9093

Apr 10 23:16:25 debian systemd[1]: Started AlertManager Server Service.
...
...
Apr 10 23:16:25 debian alertmanager[3959]: level=info ts=2021-04-10T20:16:25.745Z caller=main.go:485 msg=Listening address=:9093

检查Prometheus警报页面;

使用AlertManager配置Prometheus电子邮件警报

还要检查您的邮件;

使用AlertManager配置Prometheus电子邮件警报

您可以进一步自定义电子邮件模板。

您还可以在Alertmanager中查看警报, http:// xxxx:9093 / alerts;

使用AlertManager配置Prometheus电子邮件警报

这就是您可以使用AlertManager配置Prometheus电子邮件警报的方法。

进一步阅读

AlertManager概述

其他教程

使用Nagios监控SSL / TLS证书到期

使用Prometheus Node Exporter监视Linux系统指标

使用Prometheus和Grafana监控Gitlab指标

使用Prometheus和Grafana监控OpenVPN连接

在Ubuntu 20.04上安装OpenNMS网络监控工具

Sidebar