Kubernetes监控体系(12)-alertmanager配置钉钉和邮件告警
打开电脑版钉钉创建机器人
1.创建钉钉机器人
打开电脑版钉钉,创建一个群,创建自定义机器人,按如下步骤创建
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
我创建的机器人如下:
群设置-->智能群助手-->添加机器人-->自定义-->添加
机器人名称:kube-event
接收群组:钉钉报警测试
安全设置:
自定义关键词:cluster1
上面配置好之后点击完成即可,这样就会创建一个kube-event的报警机器人,创建机器人成功之后怎么查看webhook,按如下:
点击智能群助手,可以看到刚才创建的kube-event这个机器人,点击kube-event,就会进入到kube-event机器人的设置界面
出现如下内容:
机器人名称:kube-event
接受群组:钉钉报警测试
消息推送:开启
webhook:https://oapi.dingtalk.com/robot/send?access_token=9c03ff1f47b1d15a10d852398cafb84f8e81ceeb1ba557eddd8a79e5a5e5548e
安全设置:
自定义关键词:cluster1
2.安装钉钉的webhook插件,在k8s-master节点操作
wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v0.3.0/prometheus-webhook-dingtalk-0.3.0.linux-amd64.tar.gz
tar zxvf prometheus-webhook-dingtalk-0.3.0.linux-amd64.tar.gz
cd prometheus-webhook-dingtalk-0.3.0.linux-amd64
nohup ./prometheus-webhook-dingtalk --web.listen-address="0.0.0.0:8060" --ding.profile="cluster1=https://oapi.dingtalk.com/robot/send?access_token=9c03ff1f47b1d15a10d852398cafb84f8e81ceeb1ba557eddd8a79e5a5e5548e" &
cp alertmanager-cm.yaml alertmanager-cm.yaml.bak
cat >alertmanager-cm.yaml <<EOFkind: ConfigMap
apiVersion: v1
metadata:name: alertmanagernamespace: monitor-sa
data:alertmanager.yml: |-global:resolve_timeout: 1msmtp_smarthost: 'smtp.163.com:25'smtp_from: '15011572657@163.com'smtp_auth_username: '15011572657'smtp_auth_password: '1989317li'smtp_require_tls: falseroute:group_by: [alertname]group_wait: 10sgroup_interval: 10srepeat_interval: 10mreceiver: cluster1receivers:- name: cluster1webhook_configs:- url: 'http://192.168.124.16:8060/dingtalk/cluster1/send'send_resolved: trueEOF
配置alertmanager-cm.yaml文件
kubectl apply -f alertmanager-cm.yaml
kubectl apply -f prometheus-cfg.yaml
kubectl delete -f prometheus-deploy.yaml
kubectl apply -f prometheus-deploy.yaml
cat >alertmanager-cm.yaml <<EOF
kind: ConfigMap
apiVersion: v1
metadata:name: alertmanagernamespace: monitor-sa
data:alertmanager.yml: |-global:resolve_timeout: 1msmtp_smarthost: 'smtp.163.com:25'smtp_from: '15011572657@163.com'smtp_auth_username: '15011572657'smtp_auth_password: '1989317li'smtp_require_tls: falseroute:group_by: [alertname]group_wait: 10sgroup_interval: 10srepeat_interval: 10mreceiver: 'default-receiver'routes:- receiver: cluster1group_wait: 10smatch_re:severity: criticalreceivers:- name: 'default-receiver'email_configs:- to: '1980570647@qq.com'send_resolved: true - name: 'cluster1'webhook_configs:- url: 'http://192.168.124.16:8060/dingtalk/cluster1/send'send_resolved: trueinhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname']EOF
kubectl apply -f alertmanager-cm.yaml
kubectl apply -f prometheus-cfg.yaml
kubectl delete -f prometheus-deploy.yaml
kubectl apply -f prometheus-deploy.yaml
kubectl get pods -n monitor-sa 显示如下,说明pod运行正常:
prometheus-server-76d7bb949d-lf6sb 2/2 Running 0 5s
alertmanager配置参数说明
global: #全局配置
resolve_timeout: 1m #设置解析超时时间
group_by: ['alertname'] #alertmanager中的分组,选哪个标签作为分组的依据
group_wait: 10s #分组等待时间,拿到第一条告警后等待10s,如果在这个组有其他的告警一起发送出去
group_interval: 10s #各个分组发送告警的间隔时间
repeat_interval: 1h #重复告警时间,默认1小时
receiver: 'default-receiver' #默认的接收者,如果报警没有匹配到接收器,则发到这个默认的接收器上
alertmanager基于标签的告警路由处理
route:group_by: [alertname]group_wait: 10sgroup_interval: 10srepeat_interval: 10mreceiver: default-receiverreceivers:- name: 'default-receiver'email_configs:- to: '1980570xxx@qq.com'send_resolved: true在Alertmanager的配置中会定义一个基于标签匹配规则的告警路由树,以确定在接收到告警后Alertmanager需要如何对其进行处理,其中route中主要定义了告警的路由匹配规则,以及Alertmanager需要将匹配到的告警发送给哪一个receiver,如上所示:在Alertmanager配置文件中,我们只定义了一个路由,那就意味着所有由Prometheus产生的告警在发送到Alertmanager之后都会通过名为default-receiver的receiver接收,这里的default-receiver定义为一个邮箱,
在实际生产环境下,对于不同级别的告警,我们可能会不完全不同的处理方式,因此在route中,我们还可以定义更多的子Route,这些Route通过标签匹配告警的处理方式,如下所示:route:group_by: [alertname]group_wait: 10sgroup_interval: 10srepeat_interval: 10mreceiver: 'default-receiver'routes:- receiver: cluster1group_wait: 10smatch_re:severity: criticalreceivers:- name: 'default-receiver'email_configs:- to: '1980570647@qq.com'send_resolved: true - name: 'cluster1'webhook_configs:- url: 'http://192.168.124.16:8060/dingtalk/cluster1/send'send_resolved: true
路由匹配:参考https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu/alert/alert-manager-route
如果警报已经成功发送通知, 如果想设置发送告警通知之前要等待时间,则可以通过repeat_interval参数进行设置。
alertmanager告警抑制
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname']
告警抑制:
- alert: apiserver的cpu使用率大于80%
expr: rate(process_cpu_seconds_total{job=~"kubernetes-apiserver"}[1m]) * 100 > 80
for: 2s
labels:
severity: warnning
annotations:
description: "{{$labels.instance}}的{{$labels.job}}组件的cpu使用率超过80%"
- alert: apiserver的cpu使用率大于90%
expr: rate(process_cpu_seconds_total{job=~"kubernetes-apiserver"}[1m]) * 100 > 90
for: 2s
labels:
severity: critical
annotations:
description: "{{$labels.instance}}的{{$labels.job}}组件的cpu使用率超过90%"
上面的告警规则可以看到,promethues中配置两条告警规则,假如cpu达到95%,会发出两条告警,但是其中一个是多余的,我们只希望报出来一条告警,这就需要设置告警抑制
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
上面告警抑制表示,当我们既有warnning,又有critical时候,只把critical告警信息发出来,这就是告警抑制
alertmanager告警临时静默:
打开alertmanager的web ui界面
可看到有silenced(静默)和inhibited(抑制)
Prometheus基于Alertmanager实现钉钉告警
推荐 原创
XiaoMingSix2020-10-22 16:44:47©著作权
文章标签prometheusAlertmanagerWebhook文章分类监控阅读数5857
1.安装prometheus-webhook-dingtalk插件
wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v0.3.0/prometheus-webhook-dingtalk-0.3.0.linux-amd64.tar.gz
tar -zxf prometheus-webhook-dingtalk-0.3.0.linux-amd64.tar.gz -C /opt/
mv /opt/prometheus-webhook-dingtalk-0.3.0.linux-amd64 /opt/prometheus-webhook-dingtalk
2.钉钉创建机器人自定义告警关键词并获取token
选择群组—>群设置–>添加智能群助手–>添加机器人注意:选择过程中会有三种安全设置(这里我们只用第一种)
1.第一个自定义关键字是说你在以后发送的文字中必须要有这个关键字,否则发送不成功。
2.加签是一种特殊的加密方式,第一步,把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。
3.IP地址就是说你在发送时会获取你的IP地址,如果不匹配就发送不成功。这个加密的方式可以自己选择,我们选择加签。如果你想使用IP的话,可以访问https://ip.cn/
3.启动钉钉插件dingtalk
vim /etc/systemd/system/prometheus-webhook-dingtalk.service
#添加如下内容
[Unit]
Description=prometheus-webhook-dingtalk
After=network-online.target[Service]
Restart=on-failure
ExecStart=/opt/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --ding.profile=ops_dingding=自己钉钉机器人的Webhook地址[Install]
WantedBy=multi-user.target#命令行启动
systemctl daemon-reload
systemctl start prometheus-webhook-dingtalk
ss -tnl | grep 8060#测试
curl -H "Content-Type: application/json" -d '{ "version": "4", "status": "firing", "description":"description_content"}' http://localhost:8060/dingtalk/ops_dingding/send
4.配置Alertmanager
cat /opt/alertmanager/alertmanager.yml
global:#每一分钟检查一次是否恢复resolve_timeout: 1m
route:#设置默认接收人receiver: 'webhook'#组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出group_wait: 10s#两组告警的间隔时间group_interval: 10s#重复告警的间隔时间,减少相同微信告警的发送频率repeat_interval: 1h#采用哪个标签来作为分组依据group_by: [alertname]routes:- receiver: webhookgroup_wait: 10smatch:team: node
receivers:
- name: 'webhook'webhook_configs:- url: http://localhost:8060/dingtalk/ops_dingding/send #警报被解决之后是否通知
send_resolved: true#命令行启动
cd /opt/alertmanager/
./alertmanager --config.file=alertmanager.yml &
netstat -anput | grep 9093
5.关联Prometheus并配置报警规则
cat /opt/prometheus/rules/node_down.yml
groups:
- name: Node_Downrules:- alert: Node实例宕机expr: up == 0for: 10slabels:user: prometheusseverity: Warningannotations:summary: "{{ $labels.instance }} 服务宕机"description: "{{ $labels.instance }} of job {{ $labels.job }} has been Down."
修改Prometheus配置文件
cat /opt/prometheus/prometheus.yml
# 修改以下内容
# Alertmanager configuration
alerting:alertmanagers:- static_configs:
- targets: ["localhost:9093"]
rule_files:- "/opt/prometheus/rules/node_down.yml" # 实例存活报警规则文件#重启
systemctl restart prometheus
6.测试钉钉报警功能
#关闭node_exporter
systemctl stop node_exporter
- 1.
- 2.
告警通知
恢复通知:
Kubernetes监控体系(12)-alertmanager配置钉钉和邮件告警相关推荐
- Kubernetes监控体系(11)-alertmanager安装和配置
本篇文章介绍k8s集群中部署prometheus.grafana.alertmanager,并且配置prometheus的动态.静态服务发现,实现对容器.物理节点.service.pod等资源指标监控 ...
- 三、美团大众点评CAT监控系列文章---Springboot集成CAT并实现邮件告警
文章目录 一.配置过程 二.相关的参考文档 三.系列文章 一.配置过程 登录自己的cat服务端 默认登录用户名和密码都是 catadmin添加一个监控规则: 如下面的监控规则就是说,如果在一分钟以内访 ...
- Kubernetes监控体系(二)之cAdvisor介绍
本文个人博客地址:http://www.huweihuang.com/article/kubernetes/monitoring/cadvisor-introduction/ 1. cAdvisor简 ...
- linux下ELK搭建好之后配置sentinl插件,进行邮件告警
ELK的环境搭建好之后,如何利用收集到的数据进行数据告警呢?在破解ELK之后,它本身提供一个监视器功能,配置偏向编写脚本.有一个更加方便的插件sentiel. 一.下载并安装sentinl插件 htt ...
- 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)
通过Alertmanager实现Prometheus的告警 告警配置 Prometheus本身不支持的告警功能,主要通过插件Alertmanager来实现告警.Alertmanager用于接收Prom ...
- 二、美团大众点评CAT监控系列文章---CAT监控的服务端配置
文章目录 一.服务端下载和配置 二.相关的参考文档 三. 系列文章 一.服务端下载和配置 运行环境及开发工具如下: Jdk8 ,tomcat8,windows10,itellij idea,maven ...
- Istio on ACK集成生态(2): 扩展AlertManager集成钉钉助力可观测性监控能力
阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,可以参考文档在ACK上部署使用Isito.Istio on ACK提供了丰富的监控能力,为网格中的服务收集遥测数据,其中Mixe ...
- prometheus+node_exporter+grafana+alertManager+prometheus-webhook-dingtalk实现服务器监控显示,钉钉机器人告警消息通知
1.下载prometheus安装 ① 从 https://prometheus.io/download/ 下载相应版本,安装到服务器上官网提供的是二进制版,解压就能用,不需要编译 [root@loac ...
- Prometheus普罗米修斯监控+Alertmanager预警+钉钉预警
简单实操,可直接拷贝命令执行 前提条件: centos7 10.11.7.95 关闭selinux vi /etc/sysconfig/selinuxSELINUX=disabled setenfo ...
最新文章
- angular4创建html,Angular 4 Http服务
- Android ViewStub的应用
- 甲骨文Java 14来啦!
- TextView显示html信息、在文本下面添加下划线、中划线、设置图片
- jquery获取radio值
- 微课|中学生可以这样学Python(例5.1):生成不重复的随机数
- WMS智能仓储系统成长史?
- 从仁慈的独裁者到微软打工人,Python之父和Python将走向何方?
- JAVA 中 Redis与ehcache对比与使用
- 遥感影像校正效果检测系统代码设计与实现
- 数据结构课程设计之学生宿舍信息管理系统
- android 7修改机型,Android 7.0支持机型大全
- 如何用MATLAB编写FIR维纳滤波器,最佳FIR维纳滤波器实现
- 融云即时通讯SDK集成 – 通知检查
- microsoftonenote_Microsoft OneNote 2017 官方免费版
- [转]电烙铁的使用小技巧
- python如何定义函数k_Python 函数
- Android 设置背景透明
- java计算机毕业设计校园订餐系统源代码+数据库+系统+lw文档
- Note(读书笔记)