前言
大家好,我是王忘杰,刷到社区一篇zabbix与AI结合的文章,感觉与AI结合的方向对了
Zabbix运维监控系统与AI大模型交互实践分享
随后整理思路,考虑如何以合理的方式来进行故障告警AI分析
故障AI分析发送到企业微信可能存在以下问题:
1、不能使用企业微信应用的方式发送,企业微信应用是对用户一对一发送,每发送一次就要调用一次AI,应当使用企业微信机器人的方式,发送到群里,这样仅发送一次就行了。
2、AI服务器可能存在故障,脚本必须能够处理故障,防止因为服务器故障导致告警无法接收
3、AI问答速度必须足够快,并且要限制字数,如果AI响应缓慢并且长篇大论,则会失去时效性。
aiwebhook脚本设计思路
实际效果展示
一、前提准备
首先,你应当本地部署了zabbix告警系统,如果你还不会,可以查看王工相关教程
ALMA Linux 8飞速搭建zabbix6LTS、微信邮箱短信报警、windows、linux、交换机、vCenter监控、grafana面板、modbus动环采集、ZbxTable分析系统、Mysql、MSsql数据库监控、分组报警
https://90apt.com/2982
其次,你应当本地部署了ollama开源大模型,如果你还不会,可以查看王工相关教程
个人电脑 服务器 快速部署深度求索DeepSeek-R1本地大模型
https://90apt.com/5370
你的zabbix服务器上,必须使用python3.8及以上版本,安装ollama库和requests库
ollama python库 https://github.com/ollama/ollama-python
ollama python库
Python: 安装 Python 3.8 或更高版本。
pip: 确保已安装 pip,Python 的包管理工具。
ollama 库: 用于更方便地与 Ollama API 交互。安装命令如下:
pip install ollama
pip install requests
可以使用ollama-python示例代码进行测试
from ollama import Client
client = Client(
host='http://localhost:11434',
headers={'x-some-header': 'some-value'}
)
response = client.chat(model='qwen2.5:1.5b', messages=[
{
'role': 'user',
'content': '王忘杰是谁?',
},
])
print(response)
以上准备好,我们继续
二、软件开发
企业微信webhook代码我从百度搜索,找篇文章
zabbix基于webhook发送到企业微信
https://blog.csdn.net/u010533742/article/details/109068187
结合ollama-python示例代码,进行组合开发
aiwebhook.py
#!/bin/python3.8
import requests
import sys
import json
from ollama import Client
class WechatImage(object):
# 发送消息
def send_news_message(self, qwurl, subject, content, strairesponse):
url = qwurl
data = {
"msgtype": "markdown",
"markdown": {
"content": subject + '\n' + content + '\nAI分析\n' + strairesponse
}
}
headers = {'content-type': 'application/json'}
reponse = requests.post(url, json.dumps(data), headers=headers)
return reponse
if __name__ == '__main__':
qwurl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=00000000000000000000000' #替换为企微的专用地址
subject = str(sys.argv[2])
content = str(sys.argv[3])
try:
client = Client(
host='http://locahost:11434', #ollama地址
headers={'x-some-header': 'some-value'},
timeout = 10 #超时时间
)
airesponse = client.chat(model='qwen2.5:1.5b', messages=[ #选择的模型
{
'role': 'user',
'content': "你是一个专业的IT工程师,简短简洁的告诉我下面信息的原因和处理措施,字数控制在100字以内" + content}, #提示词
])
strairesponse = str(airesponse['message']['content'])
#print(strairesponse)
except:
strairesponse = "\nAI超时,请检查AI后端" #超时处理
wechat_img = WechatImage()
wechat_img.send_news_message(qwurl, subject, content, strairesponse)
print("执行完毕")
代码中model='qwen2.5:1.5b'为模型,如果使用deepseek,可以根据显卡配置改为deepseek-r1:1.5b
提示词可以自己编辑
三、部署测试
1、在企业微信群中创建机器人,获取webhook地址
2、将脚本放置到zabbix脚本目录中
/usr/lib/zabbix/alertscripts/aiwebhook.py
并给予执行权限
chmod +x aiwebhook.py
3、配置zabbix服务器
3.1 新建报警媒介
管理-媒介-创建媒介类型
名称 aiwebhook
类型 脚本
脚本名称 aiwebhook.py
脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
描述
企业微信ai报警
3.2 消息模板
消息类型 问题
主题 告警通知
消息
主机:{HOST.NAME}
地址:{HOST.IP}
项目:{ITEM.NAME}
取值:{ITEM.LASTVALUE}
等级:<font color="warning">{TRIGGER.SEVERITY}</font>
状态:<font color="warning">{TRIGGER.STATUS}</font>
信息:{TRIGGER.NAME}
时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
消息类型 问题恢复
主题 恢复通知
消息
主机:{HOST.NAME}
地址:{HOST.IP}
项目:{ITEM.NAME}
取值:{ITEM.LASTVALUE}
等级:<font color="info">{TRIGGER.SEVERITY}</font>
状态:<font color="info">{TRIGGER.STATUS}</font>
信息:{TRIGGER.NAME}
时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
3.3 触发器动作
配置-动作-触发器动作-创建动作
发送给管理员
操作
添加 操作和恢复操作
操作
恢复操作
4、重启一台闲置业务,触发告警
完成
四、小结
王工666
评论