Zabbix+Deepseek实现AI告警分析(非本地部署大模型版)

目录

  • 前言
  • 技术架构
  • [DeepSeek API获取](#DeepSeek API获取)
    • [1. 注册账号](#1. 注册账号)
    • [2. 申请API-Key](#2. 申请API-Key)
  • [Zabbix告警AI分析 实现](#Zabbix告警AI分析 实现)
    • [1. 创建Scripts](#1. 创建Scripts)
    • [2. Scripts关键参数说明](#2. Scripts关键参数说明)
    • [3. 需要注意](#3. 需要注意)
  • 测试
  • 参考链接

前言

最近手伤了,更新频率下降......

近期在Zabbix社区看到了一篇文章:张世宏老师分享的《Zabbix告警分析新纪元:本地DeepSeek大模型实现智能化告警分析》,感觉很有意思,该文章分享了如何通过ollama本地部署的Deepseek实现Zabbix告警分析。

鉴于很多人都没有GPU服务器去本地部署大模型,又想测试Zabbix+AI的能力。本文通过硅基流动DeepSeek API来和Zabbix联动,实现AI智能分析告警的功能。

特别注意:本实验仅可用于测试环境,务必不要将生产与敏感数据放至公网而导致信息泄露!!!

技术架构

shell 复制代码
Zabbix Server -> Webhook触发器 -> 硅基流动API -> DeepSeek-r1模型 -> 分析结果

DeepSeek API获取

DeekSeek API服务官网已开放。但使用硅基流动可以使用注册赠送的tokens实现免费测试

1. 注册账号

https://cloud.siliconflow.cn/i/2JxLU9Cg

可以自行硅基流动官网 直接注册,也可以点上面的链接进行注册。我的邀请码:2JxLU9Cg

2. 申请API-Key

注册登录后,点击API密钥->新建API密钥。填写该密钥的用途(描述)

新建好key之后,复制好这一段密钥,后续用于Scripts中。

Zabbix告警AI分析 实现

不赘述如何安装Zabbix

本文Zabbix为7.0lts,

1. 创建Scripts

登录Zabbix页面,点击"Alerts"->"Scripts",点击"Create script"按钮。

填写以下内容:

json 复制代码
Name: 自定义
Scope: Manual event action
Menu path: 选填,自定义
Type: Webhook
Parameters:  
   name:detail value: {EVENT.NAME},
   name: host value: {HOST.HOST}

Script中黏贴下述代码:

javascript 复制代码
// 配置信息
var siliconflow_URL = 'https://api.siliconflow.cn/v1/chat/completions'  //硅基流动API URL,不变
var MODEL_NAME = 'deepseek-ai/DeepSeek-V3' //模型名,根据需求修改

/**
 * 生成告警消息
 * @param {Object} params - Zabbix 告警参数
 */
function generateAlertMessage(params) {
 return [
  '当前服务器告警,主机: ' + params.host,
  '详情: ' + params.detail,
  '请执行:1. 根本原因分析(概率排序)2. 提供修复命令3. 关联知识文档',
 ].join('\n')
}

/**
 * 发送消息到 Siliconflow Chat API
 * @param {string} message - 要发送的消息
 */
function sendToSiliconflow(message) {
 try {
  // 准备请求数据
  var payload = JSON.stringify({
   model: MODEL_NAME,
   messages: [
    {
     role: 'user',
     content: message,
    },
   ],
   stream: false,
  })

  // 记录请求日志
  Zabbix.Log(4, '[Siliconflow Webhook] 发送请求: ' + payload)

  // 发送请求
  var response = new HttpRequest()
  response.addHeader('Content-Type: application/json')
  response.addHeader('Authorization: Bearer [api-key]') //复制前文创建的api-key
  var responseData = response.post(siliconflow_URL, payload)

  // 检查响应
  if (response.getStatus() != 200) {
   throw new Error('API 请求失败,状态码: ' + response.getStatus())
  }
  // 记录成功日志
  Zabbix.Log(4, '[Siliconflow Webhook] 发送成功: ' + responseData)

  try {
   var result = JSON.parse(responseData)
   // chat API 返回的是 message 对象
   return result.choices[0].message.content || '成功发送到 Siliconflow'
  } catch (e) {
   return '成功发送到 Siliconflow(响应解析失败): ' + e.message
  }
 } catch (error) {
  // 记录错误日志
  Zabbix.Log(3, '[Siliconflow Webhook] 错误: ' + error.message)
  throw error
 }
}

/**
 * Webhook 主函数
 */
try {
 // 验证必要的输入参数
 if (!value) {
  throw new Error('未收到告警信息')
 }

 Zabbix.Log(4, '[Siliconflow Webhook] 收到告警信息: ' + value)

 // 构造告警消息
 var params
 try {
  params = JSON.parse(value)
 } catch (e) {
  throw new Error('告警信息格式无效: ' + e.message)
 }

 // 生成并发送告警消息
 var alertMessage = generateAlertMessage(params)
 var response = sendToSiliconflow(alertMessage)

 // 返回处理结果
 return '模型分析结果:\n' + response
} catch (error) {
 // 返回错误信息
 return '处理告警时出错: ' + error.message
}

2. Scripts关键参数说明

脚本根据《Zabbix告警分析新纪元:本地DeepSeek大模型实现智能化告警分析》修改,原文为ollama,这里改为硅基流动api

  1. siliconflow_URL:硅基流动的API URL,不用修改,保持默认
  2. MODEL_NAME: 模型名,根据需求更改。可用的如下:

Available options: deepseek-ai/DeepSeek-R1, Pro/deepseek-ai/DeepSeek-R1, deepseek-ai/DeepSeek-V3, Pro/deepseek-ai/DeepSeek-V3, deepseek-ai/DeepSeek-R1-Distill-Qwen-32B, deepseek-ai/DeepSeek-R1-Distill-Qwen-14B, deepseek-ai/DeepSeek-R1-Distill-Qwen-7B, deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B, Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B, Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B, deepseek-ai/DeepSeek-V2.5, Qwen/Qwen2.5-72B-Instruct-128K, Qwen/Qwen2.5-72B-Instruct, Qwen/Qwen2.5-32B-Instruct, Qwen/Qwen2.5-14B-Instruct, Qwen/Qwen2.5-7B-Instruct, Qwen/Qwen2.5-Coder-32B-Instruct, Qwen/Qwen2.5-Coder-7B-Instruct, Qwen/Qwen2-7B-Instruct, Qwen/Qwen2-1.5B-Instruct, Qwen/QwQ-32B-Preview, TeleAI/TeleChat2, THUDM/glm-4-9b-chat, Vendor-A/Qwen/Qwen2.5-72B-Instruct, internlm/internlm2_5-7b-chat, internlm/internlm2_5-20b-chat, Pro/Qwen/Qwen2.5-7B-Instruct, Pro/Qwen/Qwen2-7B-Instruct, Pro/Qwen/Qwen2-1.5B-Instruct, Pro/THUDM/chatglm3-6b, Pro/THUDM/glm-4-9b-chat

  1. Authorization: Bearer [api-key]:这里填写之前创建的API-Key。填写例子如下:
shell 复制代码
response.addHeader('Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyy')
  1. {EVENT.NAME}:Zabbix Problem的详情
  2. {HOST.HOST}:发生Problem的主机名

3. 需要注意

  1. 如果使用推理模型如DeepSeek-R1,推理+输出耗时会超过Zabbix 全局超时时间Zabbix Scripts超时时间,需要修改Zabbix配置文件以及数据表Scripts中对应Script的超时时间;
  2. Zabbix控制台输出不支持markdown,比较丑;

测试

在 Zabbix控制台 点击需要询问AI的Problem,选择刚刚定义的Script。

等待片刻,AI回复:

至此,试验完成。

参考链接

Zabbix告警分析新纪元:本地DeepSeek大模型实现智能化告警分析

硅基流动 API 文档

DeepSeek API 文档

相关推荐
azheng222几秒前
构建自己的AI客服【根据用户输入生成EL表达式】
人工智能
乐维_lwops5 分钟前
zabbix“专家坐诊”第277期问答
zabbix
m0_7482515216 分钟前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
Shockang23 分钟前
机器学习数学通关指南
人工智能·数学·机器学习
CS创新实验室25 分钟前
《机器学习数学基础》补充资料:描述性统计
人工智能·机器学习·机器学习数学基础
@心都26 分钟前
机器学习数学基础:40.结构方程模型(SEM)中卡方值与卡方自由度比
人工智能·算法·机器学习
进阶的小蜉蝣26 分钟前
[machine learning] MACS、MACs、FLOPS、FLOPs
人工智能·机器学习
云罗张晓_za89866829 分钟前
AI数字人源码开发---SaaS化源码部署+PC+小程序一体化
人工智能·小程序·php·源代码管理·数字雕刻
AITIME论道30 分钟前
ICLR 2025|香港浸会大学可信机器学习和推理课题组专场
人工智能·机器学习
钢板兽33 分钟前
DeepSeek 隐私泄露?
人工智能·chatgpt