163邮箱
可用通过邮件方式进行告警通知的发送,接着上篇文档,我们配置发送邮件告警方式。
1. 设置163邮箱
发送邮件,需要smtp邮件服务器,首先需要对网易邮箱进行设置。
首先登陆163邮箱,进入邮箱中心设置。
然后开启POP3/SMTP服务,这里需要扫描二维码发送短信验证。
开通成功后,会显示一个授权密码,Alertmanager发送邮件,需要使用这个密码,而不是163邮箱的登录密码。
2. alertmanager.yml配置文件添加邮件通知
global中添加smtp相关配置。
# 全局配置,包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。
global:
# 告警超时时间
resolve_timeout: 5m
# 发送者邮箱地址
smtp_from: 'xx@163.com'
# 邮箱smtp服务器地址及端口
smtp_smarthost: 'smtp.163.com:25'
# 发送者邮箱账号
smtp_auth_username: 'xx@163.com'
# 发送者邮箱密码,这里填入第一步中获取的授权码
smtp_auth_password: 'wWIXMAZCNBMW'
# 是否使用tls
smtp_require_tls: false
smtp_hello: '163.com'
# 路由配置,设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。
route:
# 用于将传入警报分组在一起的标签。
# 基于告警中包含的标签,如果满足group_by中定义标签名称,那么这些告警将会合并为一个通知发送给接收器。
group_by: ['alertname']
# 发送通知的初始等待时间
group_wait: 30s
# 在发送有关新警报的通知之前需要等待多长时间
group_interval: 5m
# 如果已发送通知,则在再次发送通知之前要等待多长时间,通常约3小时或更长时间
repeat_interval: 30s
# 接受者名称
receiver: '163.email'
# 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: '163.email'
email_configs:
# 配置接受邮箱地址
- to : 'xxx@163.com'
3. 测试
重启Alertmanager,查看控制台,已接收到Nacos告警通知。
查看163邮箱,发现接受到了邮件。
点看邮件,可以看到详细信息。
4. 配置邮件模板
在第三步,成功接收到了邮件,但是格式比较乱,这里可以使用邮件模板,Alertmanager 带有默认模板,可以自定义。后面的钉钉和微信都是可以自定义模板的,步骤差不多,就不赘述了。
Alertmanager 的通知模板基于Go 模板系统,具体支持哪些变量请参照官网说明。
首先我们在Alertmanager主目录下创建一个templates文件夹,用户存放模板文件,然后创建一个email.tmpl文件,写入以下内容:
{
{
define "email.html" }}
{
{
range .Alerts }}
告警程序: prometheus_alert <br>
告警级别: {
{
.Labels.severity }} 级 <br>
告警类型: {
{
.Labels.alertname }} <br>
故障主机: {
{
.Labels.instance }} <br>
告警主题: {
{
.Annotations.summary }} <br>
告警详情: {
{
.Annotations.description }} <br>
触发时间: {
{
.StartsAt.Format "2019-08-04 16:58:15" }} <br>
{
{
end }}
{
{
end }}
然后在alertmanager.yml中添加模板扫描,及邮件使用模板。
# 配置自定义模板位置
templates:
- 'templates/*.tmpl'
# 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: '163.email'
email_configs:
# 配置接受邮箱地址
- to : 'xx@163.com'
html: '{
{ template "email.html" . }}'
# 邮件主题信息
headers: {
Subject: "[WARN] 报警邮件 {
{ .CommonLabels.instance }} {
{ .CommonAnnotations.summary }}"}
重启Alertmanager,稍后查看邮件。
钉钉告警
1. 创建钉钉机器人
参考钉钉开发官网添加钉钉机器人,并记录好点前的Webhook地址。
添加机器人时的安全设置,这里选择加签,将生成的秘钥复制出来。
最后生成一个Webhook。
2. 安装prometheus-webhook-dingtalk
alertmanager的webhook集成了钉钉报警,所以他是本来就有的。但是钉钉对格式要求很严格,一会还需要使用插件进行格式转换。
prometheus-webhook-dingtalk是Prometheus AlertManager WebHooks生成钉钉通知工具。
下载系统对应的安装包。
到安装包位置,将config.yml.example重命名为config.yml,删除掉全部默认配置,添加以下内容:
targets:
ding_webhook:
# 钉钉webhook地址
url: https://oapi.dingtalk.com/robot/send?access_token=a8a5c0ecea3a027de77812df0bcc0fd0d5c73cfaebebecbd35
# 第一步中获取到的加签秘钥
secret: SEC8bd856c89e0635798828a0fa8ff1d26403df25fd925657
启动prometheus-webhook-dingtalk.exe程序,查看打印日志,可以看到图中1为Alertmanager提供了Webhook地址,2为启动端口。
3. 配置Alertmanager
修改alertmanager.yml配置文件,添加路由和接受者配置,注意url填写钉钉插件提供的webhook地址,而不是钉钉直接提供的那个webhook。
route:
#设置默认接收人
receiver: 'webhook'
#组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
group_wait: 10s
#两组告警的间隔时间
group_interval: 10s
#重复告警的间隔时间,减少相同微信告警的发送频率
repeat_interval: 30s
#采用哪个标签来作为分组依据
group_by: [alertname]
routes:
- receiver: webhook
group_wait: 10s
# 配置自定义模板位置
templates:
- 'templates/*.tmpl'
# 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: 'webhook'
webhook_configs:
# 钉钉插件提供的webhook地址
- url: http://localhost:8060/dingtalk/ding_webhook/send
#警报被解决之后是否通知
send_resolved: true
然后启动Alertmanager。关闭Nacos,然后发现成功推送了钉钉告警信息。
微信告警
1. 注册企业微信
注册地址,没有的可以随便填个公司名注册一个。
注册完成后在应用管理菜单中,点击创建应用。
添加应用信息
创建成功后,查看Secret,这里会发送到企业微信,然后再复制到电脑上来。。。。对应api_secret配置项。
2. Alertmanager添加wechat通知
注册了企业微信,添加应用之后就可以添加微信通知配置了。
官网说明中的配置如下:
企业微信官方API文档参数说明如下:
结合这些说明,添加如下配置就可以了(不要被百度那些水文误导了。。)
route:
#设置默认接收人
receiver: 'wechat'
#组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
group_wait: 10s
#两组告警的间隔时间
group_interval: 10s
#重复告警的间隔时间,减少相同微信告警的发送频率
repeat_interval: 30s
#采用哪个标签来作为分组依据
group_by: [alertname]
# 配置自定义模板位置
templates:
- 'templates/*.tmpl'
# 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
# 创建应用的 AgentId
agent_id: 100xx
# 企业 id,可以在企业微信管理后台,我的企业 - 企业 ID 查看
corp_id: 'd1f14ffea0a01a'
# 应用的 Secret
api_secret: 'ncqlL0egmjFTjFlPKKycLOvARwesqB4'
# 指定需要接收告警的用户,@all表示全部
to_user: '@all'
3. 测试
重启Alertmanager,稍等片刻,就发现手机企业微信收到了告警通知消息。。。
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: