kube-prometheus 配置告警规则和钉钉告警
再查看它的详细信息,kubectl -n monitoring describe prometheus k8s,需要关注的点是 Rule Selector,它也是通过 label 去关联 prometheusRule 告警规则的。部署的版本是 v0.13.0。先使用 kubectl -n monitoring get promtheus,查看 prometheus 这个自定义资源类型的名字。有多个
查看规则选择器
在部署 kube-prometheus 时候,manifests/setup 目录下定义资源类型包括 prometheusRule,也就是告警规则配置文件。这里部署的版本是 v0.13.0。
先使用 kubectl -n monitoring get promtheus,查看 prometheus 这个自定义资源类型的名字,这个是 prometheus 主配置文件。
再查看它的详细信息,kubectl -n monitoring describe prometheus k8s,需要关注的点是 Rule Selector,它也是通过 label 去关联 prometheusRule 告警规则的。
v0.13.0 版本的 kube-prometheus 默认没有选择标签。他会从 monitoring 这个 namespace 去获取 prometheusRule 告警规则。
编写告警文件
$ cat prometheus-rules.yaml
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
#labels: # 没有 ruleSelect,不需要填写 label
# prometheus: k8s
# role: alert-rules
name: prometheus-k8s-rules
namespace: monitoring
spec:
groups:
- name: 主机状态-监控告警
rules:
- alert: 节点内存
expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)))* 100 > 85
for: 1m
labels:
severity: warning
annotations:
summary: "内存使用率过高!"
description: "节点{{$labels.instance}} 内存使用大于85%(目前使用:{{$value}}%)"
- alert: 节点TCP会话
expr: node_netstat_Tcp_CurrEstab > 1000
for: 1m
labels:
severity: warning
annotations:
summary: "TCP_ESTABLISHED过高!"
description: "{{$labels.instance }} TCP_ESTABLISHED大于1000%(目前使用:{{$value}}%)"
- alert: 节点磁盘容量
expr: max((node_filesystem_size_bytes{fstype=~"ext.?|xfs"}-node_filesystem_free_bytes{fstype=~"ext.?|xfs"}) *100/(node_filesystem_avail_bytes {fstype=~"ext.?|xfs"}+(node_filesystem_size_bytes{fstype=~"ext.?|xfs"}-node_filesystem_free_bytes{fstype=~"ext.?|xfs"})))by(instance) > 80
for: 1m
labels:
severity: warning
annotations:
summary: "节点磁盘分区使用率过高!"
description: "{{$labels.instance }} 磁盘分区使用大于80%(目前使用:{{$value}}%)"
- alert: 节点CPU
expr: (100 - (avg by (instance) (irate(node_cpu_seconds_total{job=~".*",mode="idle"}[5m])) * 100)) > 85
for: 1m
labels:
severity: warning
annotations:
summary: "节点CPU使用率过高!"
description: "{{$labels.instance }} CPU使用率大于80%(目前使用:{{$value}}%)"
有多个告警规则,你可以在上面文件添加其他的告警组或者编写其他的 PrometheusRule 文件。
创建该 规则 文件,
kubectl create -f prometheus-rules.yaml
查看 prometheus 的 Alerts,可以看见我们创建的告警规则
部署 钉钉 插件
v0.3.0 版本的钉钉插件配置模板有问题,部署 v2.1.0 版本的钉钉插件查看这个文档。
kubectl create -f dingtalk.yaml,你只需要修改下面的 token。
~ cat dingtalk.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: dingtalk
name: webhook-dingtalk
namespace: monitoring
spec:
replicas: 1
template:
metadata:
labels:
run: dingtalk
spec:
containers:
- name: dingtalk
image: timonwong/prometheus-webhook-dingtalk:v0.3.0 # 建议使用此版本的镜像
imagePullPolicy: IfNotPresent
# 设置钉钉群聊自定义机器人后,使用实际 access_token 替换下面 xxxxxx部分
args:
- --ding.profile=webhook1=https://oapi.dingtalk.com/robot/send?access_token=你的token
ports:
- containerPort: 8060
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
labels:
run: dingtalk
name: webhook-dingtalk
namespace: monitoring
spec:
ports:
- port: 8060
protocol: TCP
targetPort: 8060
selector:
run: dingtalk
sessionAffinity: None
编写 alertManager 的配置文件
~ cat alertmanager.yaml
global:
resolve_timeout: 5m
wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
wechat_api_secret: '*****'
wechat_api_corp_id: '*******'
smtp_smarthost: 'smtp.163.com:25'
smtp_from: '你的邮箱'
smtp_auth_username: '邮箱用户名'
smtp_auth_password: '密码或授权码'
smtp_require_tls: false
route:
group_by: ['alertname','job']
group_wait: 10s
group_interval: 10s
repeat_interval: 12h
receiver: 'wechat'
routes:
- match:
job: 'prometheus'
receiver: 'wechat'
receivers:
- name: 'email'
email_configs:
- to: '邮件接收人'
- name: 'wechat'
wechat_configs:
- send_resolved: true
to_party: '2'
agent_id: '1'
- name: 'webhook'
webhook_configs:
# 和插件不同 namespace 请填写 http://webhook-dingtalk.monitoring.svc.cluster.local:8060/dingtalk/webhook1/send
- url: 'http://webhook-dingtalk:8060/dingtalk/webhook1/send'
send_resolved: true
先将之前的 secret 对象删除
$ kubectl delete secret alertmanager-main -n monitoring
secret "alertmanager-main" deleted
创建新的secret对象
$ kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring
secret "alertmanager-main" created
kube-prometheus 配置告警规则和钉钉告警已完成
更多推荐
所有评论(0)