prometheus + alertmanager + 企业微信 报警

禁止任何形式的转载,谢谢!

需求

其实本来是想要grafana实现企业微信报警的。
但是我下载的grafana7.0.0 里面没有wechat的type,网上有自己编译的,奈何我不会go语言。
alertmanager可以直接实现wechat报警

1.安装

1.1 Prometheus

1.2 Alertmanager

1.3 企业微信

2. 环境配置

官网教程
注意是yml结构的,严格控制缩进。

2.1 Prometheus

  • prometheus.yml

去除# - localhost:9093 前的#
去除# - "first_rules.yml" 前的# 也可以改个名字

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: 
      - localhost:9093  		# alertmanager的地址:端口号,默认端口号9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
  - "testrules.yml"  			# 规则yml的地址
  • 创建testrules.yml
    官网教程
    注意要utf-8 不然无法启动
groups:
- name: test_alert
  rules:
  - alert: alert_name 			# 告警名称
    expr: up == 0     			# 告警的触发条件,参考Prometheus高级查询来设定
    for: 5s           			# 满足告警条件持续时间多久后,才会发送告警
    annotations:      			# 解析项,详细解释告警信息
      summary: "一条test报警"    # 告警的内容

2.2 Alertmanager

官网教程

  • alertmanager.yml
global:
  resolve_timeout: 5m               # 在没有报警的情况下声明为已解决的时间
  # 配置邮件发送信息
  smtp_smarthost: 'smtp.xxx.cn:465' # 发送邮件的smtp地址端口号
  smtp_from: '[email protected]'           # 发送邮件的邮箱地址
  smtp_auth_username: '[email protected]'  # 发送邮件的邮箱用户名
  smtp_auth_password: 'password'    # 发送邮件的邮箱密码
  smtp_require_tls: false
 
#报警模板 
templates:    
 - 'wechat.tmpl' 				    # 模板地址
 
#报警路由,树结构                   
route:
  group_by: ['alertname']           # 分组依据
  group_wait: 10s                   # 分组创建后的初始化等待发送时长
  group_interval: 10s               # 发送之前的等待时长
  repeat_interval: 1m               # 重复报警的间隔时长
  receiver: 'wechat'                # 优先接收组的名称
  routes:                           # route的子节点
 - receiver: mail 
    match_re:
      serverity: mail               #匹配到serverity时mail的使用邮件报警,这里的serverity是rules文件中的labels指定的

#报警接收,树结构 
receivers:
 - name: 'mail'						# 子节点 - 邮件
   email_configs:					
   - to: '[email protected]'
     send_resolved: true
 - name: 'wechat'					# 子节点 - 微信
   wechat_configs:					
   - corp_id: 'aaa'                 # corpid
     to_party: '1'                  # 组ID
     to_user: '1'				    # 用户ID
     agent_id: '1000001'            # agentid
     api_secret: 'abcd'             # corp secret
     send_resolved: true			# 告警解除后否发送通知
  • 创建wechat.tmpl
    注意要utf-8 不然无法启动
告警状态:{{   .Status }}
告警级别:{{ $alert.Labels.severity }}
告警类型:{{ $alert.Labels.alertname }}
告警应用:{{ $alert.Annotations.summary }}
告警主机:{{ $alert.Labels.instance }}
告警物理机:{{ $alert.Labels.node }}
告警详情:{{ $alert.Annotations.description }}
触发阀值:{{ $alert.Annotations.value }}
告警时间:{{ $alert.StartsAt.Format "2020-01-01 15:05:05" }}
恢复时间: {{ $alert.EndsAt.Format "2020-01-01 15:05:15" }}

3. 启动

3.1 Prometheus

启动后 浏览器 localhost:9090

3.2 Alertmanager

启动后 浏览器 localhost:9093

3.3 企业微信

前面两个都启动之后,如果服务符合报警需求(2.1 testrules.xml 中的rules的expr),企业微信会收到告警

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章