首页 > 其他分享 >Prometheus企业微信报警配置

Prometheus企业微信报警配置

时间:2022-12-30 16:03:58浏览次数:40  
标签:alertmanager rules 微信 报警 alert Prometheus 告警 root localhost

Prometheus本身不支持告警功能,主要通过插件alertmanage来实现告警。AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户。

Prometheus触发一条告警的过程:

prometheus--->触发阈值--->超出持续时间--->alertmanager--->分组|抑制|静默--->媒体类型--->邮件|钉钉|微信等。

Prometheus企业微信报警配置_vim

实现WeChat告警-准备工作

1、访问企业微信官网(https://work.weixin.qq.com/),注册企业微信账号(不需要企业认证)。
2、登录成功后--->>应用管理--->>创建第三方应用,点击创建应用按钮 -> 填写应用信息:

Prometheus企业微信报警配置_微信_02

填写应用信息:

Prometheus企业微信报警配置_企业应用_03

部门ID:to_party 需要发送的组

Prometheus企业微信报警配置_企业应用_04

安装Alertmanager

1、下载Alertmanager

[root@localhost ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz

[root@localhost ~]# tar xf alertmanager-0.20.0.linux-amd64.tar.gz

[root@localhost ~]# mv alertmanager-0.20.0.linux-amd64 /usr/local/alertmanager

2、创建启动文件

[root@localhost ~]# vim /usr/lib/systemd/system/alertmanager.service

  1. [Unit]
  2. Description=alertmanager
  3. Documentation=https://github.com/prometheus/alertmanager
  4. After=network.target
  5. [Service]
  6. Type=simple
  7. User=root
  8. ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
  9. Restart=on-failure
  10. [Install]
  11. WantedBy=multi-user.target

3、配置alertmanager.yml文件

Alertmanager 安装目录下默认有 alertmanager.yml 配置文件,可以创建新的配置文件,在启动时指定即可。

[root@localhost ~]# cd /usr/local/alertmanager

[root@localhost alertmanager]# vim alertmanager.yml

  1. global:
  2. # 每2分钟检查一次是否恢复
  3. resolve_timeout: 2m
  4. # 自定义通知模板
  5. templates:
  6. - '/usr/local/prometheus/alertmanager/template/wechat.tmpl'
  7. # route用来设置报警的分发策略
  8. route:
  9. # 采用哪个标签来作为分组依据
  10. group_by: ['alertname']
  11. # 组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
  12. group_wait: 10s
  13. # 两组告警的间隔时间
  14. group_interval: 10s
  15. # 重复告警的间隔时间,减少相同微信告警的发送频率
  16. repeat_interval: 1h
  17. # 设置默认接收人
  18. receiver: 'wechat'
  19. routes: # 可以指定哪些组接手哪些消息
  20. - receiver: 'wechat'
  21. continue: true
  22. group_wait: 10s
  23. receivers:
  24. - name: 'wechat'
  25. wechat_configs:
  26. - corp_id: 'xxx'
  27. to_party: '2'
  28. agent_id: 'xxx'
  29. api_secret: 'xxx'
  30. send_resolved: true

参数说明:

corp_id: 企业微信账号唯一 ID, 可以在我的企业中查看。

to_party: 需要发送的组。

agent_id: 第三方企业应用的 ID,可以在自己创建的第三方企业应用详情页面查看。

api_secret: 第三方企业应用的密钥,可以在自己创建的第三方企业应用详情页面查看。

4、配置告警模板

[root@localhost alertmanager]# mkdir -p /usr/local/prometheus/alertmanager/template

[root@localhost alertmanager]# vim /usr/local/prometheus/alertmanager/template/wechat.tmpl

# 只告警,恢复后不发送消息

  1. {{ define “wechat.default.message” }}
  2. {{ range .Alerts }}
  3. ========start==========
  4. 告警程序:prometheus_alert
  5. 告警级别:{{ .Labels.severity }}
  6. 告警类型:{{ .Labels.alertname }}
  7. 故障主机: {{ .Labels.instance }}
  8. 告警主题: {{ .Annotations.summary }}
  9. 告警详情: {{ .Annotations.description }}
  10. 触发时间: {{ .StartsAt.Format “2020-4-16 15:55:36” }}
  11. ========end==========
  12. {{ end }}
  13. {{ end }}

# 带恢复告警的模版 注:需要在alertmanager.yml的wechat_configs中加上配置send_resolved: true

  1. {{ define "wechat.default.message" }}
  2. {{ range $i, $alert :=.Alerts }}
  3. ===alertmanager监控报警===
  4. 告警状态:{{ .Status }}
  5. 告警级别:{{ $alert.Labels.severity }}
  6. 告警类型:{{ $alert.Labels.alertname }}
  7. 告警应用:{{ $alert.Annotations.summary }}
  8. 故障主机: {{ $alert.Labels.instance }}
  9. 告警主题: {{ $alert.Annotations.summary }}
  10. 触发阀值:{{ $alert.Annotations.value }}
  11. 告警详情: {{ $alert.Annotations.description }}
  12. 触发时间: {{ $alert.StartsAt.Format “2020-4-16 15:55:19” }}
  13. ===========end============
  14. {{ end }}
  15. {{ end }}

5、配置告警规则

[root@localhost alertmanager]# mkdir -p /usr/local/prometheus/rules

[root@localhost alertmanager]# cd /usr/local/prometheus/rules

[root@localhost rules]# vim node.yml

  1. groups:
  2. - name: Node_Down
  3. rules:
  4. - alert: Node实例已宕机
  5. expr: up == 0
  6. for: 10s
  7. labels:
  8. user: root
  9. severity: Warning
  10. annotations:
  11. summary: "Instance {{ $labels.instance }} Down"
  12. description: "{{ $labels.instance }} of job {{ $labels.job }} has been Down."

在Prometheus.yml中指定node.yml的路径

[root@localhost rules]# vim /usr/local/prometheus/prometheus.yml

  1. global:
  2. scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  3. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  4. # scrape_timeout is set to the global default (10s).

  5. # Alertmanager configuration
  6. alerting:
  7. alertmanagers:
  8. - static_configs:
  9. - targets: ['localhost:9093']
  10. # - localhost:9093

  11. # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
  12. rule_files:
  13. - 'rules/*.yml'
  14. # - "first_rules.yml"
  15. # - "second_rules.yml"

  16. # A scrape configuration containing exactly one endpoint to scrape:
  17. # Here it's Prometheus itself.
  18. scrape_configs:
  19. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  20. - job_name: 'prometheus'
  21. static_configs:
  22. - targets: ['localhost:9100']

6、重启Prometheus服务

[root@localhost rules]# systemctl restart prometheus

7、启动Alertmanager

[root@localhost rules]# systemctl daemon-reload

[root@localhost rules]# systemctl start alertmanager

8、验证效果

此时访问prometheus管理界面可以看到如下信息:

Prometheus企业微信报警配置_vim_05

9、然后停止 node_exporter 服务,然后再看效果。

[root@localhost rules]# systemctl stop node_exporter

prometheus界面的alert可以看到告警状态。

  • 绿色表示正常。
  • 红色状态为PENDING表示alerts还没有发送至Alertmanager,因为rules里面配置了for: 10s。
  • 10秒后状态由PENDING变为FIRING,此时Prometheus才将告警发给alertmanager,在Alertmanager中可以看到有一个alert。 

Prometheus企业微信报警配置_企业应用_06Prometheus企业微信报警配置_微信_07

10、接着企业微信会收到告警信息

Prometheus企业微信报警配置_微信_08

11、再次启动node_export

[root@localhost ~]# systemctl start node_exporter

企业微信会收到恢复信息

Prometheus企业微信报警配置_微信_09

附:

CPU使用率告警规则:

  1. groups:
  2. - name: CPU
  3. rules:
  4. - alert: CPU使用率过高
  5. expr: (100 - (avg by (instance) (irate(node_cpu{mode="idle"}[5m])) * 100)) > 80
  6. for: 1m
  7. labels:
  8. severity: Warning
  9. annotations:
  10. summary: "{{ $labels.instance }} CPU使用率过高"
  11. description: "{{ $labels.instance }}: CPU使用率超过80%,当前使用率({{ $value }})."

内存使用率告警规则:

  1. groups:
  2. - name: Memory
  3. rules:
  4. - alert: 内存使用率过高
  5. expr: (node_memory_MemTotal - (node_memory_MemFree+node_memory_Buffers+node_memory_Cached )) / node_memory_MemTotal * 100 > 80
  6. for: 1m #告警持续时间,超过这个时间才会发送给alertmanager
  7. labels:
  8. severity: Warning
  9. annotations:
  10. summary: "{{ $labels.instance }} 内存使用率过高"
  11. description: "{{ $labels.instance }}:内存使用率超过80%,当前使用率({{ $value }})."

标签:alertmanager,rules,微信,报警,alert,Prometheus,告警,root,localhost
From: https://blog.51cto.com/u_12018693/5980575

相关文章

  • Prometheus钉钉报警配置
    Prometheus告警简介告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果......
  • 知更鸟Begin主题侧边栏关于本站:微信、QQ、微博、订阅按钮底色美化
    摘要使用知更鸟Begin主题的博友们会发现,小工具”关于本站”中:微信、QQ、微博和订阅4个按钮是灰白色的,很不显眼,所以今天分享一下修改这4个按钮底色的美化教程。一、代码部署......
  • 快捷指令|微信|扫一扫
    步骤 浏览器打开url输入url直接打开微信扫一扫 介绍 用到的快捷指令,复制搜索即可创建快捷指令使用-打开URL输入链接,weixin://scanqrc......
  • 使用Python制作自动推送微信消息提醒的备忘录功能
    日常工作生活中,事情一多,就会忘记一些该做未做的事情。即使有时候把事情记录在了小本本上或者手机、电脑端备忘录上,也总会有查看不及时,导致错过的尴尬。如果有一款小工具,可......
  • 飞书、钉钉、企业微信消息通知集成双因子认证,接收一次性动态密码
    使用宁盾双因子认证H5令牌的用户每次登录时要切回到企业微信、飞书、钉钉工作台中,找到H5令牌小程序,点进去看动态码。记住或复制动态码后再切回登录界面输入验证。路径合理,但......
  • 抓取搜狗微信相关公众号文章
    importrequests,re,jsonimportxmltodictfromlxmlimportetreeheaders={"User-Agent":'xxxxxxx',"Accept-Language":"xxxxxx","Host":"xxxxxx"......
  • manjaro安装微信和QQ
    在使用 yay-Sdeepin-wine-wechat过程中出现缺少依赖!deepin-udis86系统找不到这个包!下边是下载链接:https://github.com/JohnMasoner/deepin-udis86该网页又如何安装的......
  • 用手机就能打印微信资料卷子,方便省事
    对于绝大多数职场父母来说,生活都是既忙碌又充实的,因为大家不仅要处理好工作上的事情,还需要兼顾到孩子。特别是孩子上小学之后,每天班级群里都会有各种各样的资料、卷子需要......
  • 微信公众号支付
    1.微信浏览器支付 报下面的错误是微信商户号产品中心开发配置未配置域名 2.微信公众号还要配置业务域名和JS接口安全域名如果用到登录还有配置网页授权域名  ......
  • prometheus-监控系统服务的运行状态
    1.prometheus-监控系统服务的运行状态添加系统服务监控的命令/usr/local/node_exporter/node_exporter--web.config=/usr/local/node_exporter/config.yml--collect......