部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Zabbix告警分析新纪元:本地DeepSeek大模型实现智能化告警分析

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

原创
作者头像
Zabbix
发布于 2025-02-27 02:16:12
发布于 2025-02-27 02:16:12
32600
代码可运行
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方
运行总次数:0
代码可运行

作者介绍 :张世宏,2016-2024 Zabbix中国峰会演讲嘉宾,Zbxtable研发者,社区专家

一、 引言

随着企业数字化转型的深入,IT系统日益复杂化和规模扩大化,传统的运维模式已难以应对海量告警信息的处理需求。如何在第一时间准确识别问题根源并提供有效的解决方案,成为运维团队面临的重大挑战。Zabbix作为全球领先的开源监控解决方案,在帮助企业实现全面 IT 资产监控方面发挥着重要作用。而深度求索(DeepSeek)作为专注实现AGI的中国的人工智能公司,致力于为各行业提供先进的AI技术和服务。本文将介绍如何通过集成Zabbix与深度求索AI助手,构建智能化告警处理方案。

本文参考官方博文(https://blog.zabbix.com/creating-a-personal-assistant-in-zabbix-with-artificial-intelligence/29596/)

二、方案概述

2.1 技术架构

本方案基于Zabbix监控系统,通过Webhook机制集成Deepseek AI助手,构建智能化运维体系。其核心架构包括:

Zabbix监控平台:负责实时监控和告警触发 Webhook接口:实现告警信息的传递 Deepseek AI平台:提供智能分析能力

2.2 实现原理

  • 告警触发时,Zabbix通过预定义动作发送HTTP请求至Webhook脚本
  • 脚本解析告警数据并调用Deepseek API进行分析
  • 返回结果整合到Zabbix操作界面,供运维人员参考

2.3 系统架构

图片1
图片1

三、DeepSeek环境搭建

可根据自身环境选择使用云上的服务接口或使用本地部署的环境。鉴于安全和部分环境为离线环境,本次采用本地部署DeepSeek环境,本次使用deepseek-r1:70b

3.1 硬件配置

组件

配置

IP

192.168.6.80

OS

Ubuntu 22.04.5 LTS

CPU

Xeon Gold 6154

内存

88GB DDR5

GPU

A100 80GB x2

磁盘

1TB NVMe SSD

3.2 DeepSeek本地部署

本次使用Ollama框架进行部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在GPU服务器上安装Ollama,此过程会安装ollama、显卡驱动、CUDA工具等curl -fsSL https://ollama.com/install.sh | sh# 修改Ollama监听地址,编辑/etc/systemd/system/ollama.service文件中添加环境变量Environment="OLLAMA_HOST=0.0.0.0:11434",修改后的完整文件为[Unit]Description=Ollama ServiceAfter=network-online.target[Service]Environment="OLLAMA_HOST=0.0.0.0:11434"ExecStart=/usr/local/bin/ollama serveUser=ollamaGroup=ollamaRestart=alwaysRestartSec=3Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"[Install]WantedBy=default.target# 重启服务systemctl daemon-reloadsystemct restart ollama# 拉取DeepSeek-r1-70B模型并运行,此过程会下载40G大小的模型,耐心等待,下载完成后会自动运行模型ollama run deepseek-r1:70b# 验证模型加载状态curl http://localhost:11434/api/tags  

启动后进入对话,输入/bye退出对话。

图片2
图片2

如本地无条件,可选择租用线上机器进行,推荐使用spacehpc平台,在镜像市场选择DeepSeek-R1 70b镜像即可,开机后模型已下载好,直接运行即可。

图片3
图片3

四、Zabbix智能分析集成

4.1 软件配置

组件

配置

IP

172.16.60.161

OS

Debian 12

Zabbix

Zabbix 7.0.9

DB

Mariadb 10.11.6

4.2 Webhook配置

4.2.1 配置Webhook

在Zabbix控制台中创建新的Webhook脚本,具体步骤如下

  1. 登录Zabbix控制台,点击“Alerts”->“Scripts”
  2. 点击"Create script"按钮,填写以下内容
图片4
图片4
  • Name: 解决方案
  • Scope: Manual event action
  • Menu path: AI助手
  • Type: Webhook
  • Parameters: name:detail value: {TRIGGER.NAME},name: host value: {HOST.HOST}
图片5
图片5

在Script body中粘贴如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 配置信息var OLLAMA_API_URL = 'http://192.168.6.80:11434/api/chat'var MODEL_NAME = 'deepseek-r1:70b'/** * 生成告警消息 * @param {Object} params - Zabbix 告警参数 */function generateAlertMessage(params) { return [  '当前服务器告警,主机: ' + params.host,  '详情: ' + params.detail,  '请执行:1. 根本原因分析(概率排序)2. 提供修复命令3. 关联知识文档', ].join('\n')}/** * 发送消息到 Ollama Chat API * @param {string} message - 要发送的消息 */function sendToOllama(message) { try {  // 准备请求数据  var payload = JSON.stringify({   model: MODEL_NAME,   messages: [    {     role: 'user',     content: message,    },   ],   stream: false,  })  // 记录请求日志  Zabbix.Log(4, '[Ollama Webhook] 发送请求: ' + payload)  // 发送请求  var response = new HttpRequest()  //response.addHeader('Content-Type: application/json')  var responseData = response.post(OLLAMA_API_URL, payload)  // 检查响应  if (response.getStatus() != 200) {   throw new Error('API 请求失败,状态码: ' + response.getStatus())  }  // 记录成功日志  Zabbix.Log(4, '[Ollama Webhook] 发送成功: ' + responseData)  try {   var result = JSON.parse(responseData)   // chat API 返回的是 message 对象   return result.message.content || '成功发送到 Ollama'  } catch (e) {   return '成功发送到 Ollama(响应解析失败): ' + e.message  } } catch (error) {  // 记录错误日志  Zabbix.Log(3, '[Ollama Webhook] 错误: ' + error.message)  throw error }}/** * Webhook 主函数 */try { // 验证必要的输入参数 if (!value) {  throw new Error('未收到告警信息') } Zabbix.Log(4, '[Ollama Webhook] 收到告警信息: ' + value) // 构造告警消息 var params try {  params = JSON.parse(value) } catch (e) {  throw new Error('告警信息格式无效: ' + e.message) } // 生成并发送告警消息 var alertMessage = generateAlertMessage(params) var response = sendToOllama(alertMessage) // 返回处理结果 return '模型分析结果:\n' + response} catch (error) { // 返回错误信息 return '处理告警时出错: ' + error.message}
  1. 设置Timeout为60s

4.2.2 关键参数说明

  • OLLAMA_API_URL 为Ollama接口地址,默认端口为11434
  • OLLAMA_API_URL 为模型名称,可根据实际需求更改,本次使用deepseek-r1:70b

4.2.3 超时优化

Timeout配置为60s,点击保存。目前Webhook最大超时时间为60s,由于Deepseek思考时间可能较长,因此需要增加超时时间,可通过数据库方式直接配置为300s。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 根据脚本名称更新脚本超时时间为300smysql -uzabbix -puse zabbix;update scripts set timeout='300s' where name ='解决方案';

4.3 告警分析实践

当Zabbix产生一个告警后,在问题上点击右键选择AI助手-解决方案,就会把此问题发送给Deepseek平台。

图片6
图片6

4.3.1 案例一:存储容量告警

告警信息Windows: FS [(C:)]: Space is low (used > 80%, total 119.3GB)模型输出

4.3.2 案列二:Agent失联告警

告警信息Linux: Zabbix agent is not available (for 3m)模型输出

从Deepseek给的思考过程和解决方案来看都非常专业,后期可考虑替代运维知识库。

五、 扩展应用场景

  1. 预测性维护
  • 基于历史数据进行趋势分析
  • 预测潜在硬件故障
  • 知识库自动化
  1. 自动生成标准化运维文档
  • 智能更新知识库内容
  • 多模态监控
  1. 综合分析日志与性能指标
  • 提供更全面的故障诊断视角
  1. 智能自愈
  • 结合自动化工具实现简单故障自愈
  • 设置分级响应策略

六、总结

Zabbix与深度求索AI助手的结合,为企业提供了一套智能化的告警处理解决方案。通过将人工智能技术引入运维领域,不仅提升了问题处理效率,还推动了运维模式的革新。未来,随着AI技术的不断发展,这种智能化运维方案必将得到更广泛的应用和持续优化。

后记

以上博文为Deepseek生成后再由作者修改,其中Webhook脚本也为Deepseek生成并通过本地调试修改后完成。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
C语言每日一题(54)对称二叉树
和相同二叉树是一个道理,但判断相同的不是两颗子树对应的左右结点,而是将两颗子树的左右结点交错进行判断,即左孩子与右孩子判断,右孩子和左孩子判断
对编程一片赤诚的小吴
2024/02/12
1290
C语言每日一题(54)对称二叉树
C语言每日一题(50)二叉树的最大深度
基于递归的思想,从根结点开始,找出左右子树的最大值并返回,同时加上1(根节点本身)就是二叉树的最大深度
对编程一片赤诚的小吴
2024/02/08
1550
C语言每日一题(50)二叉树的最大深度
二叉树及leetcode练习题
二叉树 二叉树天然的递归结构 二叉树本身就是一个递归的定义。先来看一下递归的前序遍历: void preorder(TreeNode* node) { if (node) { cout<<node->val; preorder(node->left); prorder(node->right); } } 递归的定义:递归终止条件 + 递归过程 前序遍历 void preorder(TreeNode* node) { // 递归终止条件 if(node == NU
宇宙之一粟
2020/10/26
3120
LeetCode-二叉树OJ题
先判断这棵树是否为空,如果是空树则是true。再判断左子树是否为空,并且左子树的值val和当前节点的val不相同,如果这左子树不为空且val不等于root的val则返回false,再使用相同方式判断右子树。最后递归一下左右子树即可,只有左右子树有一个返回false,则整体返回false。
用户10923087
2024/01/23
1240
LeetCode-二叉树OJ题
相同的树 单值二叉树 二叉树的最大深度
输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2:
南桥
2024/01/26
1050
相同的树 单值二叉树 二叉树的最大深度
力扣226:翻转二叉树
输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2:
南桥
2024/01/26
1210
力扣226:翻转二叉树
翻转二叉树(C++)
对应我的掘金文章:https://juejin.cn/post/7147267605059862541
GeekLiHua
2025/01/21
600
翻转二叉树(C++)
[LeetCode]—— 226——翻转二叉树
一开始翻转第二层的,他们的子树跟着过去,相当于翻转下一层的一半,就像一个数组,我们对其进行二分翻转,第一次找到中间位置,把数组分为两个部分,然后翻转,之后把左右部分接着在里面分成两个部分,对应着左右子树,翻转,直至翻转到最后只有两个元素组成的部分,翻转结束
小李很执着
2024/06/15
1050
[LeetCode]—— 226——翻转二叉树
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
YoungMLet
2024/03/01
980
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。
恬静的小魔龙
2022/09/27
4340
☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析
相同的树、对称二叉树、翻转二叉树
JavaScript实现LeetCode第100题:相同的树 JavaScript实现LeetCode第101题:对称二叉树 JavaScript实现LeetCode第226题:翻转二叉树 这几道题其实很相似,所以可以放在一起理解。 相同的树 题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3
木子星兮
2020/07/17
4690
相同的树、对称二叉树、翻转二叉树
C语言每日一题(56)平衡二叉树
找出左右子树的高度,如果高度差出现大于一的情况就返回false,从根节点开始,先从左子树找,再去右子树找
对编程一片赤诚的小吴
2024/02/14
1210
C语言每日一题(56)平衡二叉树
【算法专题】二叉树中的深搜(DFS)
深度优先遍历(DFS,全称为 Depth First Traversal),是我们树或者图这样的数据结构中常用的⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分支,直到一条路径上的所有节点都被遍历完毕,然后再回溯到上一层,继续找⼀条路遍历。
YoungMLet
2024/03/01
2980
翻转二叉树
本题是经典的二叉树操作的题目,直接从根节点进行递归遍历,并从叶子节点进行翻转,如果当前遍历到root,那么只需要继续交换两棵子树的位置即可完成翻转,首先判断节点是否存在,不存在则直接返回空节点,之后递归左子树以及右子树之后定义一个解构赋值的操作(ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值),将左子树与右子树交换位置,类似于后续递归遍历,由于不断进行递归操作整体是由叶节点开始进行交换的,最后返回根节点即可。
WindRunnerMax
2020/09/18
3550
【数据结构与算法 经典例题】翻转二叉树
倔强的石头_
2024/12/06
1110
【数据结构与算法 经典例题】翻转二叉树
LeetCode每日一题:翻转二叉树
通过观察,我们发现只要把二叉树上的每一个节点的左右子节点进行交换,最后的结果就是完全翻转之后的二叉树。
墨明棋妙27
2022/09/23
1810
二叉树的递归遍历
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
早起的鸟儿有虫吃
2019/05/05
5770
二叉树的递归遍历
C语言每日一题(57)二叉树的最小深度
首先理解,最小深度是从根节点到最近叶子节点的最短路径上的节点数量。那我们可以设置这样的递归规则:
对编程一片赤诚的小吴
2024/02/18
1170
C语言每日一题(57)二叉树的最小深度
leecode刷题(24)-- 翻转二叉树
二叉树问题,我们首先要想到的使用递归的方式来解决,有了这个思路,处理这道问题就很简单了:先互换根节点的左右节点,然后递归地处理左子树,再递归地处理右子树,直到所有的节点互换完,最后我们把 root 返回,这样便完成了二叉树的反转。
希希里之海
2019/05/14
4470
LeetCode-226-翻转二叉树
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
benym
2022/07/14
1700
相关推荐
C语言每日一题(54)对称二叉树
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 作者介绍 :张世宏,2016-2024 Zabbix中国峰会演讲嘉宾,Zbxtable研发者,社区专家
  • 一、 引言
  • 二、方案概述
    • 2.1 技术架构
    • 2.2 实现原理
    • 2.3 系统架构
  • 三、DeepSeek环境搭建
    • 3.1 硬件配置
    • 3.2 DeepSeek本地部署
  • 四、Zabbix智能分析集成
    • 4.1 软件配置
    • 4.2 Webhook配置
      • 4.2.1 配置Webhook
      • 4.2.2 关键参数说明
      • 4.2.3 超时优化
    • 4.3 告警分析实践
      • 4.3.1 案例一:存储容量告警
      • 4.3.2 案列二:Agent失联告警
  • 五、 扩展应用场景
  • 六、总结
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档