當(dāng)配置完監(jiān)控項(xiàng)以后蓝撇,需要對(duì)監(jiān)控項(xiàng)配置報(bào)警規(guī)則秩命。
報(bào)警規(guī)則在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 隨機(jī)數(shù)是: ({{ $value }}).'
summary: 'test flask'
expr: sum(connect) < 5
labels:
serverity: 'critical'
instance: '192.168.1.103:5000'
這個(gè)rule.yaml 文件里 expr 表示 connect 這個(gè)項(xiàng)的數(shù)值小于5 就報(bào)警。
現(xiàn)在規(guī)則有了涮拗,還需要配置企業(yè)微信報(bào)警翩肌。
在prometheus 是不包含報(bào)警系統(tǒng)的,它的報(bào)警系統(tǒng)是alertmanager 這個(gè)服務(wù)岸晦。本身alertmanager也支持企業(yè)微信報(bào)警api欧啤。我們需要修改alertmanager的配置文件和生成報(bào)警模版
在prometheus-operator里alertmanager配置文件被抽象成了Secret 資源類型。
我們可以先用一些命令查看默認(rèn)配置文件
kubectl get Secret alertmanager-prometheus-operator-157751-alertmanager -ojson | jq -r '.data["alertmanager.yaml"]' | base64 -d
如果沒有安裝jq启上。就需要兩個(gè)步
1邢隧、kubectl get Secret alertmanager-prometheus-operator-157751-alertmanager -o yaml
執(zhí)行后會(huì)復(fù)制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: '企業(yè)微信密鑰'
wechat_api_corp_id: '企業(yè)id'
templates:
- "*.tmpl"
receivers:
- name: "wechat"
wechat_configs:
- send_resolved: true
agent_id: '1000002'
to_user: '@all'
corp_id: '企業(yè)id'
api_secret: '企業(yè)微信密鑰'
- name: "email"
email_configs:
- to: '接受者郵箱地址'
send_resolved: true
route:
group_by:
- job
group_interval: 5m
group_wait: 30s
receiver: "wechat"
repeat_interval: 12h
微信報(bào)警模版
{{ define "wechat.default.message" }}
{{ range .Alerts }}
========start=========
告警程序: prometheus_alert
告警級(jí)別: {{ .Labels.serverity }}
告警類型: {{ .Labels.alertname }}
故障主機(jī): {{ .Labels.instance }}
告警主題: {{ .Annotations.summary }}
告警詳情: {{ .Annotations.description }}
觸發(fā)時(shí)間: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
=========end===========
{{ end }}
{{ end }}
上面的文件保存成 alertmanager.yaml
模版文件保存成 wechat.tmpl
先刪除alertmanager 默認(rèn)配置文件
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 就是郵件報(bào)警了倒慧。
我不知道怎么配置 微信、郵件同時(shí)發(fā)報(bào)警包券。???♂?
再研究研究纫谅。