midnight, the sound of a phone buzzing wakes you up abruptly. "又是告警!"你猛地从床上坐起,眼睛酸涩地盯着手机屏幕。作为一名运维工程师,这样的场景几乎成了家常便饭。无论是深夜还是清晨,系统故障总能找到你的联系方式,仿佛在提醒你:科技24小时不眠不休,而人类却需要睡觉。
这种永无止境的“On-call”生活,不仅让运维人的头发日渐稀疏,也让这个行业面临着前所未有的挑战。我们不得不承认,在数字化时代,系统的稳定性和高效的故障响应能力已经成为企业的生命线。但问题是:如果告警系统真的不再延迟、不再冗余、甚至可以预测问题的发生,运维工程师会集体失业吗?🤔
别担心,今天这篇文章将带你解锁Zabbix7.2+飞书
的完美结合,用三行代码告别 midnight panic,让告警信息飞入你的飞书,实现真正高效的故障响应。
一、前提条件准备
1.1 创建飞书群
登录飞书,创建飞书群组,群名称输入Zabbix告警通知 点击创建
打开飞书群设置,点击群机器人
进行添加
点击选择自定义机器人
填写机器人名称
,为了良好的使用体验,推荐上传自定义头像。点击添加
将webhook
地址复制保存,后面会用到。对于安全设置,建议生产环境根据实际场景情况建议配置
,点击完成
飞书会提醒上面的安全设置未配置,建议配置。
1.2 准备Python脚本
将下面的python脚本保存到/usr/lib/zabbix/alertscripts 路径下并给脚本起名为feishu.py
.
#!/usr/bin/python3
import requests
import json
import sys
import os
import datetimeurl = ""#你复制的webhook地址粘贴进url内defsend_message(message):payload_message = {"msg_type": "text","content": {"text": message}}headers = {'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))return responseif __name__ == '__main__':text = sys.argv[1]send_message(text)
执行命令为刚创建的脚本添加执行权限
chomod +x feishu.py
由于脚本引用了requests库,通常需要单独安装一下,此处可以根据你实际运行的情况选择。
# 使用 dnf 软件包管理器以管理员权限安装 Python 3 的 pip 工具
sudo dnf install python3-pip# 使用管理员权限通过 pip3 将 pip 升级到最新版本
sudo pip3 install --upgrade pip# 使用管理员权限通过 Python 3 的包管理工具 pip3 安装名为 “requests” 的库
sudo pip3 install requests
1.3 脚本测试
当我们完成上面的工作后,我们可以使用脚本来做一次测试,检查脚本是否生效。
./feishu.py "脚本测试"
当我们执行完成后,可以在飞书的群中看到机器人发送的消息 脚本测试
二、Zabbix 7.2 页面配置
2.1 配置报警媒介
登录Zabbix 7.2 管理页面上,点击 告警
、媒介
、创建媒介类型
创建报警媒介,填写下面的内容后,点击 消息模版
✅ 名称: 飞书
✅ 类型: 选择 脚本
✅ 脚本名称: 填写 feishu.py 这个名称要和我们刚才保存的python脚本名字一致。
✅ 脚本参数: 输入 {ALERT.MESSAGE}
点击消息模版、添加
消息模版中的内容可以根据你的实际需求进行个性化配置,本文我们使用默认的消息模版添加 问题、问题恢复 两个消息模版,点击更新
消息类型:问题
模版内容:
主题:Problem: {EVENT.NAME}
消息:
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {EVENT.NAME}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Operational data: {EVENT.OPDATA}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
消息类型:问题恢复
模版内容:
主题:Resolved in {EVENT.DURATION}: {EVENT.NAME}
消息:
Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {EVENT.NAME}
Problem duration: {EVENT.DURATION}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
点击测试
动作进行测试。测试正常的话会提示测试成功,同时飞书群里面也会有对应的消息。
2.2 创建告警动作
点击告警
、动作
、触发器动作
、创建动作
进行触发器动作创建。
触发器动作设置,名称为了更好的识别,可以使用飞书
也可以根据你的需求随意填写。
条件根据你的实际需求进行设置。
点击操作
、添加
进行触发器动作配置,填写完成后点击更新
✅ 发送给用户组: 根据你的实际场景进行设置,默认组是zabbix administrator
✅ 发送给用户: 根据你的实际场景进行设置,默认演示使用admin用户
✅ Send to media type: 选择我们刚才创建的媒介飞书
重复上面的操作,完成 恢复操作
的动作配置后,点击更新
配置完成
三、配置用户报警媒介
点击用户、用户、Admin
点击报警媒介、添加
配置报警媒介,类型选择飞书、收件人建议使用飞书群名称。点击更新
四、功能验证
我们在服务器上手动触发了一些服务器异常,此时我们在飞书群中成功看到了告警消息。
凌晨三点手机不再亮,高效运维从此稳如磐石!
至此,Zabbix 7.2 告警与飞书机器人深度联动的全流程已部署完毕!
原创 妮西 极客运维研习社