[转帖]AlertManager 配置邮箱告警

alertmanager,配置,邮箱,告警 · 浏览次数 : 0

小编点评

**四、发送告警信息进行测试** **5.1 模拟触发告警** **5.2 Prometheus 中添加 AlertManager 地址** **5.3 使 Prometheus 重新加载配置** **六、观察告警流程是否正常** **6.1 观察 Prometheus 告警规则状态打开 Prometheus 的 Alerts 界面** **6.2 观察是否成功接收到告警邮件然后我们等待一小段时间,观察是否可以收到如下样式的告警邮件:** **如果成果收到该邮件,则说明 Prometheus 和 AlertManager 邮件配置没有问题,否则需要自行验证下哪部分没有执行成功。**

正文

http://www.mydlq.club/article/126/

 

文章目录

  !版权声明:本博客内容均为原创,每篇博文作为知识积累,写博不易,转载请注明出处。


系统环境:

  • AlertManager 版本: 0.24.0
  • Prometheus 版本: 2.35.0

参考地址:

示例地址:


系列文章目录


在之前的文章中写过一篇 《Kubernetes 部署告警工具 AlertManager》 的文章,介绍过 AlertManager 是一个专门用于实现告警的工具,可以实现接收 Prometheus 或其它应用发出的告警信息,并且支持多种告警方式,比如 邮件企业微信SlackWebHook 等,而今天就介绍下如何实现通过 AlertManager 发送告警邮件。

配置 AlertManager 发送告警邮件之前,需要提前创建发送告警的 email 模板 (非必须),模板文件中的样式和内容就是我们收到的告警邮件的样式和内容。这里本人将在目录 /etc/alertmanager 下创建邮箱模板文件 email.tmpl,命令如下:

$ vi /etc/alertmanager/email.tmpl
 
BASH

写入如下邮件模板内容:

