当配置完监控项以后,需要对监控项配置报警规则。
报警规则在prometheus-operator被抽象成PrometheusRule类型资源
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
app: prometheus-operator
release: prometheus-operator-1577513747
name: prometheus-operator-flask
namespace: default
spec:
groups:
- name: flask
rules:
- alert: flask random number
annotations:
description: 'flask 随机数是: ({{ $value }}).'
summary: 'test flask'
expr: sum(connect) < 5
labels:
serverity: 'critical'
instance: '192.168.1.103:5000'
这个rule.yaml 文件里 expr 表示 connect 这个项的数值小于5 就报警。
现在规则有了,还需要配置企业微信报警。
在prometheus 是不包含报警系统的,它的报警系统是alertmanager 这个服务。本身alertmanager也支持企业微信报警api。我们需要修改alertmanager的配置文件和生成报警模版
在prometheus-operator里alertmanager配置文件被抽象成了Secret 资源类型。
我们可以先用一些命令查看默认配置文件
kubectl get Secret alertmanager-prometheus-operator-157751-alertmanager -ojson | jq -r '.data["alertmanager.yaml"]' | base64 -d
如果没有安装jq。就需要两个步
1、kubectl get Secret alertmanager-prometheus-operator-157751-alertmanager -o yaml
执行后会复制data下的alertmanager.yaml 文件的base64编码
2、echo 'ICB3ZWNoYXRfYXBpX3NlY3XXXXXXXXXXX' | base64 -d
global:
resolve_timeout: 5m
smtp_smarthost: 'smtp.163.com:25'
smtp_from: 'xxx@163.com'
smtp_auth_username: '邮箱用户名'
smtp_auth_password: '邮箱密码'
smtp_hello: '163.com'
smtp_require_tls: false
wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
wechat_api_secret: '企业微信密钥'
wechat_api_corp_id: '企业id'
templates:
- "*.tmpl"
receivers:
- name: "wechat"
wechat_configs:
- send_resolved: true
agent_id: '1000002'
to_user: '@all'
corp_id: '企业id'
api_secret: '企业微信密钥'
- name: "email"
email_configs:
- to: '接受者邮箱地址'
send_resolved: true
route:
group_by:
- job
group_interval: 5m
group_wait: 30s
receiver: "wechat"
repeat_interval: 12h
微信报警模版
{{ define "wechat.default.message" }}
{{ range .Alerts }}
========start=========
告警程序: prometheus_alert
告警级别: {{ .Labels.serverity }}
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
=========end===========
{{ end }}
{{ end }}
上面的文件保存成 alertmanager.yaml
模版文件保存成 wechat.tmpl
先删除alertmanager 默认配置文件
kubectl delete secret alertmanager-prometheus-operator-157751-alertmanager
然后添加新配置
kubectl create secret generic alertmanager-prometheus-operator-157751-alertmanager --from-file=alertmanager.yaml --from-file=wechat.tmpl
这就完活了。
receiver: "wechat" 这里 改成email 就是邮件报警了。
我不知道怎么配置 微信、邮件同时发报警。🤷♂️
再研究研究。