网易首页 > 网易号 > 正文 申请入驻

Zabbix问题告警如何实现处理闭环?

0
分享至

感谢本文作者蔡斯Zabbix社区签约专家。诚邀大家投稿!

Zabbix有奖投稿详细规则请见 次 条 文章!

摘 要

本文分享笔者在Zabbix实践过程中,如何利用Zabbix自带的问题确认(ACK)功能,实现告警问题的闭环。从而让系统运维保障团队的问题处理过程,即可实时反馈进度,亦可满足团队的质量管控要求。

一、搭建Zabbix6.2平台

►通过Docker快速搭建Zabbix 6.2的最新版本。

1.1、创建Zabbix专属网络

创建Zabbix组件虚拟子网: Zabbix-Subnet

docker network create --subnet 172.10.0.0/16 --ip-range 172.10.240.0/20 Zabbix-Subnet

1.2、运行Zabbix MySQL容器

选择MySQL8.0作为Zabbix监控数据的存储引擎。

docker run --name Zabbix-MySQL -t \
--restart unless-stopped \
--network=Zabbix-Subnet \
-e MYSQL_DATABASE= "zabbix" \
-e MYSQL_USER= "zabbix" \
-e MYSQL_PASSWORD= "zb-passwd" \
-e MYSQL_ROOT_PASSWORD= "zb-passwd" \
-v /etc/localtime:/etc/localtime:ro \
-d mysql:8.0 \
--character-set-server=utf8 \
--collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password

1.3、运行Zabbix Server容器

本文使用企业微信群机器人作为告警媒介,为确保容器能正常请求Webhook地址,通过 --add-host绑定hosts实现强制解析,可根据实际情况配置。

docker run --name Zabbix-Server -t \
--restart unless-stopped \
--network=Zabbix-Subnet \
--hostname= "Zabbix-Server" \
-e DB_SERVER_HOST= "Zabbix-MySQL" \
-e MYSQL_DATABASE= "zabbix" \
-e MYSQL_USER= "zabbix" \
-e MYSQL_PASSWORD= "zb-passwd" \
-e MYSQL_ROOT_PASSWORD= "zb-passwd" \
-e ZBX_NODEADDRESS= "Zabbix-Server" \
-v /etc/localtime:/etc/localtime:ro \
-p 10051:10051 \
--add-host qyapi.weixin.qq.com:157.148.55.111 \
-d zabbix/zabbix-server-mysql:alpine-6.2-latest

1.4、运行Zabbix Agent2容器

Zabbix Agent2基于Go语言开发,作为Zabbix Agent替代品,它几乎集成了Zabbix Agent原有的所有功能,且易于通过Go插件实现第三方功能。

docker run --name Zabbix-Agent -t \
--restart unless-stopped \
--network=Zabbix-Subnet \
-e ZBX_HOSTNAME= "Zabbix server" \
-e ZBX_SERVER_HOST= "Zabbix-Server" \
-e ZBX_SERVER_PORT= "10051" \
-v /etc/localtime:/etc/localtime:ro \
--privileged \
-d zabbix/zabbix-agent2:alpine-6.2-latest

►值得提及的是,Zabbix Agent2已内置证书校验功能,再无需通过复杂的openssl的脚本实现,效果如下:

docker exec -it Zabbix-Server zabbix_get -s Zabbix-Agent -k web.certificate.get[zabbix.com,,104.26.7.148] | python -m json.tool
{
"result": {
"message": "certificate verified successfully",
"value": "valid"
},
"sha1_fingerprint": "8b5889c0a9ecb12a7f4ec1e2c91d70eebb70aa4a",
"sha256_fingerprint": "22a31bd36212fd11bedaba8a3cd66e113710d68c2725b37ebd8c10c2ff49cc56",
"x509": {
"alternative_names": [
"*.zabbix.com",
"zabbix.com",
"sni.cloudflaressl.com"
],
"issuer": "CN=Cloudflare Inc ECC CA-3,O=Cloudflare\\, Inc.,C=US",
"not_after": {
"timestamp": 1685750399,
"value": "Jun 02 23:59:59 2023 GMT"
},
"not_before": {
"timestamp": 1654214400,
"value": "Jun 03 00:00:00 2022 GMT"
},
"public_key_algorithm": "ECDSA",
"serial_number": "014937aa9f28ce4846ddfb7109cbfb0e",
"signature_algorithm": "ECDSA-SHA256",
"subject": "CN=sni.cloudflaressl.com,O=Cloudflare\\, Inc.,L=San Francisco,ST=California,C=US",
"version": 3
}
}

