promthus添加报警

前一文介绍了grafana的报警功能 ,经验证,目前版本的报警功能并不好用。很简单,当我想要在存活节点数<10时报警,grafana就不行了。

本文使用的是promethus官网的alertmanager,windows版的。这可没有图形化配置界面,但也配置也比较简单、合理。

先从官网下载,解压,执行alertmanager.exe就启动了。默认会启动9093端口,可在浏览器查看。




怎么让promethus关联到alertmanager?查看promethus的配置文件promethus.yml配置:

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - localhost:9093	# 指定Alertmanager 的地址
这里的地址就是刚alertmanager启动的地方,我这是同一台机器,说以是localhost

再添加一个报警文件的配置:

rule_files:
  - "alert.rules"
alert.rules文件与promethus.yml文文件在同一目录下,内容:

groups:
- name: NodeAvaliableAlert
  rules:
  - alert: 服务存活报警
    expr: up == 0
    for: 10s
    labels:
      severity: warning
    annotations:
      summary: "当前存活linux节点数({{$value}})不足,总数3"
      description: "不可用服务{{$labels.instance}}" 


alertmanager.yml的配置

global:
  resolve_timeout: 5m	# 超时,默认5min
  smtp_smarthost: 'smtp.126.com:25'	
  smtp_from: 'xx@126.com'
  smtp_auth_username: 'xx'
  smtp_auth_password: 'xx'	
  smtp_require_tls: false	# 是否使用 tls,根据环境不同,来选择开启和关闭。如果提示报错 email.loginAuth failed: 530 Must issue a STARTTLS command first,那么就需要设置为 true。着重说明一下,如果开启了 tls,提示报错 starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。
templates:	#  # 模板
  - 'D:\Java\alertmanager-0.24.0.windows-amd64\alert.tmp'
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 10m
  repeat_interval: 30m
  receiver: 'email' #receiver: 'web.hook'
  routes:
    - receiver: 'web.hook'
      match:	# 通过标签去匹配这次告警是否符合这个路由节点;也可以使用  match_re 进行正则匹配
        severity: Disaster	# 标签severity为Disaster时满足条件,使用wechat警报
receivers:
  - name: 'email'	# 警报接收者名称
    email_configs:
    - to: '{{ template "email.to"}}'  # 接收警报的email(这里是引用模板文件中定义的变量)
      html: '{{ template "email.to.html" .}}' # 发送邮件的内容(调用模板文件中的)
#      headers: { Subject: " {{ .CommonLabels.instance }} {{ .CommonAnnotations.summary }}" }	# 邮件标题,不设定使用默认的即可
      send_resolved: true		# 故障恢复后通知
    
  - name: 'web.hook'
    webhook_configs:
      - url: 'http://127.0.0.1:5001/'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

它使用的模板文件(alert.tmp)内容:

{{ define "email.from" }}xx@126.com{{ end }}
{{ define "email.to" }}xx@dingtalk.com{{ end }}
{{ define "email.to.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
<h2>@告警通知</h2>
告警程序: 服务器报警 <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt.Local.Format "2022-07-02 15:04:05" }} <br>
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
<h2>@告警恢复</h2>
告警程序: prometheus_alert <br>
故障主机: {{ .Labels.instance }}<br>
故障主题: {{ .Annotations.summary }}<br>
告警详情: {{ .Annotations.description }}<br>
告警时间: {{ .StartsAt.Local.Format "2022-07-02 15:04:05" }}<br>
恢复时间: {{ .EndsAt.Local.Format "2022-07-02 15:04:05" }}<br>
{{ end }}{{ end -}}
{{- end }}


文/程忠 浏览次数:0次   2022-07-28 10:14:49

相关阅读


评论:
点击刷新

↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