Zabbix运维监控系统对接ollama deepseek 本地AI大模型进行故障告警分析企业微信机器人webhook推送

Zabbix运维监控系统对接ollama deepseek 本地AI大模型进行故障告警分析企业微信机器人webhook推送

王忘杰
2025-02-19 / 0 评论 / 181 阅读 / 正在检测是否收录...

前言
大家好,我是王忘杰,刷到社区一篇zabbix与AI结合的文章,感觉与AI结合的方向对了
Zabbix运维监控系统与AI大模型交互实践分享

随后整理思路,考虑如何以合理的方式来进行故障告警AI分析
故障AI分析发送到企业微信可能存在以下问题:
1、不能使用企业微信应用的方式发送,企业微信应用是对用户一对一发送,每发送一次就要调用一次AI,应当使用企业微信机器人的方式,发送到群里,这样仅发送一次就行了。
2、AI服务器可能存在故障,脚本必须能够处理故障,防止因为服务器故障导致告警无法接收
3、AI问答速度必须足够快,并且要限制字数,如果AI响应缓慢并且长篇大论,则会失去时效性。

aiwebhook脚本设计思路
企业微信截图_20250220143430.jpg

实际效果展示
企业微信截图_17400317315130.png

一、前提准备
首先,你应当本地部署了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报警

m7d02v05.png

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}

m7d05be2.png

3.3 触发器动作
配置-动作-触发器动作-创建动作
发送给管理员
m7d083kf.png
操作
添加 操作和恢复操作
m7d08xln.png
操作
m7d0aaja.png
恢复操作
m7d0ajzu.png

4、重启一台闲置业务,触发告警
企业微信截图_17400317315130.png

完成

四、小结
王工666

2

评论

博主关闭了所有页面的评论