1.5、运行Zabbix Web容器

选择Nginx作为ZabbixWeb前端引擎。

docker run --name Zabbix-Web -t \
--restart unless-stopped \
--network=Zabbix-Subnet \
-e PHP_TZ= "Asia/Shanghai" \
-e DB_SERVER_HOST= "Zabbix-MySQL" \
-e MYSQL_DATABASE= "zabbix" \
-e MYSQL_USER= "zabbix" \
-e MYSQL_PASSWORD= "zb-passwd" \
-e MYSQL_ROOT_PASSWORD= "zb-passwd" \
-v /etc/localtime:/etc/localtime:ro \
-p 80:8080 \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest

1.6、配置Zabbix Agent

►Zabbix-Server容器启动时已配置链接到Zabbix-Agent,容器内部可直接找到,故这里的接口类型使用DNS方式即可。

二、创建Zabbix用户和告警媒介

2.1、添加Zabbix告警用户

►目前Zabbix已具备完整的用户权限管理体系,我们可以通过设置不同群组不同用户授予不同操作和查看权限,满足运维团队的精细化管理。

►根据系统保障团队特点,通常需要创建一、二线两种运维角色。通过左侧导航->管理->用户群组,创建一个名为系统保障团队的群组,主机权限视具体情况勾选主机群组、并授予读写,如下图所示:

►左侧导航->管理->用户,创建两个Zabbix Web用户,"用户名"分别为:servicedeskappadmin,"用户名第一部分"分别为:运维服务台(一线)应用运维(二线)。群组均为:系统保障团队,如下图所示:

►切到用户权限页,勾选角色为:User role,当然这里可视实际情况而定,如下图所示:

2.2、添加企业微信群机器人

►创建一个Zabbix告警通知专用企微群,通过群窗口进入管理界面。点击添加群机器人赋予名字后,复制地址获取完整WebHook链接。

2.3、创建Webhook告警媒介

►左侧导航->管理->媒介->创建媒介类型,填入名称"WXWork_RoBot",点击编辑脚本,复制以下内容进行填充。

try {
var params = JSON.parse(value),
request = new HttpRequest(),
msg = {
msgtype: 'markdown',
markdown: {
content: params.Subject + '\n' + params.Message
}
},
response;
if (params.HTTPProxy) {
request.setProxy(params.HTTPProxy);
}
request.addHeader('Content-Type: application/json');
response = request.post(params.To,JSON.stringify(msg)
);
response = JSON.parse(response);
if (request.getStatus() != 200) {
throw 'Response Status: ' + request.getStatus();
}
if (response.errcode !== 0) {
throw 'Response errcode: ' + response.errcode + '\n' + 'Response errmsg: ' + response.errmsg;
}
return JSON.stringify(response);
}catch (error) {
throw 'Sending failed: ' + error;
}

►其他参数保持和下图一致即可。

2.4、测试Webhook告警媒介

►Zabbix Web端同样提供WebHook媒介的测试,以便验证配置的正确性。通过左侧导航->管理->媒介,找到"WXWork_RoBot",在动作列点击测试。参数说明:

  • HTTPProxyHTTP代理:留空

  • Message消息体输入:"测试内容、测试内容"

  • Subject标题体输入"# 测试标题"

  • To发送体输入:企微Webhook机器人完整链接


►点击下方测试,如无例外,在企微专用告警群里,你会收到机器人小Z发出的如下消息:


►假若告警媒介出现问题,JS脚本会自动抛出对应异常信息,如下图所示:

►如下是输入错误的企微机器人地址后抛出的异常

Sending failed: Response errcode: 93000 Response errmsg: invalid webhook url, hint: [1670835060365200618705084], from ip: x.x.x.x, more info at https://open.work.weixin.qq.com/devtool/query?e=93000

2.5、配置Zabbix告警动作

►Zabbix的告警动作对检测到的异常采取不同的通知措施。这里,通过左侧导航->配置->动作->触发器动作,创建三种告警动作:告警动作告警恢复动作告警更新动作,来实现系统保障团队对告警的闭环处理。