{{ define "email.to" }}xxxxxx@163.com{{ end }}
{{ define "email.title" }}来自超级小豆丁的测试告警{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
<p>==========<strong>告警通知</strong>==========</p>
<strong>告警程序:</strong> prometheus_alert<br>
<strong>告警级别:</strong> {{ .Labels.severity }}<br>
<strong>告警类型:</strong> {{ .Labels.alertname }}<br>
<strong>告警实例:</strong> {{ .Labels.instance }}<br>
<strong>告警信息:</strong> {{ .Annotations.summary }}<br>
<strong>告警描述:</strong> {{ .Annotations.description }}<br>
<strong>当前状态:</strong> {{ .Status }}<br>
<strong>触发时间:</strong> {{ .StartsAt.Format "2006-01-02 15:04:05" }}<br>
<strong>监控界面地址:</strong> <a href="{{ .GeneratorURL }}">点击跳转</a><br>
{{ end }}
{{ end }}
 
TMPL

接下来将在 AlertManager 配置文件中,添加邮箱告警参数,并且使用上面配置的告警邮箱模板,AlertManager 配置文件的内容如下:

# 全局配置
global:
  ## 在没有报警的情况下声明为已解决的时间
  resolve_timeout: 5m
  ## ===配置邮箱===
  ## 配置邮箱 SMTP 服务器地址和端口;
  smtp_smarthost: 'smtp.163.com:25'
  ## 配置发件人邮箱
  smtp_from: 'xxxxxx@163.com'
  ## 配置发件人邮箱账户
  smtp_auth_username: 'xxxxxx@163.com'
  ## 配置发件人邮箱密码 (这里指的是邮箱授权码,不是登录密码)
  smtp_auth_password: 'ABCDEFG***'
  ## 配置是否使用 TLS 加密
  smtp_require_tls: false

# 自定义邮件通知模板
templates:
  - '/etc/alertmanager/*.tmpl'

# 告警路由配置
route:
  ## 配置用于分组的标签
  group_by: ['alertname', 'cluster']
  ## 配置同一组告警等待时间。
  ## 用于配置接收到某组中的告警信息后,并不会立即发出告警信息,
  ## 而是等待指定时间,如果有相同组的告警信息,则一起发送告警
  group_wait: 30s
  ## 两组告警的间隔时间
  group_interval: 10m
  ## 重复告警的间隔时间,减少相同邮件的发送频率。
  ## 如果一个报警信息已经发送成功了,等待 repeat_interval 时间来重新发送他们
  ## 但是如果告警在 resolve_timeout 时间内没有重复发送,表示问题已经解决,则
  ## 到 repeat_interval 时间后就不会重新发送
  repeat_interval: 30m
  ## 配置默认接收者,如果一个报警没有被一个 route 匹配,则发送给默认的接收器
  receiver: 'email'
  ## 配置指定组的消息由对应哪个接收者进行处理
  routes:
  - receiver: 'email'
    group_wait: 30s
    ### 配置匹配标签,只有匹配的标签才会使用当前配置中指定的接收者进行处理
    match:
      alertname: email-test

# 告警接收者配置(大部分参数值都是引入模板中定义的变量)
receivers:
- name: 'email'
  email_configs:
    ## 设置接收告警的邮箱,这里既可以直接写接收者邮箱,也可以引入模板中定义的变量
  - to: '{{ template "email.to" }}'
    ## 设置邮箱标题
    headers: { Subject: '{{ template "email.title" }}【告警状态: {{ .Status }}】' }
    ## 设置邮箱内容
    html: '{{ template "email.to.html" .}}'
    ## 是否通知已解决的告警
    send_resolved: true
 
YAML

为了使 AlertManager 邮箱配置生效,我们可以使用 curl 命令执行 AlertManager 的重新加载配置接口 /-/reload,使 AlertManager 重新加载配置文件,命令如下:

$ curl -XPOST http://192.168.2.11:30903/-/reload
 
BASH

注: 本人 AlertManager 地址为 http://192.168.2.11:30903

到此 AlertManager 的配置邮箱告警完成,接下来要进行测试,验证 AlertMnager 中的配置是否可以正常发送告警邮件。

为了方便测试 AlertManager 是否可以正常发送邮箱邮件,这里本人选择直接调用 AlertManager 中的发送告警接口,模拟发生告警信息,这样就可以直接触发 AlertManager 发生告警邮件。

如下内容,里面是自定义的 JSON 格式的告警请求数据,需要我们在 Bash 中执行下面命令:

data='[
  {
    "labels": {
      "alertname": "alert-test",
      "instance": "test-service",
      "job": "test-job",
      "severity": "page"
    },
    "annotations": {
      "summary": "测试一下",
      "description": "测试告警邮件."
    },
    "generatorURL": "http://www.mydlq.club"
  }
]'
 
BASH

然后使用 curl 工具,执行 POST 请求,调用 AlertManager 告警 API 接口来触发告警,操作如下:

$ curl -H "Content-Type:application/json" \
  -X POST \
  -d "$data" \
  http://192.168.2.11:30903/api/v2/alerts
 
BASH

等到上面 curl 命令触发告警成功后,等待一小段时间,观察是否接收到如下样式的告警邮件内容:

如果接收到该告警邮件,则说明 AlertManager 配置的告警邮箱参数没有问题,并且在配置的 route.repeat_interval 时间内 (本人上面 AlertManager 配置的是 5 分钟) 如果没有再次发生告警信息,就会触发告警恢复,同样也会发送告警恢复的邮件进行通知,接收到的邮件内容如下:

如果通过了上面的测试,那么接下来就需要在 Prometheus 中去配置告警规则了。Prometheus 告警规则主要是用于支持用户自定义配置触发告警的条件,满足条件后 Prometheus 就会调用 AlertManager 告警接口触发告警,然后通过 AlertManager 中的告警配置发送指定类型的告警。

/etc/prometheus 文件夹下创建 Prometheus 告警规则文件 email-rules.yaml,命令如下:

$ vi /etc/prometheus/email-rules.yaml
 
BASH

写入如下告警规则内容:

