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 }}
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