►系统保障团队可通过自身情况选择将不同告警阶段动作的信息发送给不同的团队。配置过程中,三种告警动作参数全部保持一致,即发给用户组Admin(Zabbix Administrator)、仅送到告警媒介WXWork_Robot

►关于告警动作解释:

  • 告警动作,即当告警出现时,Zabbix将告警信息发送给哪些用户.

  • 告警恢复动作,即当告警恢复时,Zabbix将告警信息发送给哪些用户。

  • 告警恢复动作,即当告警信息变化时,Zabbix将变化发送给哪些用户。

►最终触发器告警动作的完整视图,如下图所示:

2.6、配置Zabbix告警消息模板

►Zabbix告警动作需要结合对应报警媒介中的消息模板完成告警消息的推送,这里的消息模板分别对应前面配置三个告警动作,即:

  • 告警动作->消息模板:问题

  • 告警恢复动作->消息模板:问题恢复

  • 告警更新动作->消息模板:问题更新

►最终配置,如下图所示:

三、Zabbix6.2动作之更新操作通知

3.1、触发Zabbix告警消息

►为了校验告警有效性,通常需要人为触发告警。当然,触发方式由很多种,你可以缩短item收集时间,也可以暴力直接拉升服务器负载。

►这里通过Zabbix Agent节点执行dd命令,迅速拉满节点CPU,触发Zabbix告警。

cpu_count=`cat /proc/cpuinfo | grep "physical id" | wc -l`; echo "当前节点核心数: ${cpu_count} 个"; for i in `seq 1 ${cpu_count}`; do echo -e "--------\n正在拉满核心${i}"; dd if=/dev/zero of=/dev/null & sleep 5; done
当前节点核心数: 2 个
--------
正在拉满核心1
[1] 5802
--------
正在拉满核心2
[2] 5807

►通过top -H很快就能看到CPU idel值已接近或处于0,告警在即。

PS:结束上述命令可以使用 pkill -9 dd

3.2、接收Zabbix告警消息

►人为触发告警后,一线服务台巡检或听到告警音(如启用)仪表盘时,就会已看到告警条。

►在企微专用告警群里,成功接收到告警信息,如下图所示:

3.3、处置Zabbix告警消息

►按系统保障团队工作流程机制,一线服务台需要在限定时间内电话知达当日值班二线或相关服务负责人。此时一线服务台在仪表盘上,点击告警条上的"否",对问题进行跟踪反馈。

►1)此时在告警群里,已看到一线服务台对Zabbix告警信息做出响应。

►2)当日值班二线或相关服务负责人收到告警后,立即对告警问题进行处置,如解决问题得到解决,对告警信息进行评价。

►3)Zabbix监控继续对问题项进行检索,如满足恢复条件,自动发送告警恢复信息。

►4)一线服务台接收到恢复告警后,确认并记录问题,最终完成整个告警问题的闭环处理。

►根据经验,在运维事件管理中,有效地记录系统保障人员的问题处理时间和根因分析,定期做复盘,这对提升团队的服务质量有很大的帮助。

四、小结

►除了可以在线反馈问题处理进度外,Zabbix告警确认(ACK)功能还能改变告警等级从严或简单处理,通过也能对告警通知信息进行抑制和屏蔽。更多实用的功能,欢迎继续关注哦。

2021年度报告| 感谢和Zabbix一起走过2021!

国产适配升级|UMOP统一监控运维平台与统信海光兼容性互认证

扫一扫|加入技术交流群

微信号|17502189550

备注“使用Zabbix年限+企业+姓名”

5000+用户已加入!

一个人走得快,一群人走得远!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
王思聪躺在21岁新女友大腿上,让女友给他做头部按摩,网友:羡慕

王思聪躺在21岁新女友大腿上,让女友给他做头部按摩,网友:羡慕

兰子记
2024-06-16 19:46:34
冷门要来了?詹俊:这届欧洲杯第一个冷门什么时候出现? 今晚么?

冷门要来了?詹俊:这届欧洲杯第一个冷门什么时候出现? 今晚么?

直播吧
2024-06-16 13:10:13
男子离婚前贷款45万并转给母亲35万:一审判前妻承担5万债务本息,终审改判

男子离婚前贷款45万并转给母亲35万:一审判前妻承担5万债务本息,终审改判