## 告警规则配置如下,其中告警条件 up > -1 是必然满足的,
## 必定会触发 Prometheus 告警状态为 Firing。
groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up > -1
    for: 1m
    labels:
      severity: page
      ## 配置用于分组的标签
      alertname: email-test
    annotations:
      description: '{{ $labels.instance }} 实例的 {{ $labels.job }} 任务宕机已经超过 1 分钟.'
      summary: '实例 {{ $labels.instance }} 宕机'
 
YAML

接下来需要在 Prometheus 配置文件中添加 AlertManager 地址,以及添加 Prometheus 告警规则文件地址,Prometheus 配置文件中待添加的内容如下:

############ 添加配置 AlertManager 服务器地址 ###################
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["http://192.168.2.11:30903"] 

############ 指定告警规则文件路径位置 ###################
rule_files:
- /etc/prometheus/*-rule.yml
 
YAML

接下来就需要使新修改的 Prometheus 配置文件生效,有两种方式:

  • (1)、调用 Prometheus 的管理接口 /-/reload,使 Prometheus 重新加载配置;
  • (2)、直接重启 Prometheus 应用,使其重新加载配置文件;

第一种方式需要 Prometheus 启动时添加参数 --web.enable-lifecycle 参数,才可以调用 Prometheus 的重加载配置接口重新加载配置,如果满足则可用执行如下命令:

$ curl -XPOST http://192.168.2.11:30900/-/reload
 
BASH

当然,如果启用 Prometheus 时没有添加该参数,则必须重启 Prometheus 才能使其重新加载配置。等到配置生效后,接下来我们需要打开 Prometheus UI 界面,观察告警规则状态。

打开 Prometheus 的 Alerts 界面,可以观察到告警信息已经触发,如下图所示:

然后我们等待一小段时间,观察是否可以收到如下样式的告警邮件:

如果成果收到该邮件,则说明 Prometheus 和 AlertManager 邮件配置没有问题,否则需要自行验证下哪部分没有执行成功。

---END---

与[转帖]AlertManager 配置邮箱告警相似的内容:

[转帖]AlertManager 配置邮箱告警

http://www.mydlq.club/article/126/ 2022-12-02 13:17:00KUBERNETESPROMETHEUSALERTMANAGER 文章目录 一、邮箱告警说明 二、创建邮箱模板文件 三、AlertManager 添加邮箱告警配置 3.1 AlertManag

[转帖]验证Prometheus alertmanager邮件发送

https://www.cnblogs.com/charlieroro/p/11009493.html 新环境上配置alertmanager时出现了“Client was not authenticated to send anonymous mail during MAIL FROM”错误,但老环

[转帖]Alertmanager 部署配置

https://www.cnblogs.com/winstom/p/11940570.html 目录 前言 源码安装 配置 启动 配置prometheus监控Alertmanager 修改prometheus配置 重新加载配置文件 配置测试告警 修改prometheus配置 重新加载配置文件 测试触

[转帖]alertmanager的使用

https://www.jianshu.com/p/654d59325550 一、Alertanager的安装 1、下载 下载altermanager 2、安装 # 不同的平台下载不同的安装包 wget https://github.com/prometheus/alertmanager/relea

[转帖]部署Alertmanager

https://flashcat.cloud/docs/content/flashcat-monitor/prometheus/alert/manager-install/ Alertmanager和Prometheus Server一样均采用Golang实现,并且没有第三方依赖。一般来说我们可以通

[转帖]Promethues + Grafana + AlertManager使用总结

Prometheus是一个开源监控报警系统和时序列数据库,通常会使用Grafana来美化数据展示。 1|01. 监控系统基础架 1|11.1核心组件 Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。 exporters ,数据采

[转帖]简单聊聊运维监控的其他用途

https://www.cnblogs.com/charlieroro/p/16434344.html 说到监控,一般都会聊到这三个基本维度:metrics、log和tracing,以及这几种常用的工具:Prometheus+grafana+alertmanager、ELK、jaeger。 监控通常

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、