红星新闻
2024-06-16 19:05:11
齐达内重回皇马!姆巴佩面子太大!超8万人见证,待遇令C罗羡慕了

齐达内重回皇马!姆巴佩面子太大!超8万人见证,待遇令C罗羡慕了

阿泰希特
2024-06-16 10:45:31
两性疑问:为什么男生更喜欢从后面来

两性疑问:为什么男生更喜欢从后面来

坟头长草
2024-05-30 16:33:38
7换1!史诗级交易方案!杜兰特重回雷霆,携手亚历山大冲冠

7换1!史诗级交易方案!杜兰特重回雷霆,携手亚历山大冲冠

鬼魅突破上篮
2024-06-16 16:48:19
王思聪父亲节公开第17任女友身份,大方宣誓主权,女方回应很幸福

王思聪父亲节公开第17任女友身份,大方宣誓主权,女方回应很幸福

古希腊掌管月桂的神
2024-06-16 11:43:23
中国女排3-0波兰!涨大分甩远日本,锁定亚洲第1,还夺世联赛第4

中国女排3-0波兰!涨大分甩远日本,锁定亚洲第1,还夺世联赛第4

侃球熊弟
2024-06-16 21:52:04
普京的停火条件及各方评论:沙皇的仁慈还是绝望的呐喊?

普京的停火条件及各方评论:沙皇的仁慈还是绝望的呐喊?

鹰眼Defence
2024-06-15 17:38:23
如果你是55-70岁的退休族,就一定牢记下面15条,你会受到启发的

如果你是55-70岁的退休族,就一定牢记下面15条,你会受到启发的

爱情大使馆
2024-06-16 10:00:43
缺席雅尔塔会议,中国的代价有多大?

缺席雅尔塔会议,中国的代价有多大?

凭阑听史
2024-06-15 16:14:30
1981年以来,美元和人民币,分别贬值多少倍?

1981年以来,美元和人民币,分别贬值多少倍?

安安小小姐姐
2024-06-16 09:12:52
深圳再有一旧改项目宣告失效!涉拆除面积7.5万㎡

深圳再有一旧改项目宣告失效!涉拆除面积7.5万㎡

深圳买房计划
2024-06-16 19:08:11
突发!对中国重拳出击,6家企业被封杀,包括比亚迪、宁德时代!

突发!对中国重拳出击,6家企业被封杀,包括比亚迪、宁德时代!

农村阿祖
2024-06-16 16:33:41
最后一天,菲律宾摊牌了,海警强登仙宾礁,赌中国不敢依法抓人?

最后一天,菲律宾摊牌了,海警强登仙宾礁,赌中国不敢依法抓人?

阿迪爱音乐
2024-06-15 22:40:26
13年前,冲动买了10万个比特币的新东方老师,如今过得怎样了?

13年前,冲动买了10万个比特币的新东方老师,如今过得怎样了?

百年历史老号
2024-06-16 06:55:46
游客已到达涟水,涟水迎接泼天富贵!美国哈佛前招生委员喊话姜萍

游客已到达涟水,涟水迎接泼天富贵!美国哈佛前招生委员喊话姜萍

李博世财经
2024-06-16 19:58:06
头部主播也卖不动了,抖音有点慌

头部主播也卖不动了,抖音有点慌

品牌营销官
2024-06-14 19:32:38
冒充职业球员?欧洲杯惊现200多斤大胖子 当年差点加盟中超

冒充职业球员?欧洲杯惊现200多斤大胖子 当年差点加盟中超

球事百科吖
2024-06-16 00:04:33
监管零容忍丨A股今年已有11只股票退市!2个月超100只股票“戴帽”,接近2023年全年

监管零容忍丨A股今年已有11只股票退市!2个月超100只股票“戴帽”,接近2023年全年

时代商学院
2024-06-16 17:04:33
2024-06-17 00:10:44
ZabbixChina
ZabbixChina
提供学习平台和技术支持
274文章数 21关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

欧洲猪肉业界:中国若限制进口将是梦魇

头条要闻

欧洲猪肉业界:中国若限制进口将是梦魇

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

本地
艺术
健康
公开课
军事航空

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

晚餐不吃or吃七分饱,哪种更减肥?

公开课

近视只是视力差?小心并发症

军事要闻

以军宣布在加沙南部实行"战术暂停"

无障碍浏览 进入关怀版