Zabbix告警分析新纪元:本地DeepSeek大模型实现智能化告警分析
作者介绍 :张世宏,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/)👇 2025开年AI王炸组合:Deepseek + Zabbix = 监控界“钢铁侠” 本方案基于Zabbix监控系统,通过Webhook机制集成Deepseek AI助手,构建智能化运维体系。其核心架构包括: Zabbix监控平台:负责实时监控和告警触发 Webhook接口:实现告警信息的传递 Deepseek AI平台:提供智能分析能力 可根据自身环境选择使用云上的服务接口或使用本地部署的环境。鉴于安全和部分环境为离线环境,本次采用本地部署DeepSeek环境,本次使用deepseek-r1:70b 本次使用Ollama框架进行部署 启动后进入对话,输入/bye退出对话。 如本地无条件,可选择租用线上机器进行,推荐使用spacehpc平台,在镜像市场选择DeepSeek-R1 70b镜像即可,开机后模型已下载好,直接运行即可。 在Zabbix控制台中创建新的Webhook脚本,具体步骤如下 Timeout配置为60s,点击保存。目前Webhook最大超时时间为60s,由于Deepseek思考时间可能较长,因此需要增加超时时间,可通过数据库方式直接配置为300s。 当Zabbix产生一个告警后,在问题上点击右键选择AI助手-解决方案,就会把此问题发送给Deepseek平台。 告警信息:Windows: FS [(C:)]: Space is low (used > 80%, total 119.3GB)模型输出: 告警信息: Linux: Zabbix agent is not available (for 3m)模型输出: 从Deepseek给的思考过程和解决方案来看都非常专业,后期可考虑替代运维知识库。 Zabbix与深度求索AI助手的结合,为企业提供了一套智能化的告警处理解决方案。通过将人工智能技术引入运维领域,不仅提升了问题处理效率,还推动了运维模式的革新。未来,随着AI技术的不断发展,这种智能化运维方案必将得到更广泛的应用和持续优化。 以上博文为Deepseek生成后再由作者修改,其中Webhook脚本也为Deepseek生成并通过本地调试修改后完成。一、 引言
二、方案概述
2.1 技术架构
2.2 实现原理
2.3 系统架构
三、DeepSeek环境搭建
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本地部署
# 在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 Service
After=network-online.target
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="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-reload
systemct restart ollama
# 拉取DeepSeek-r1-70B模型并运行,此过程会下载40G大小的模型,耐心等待,下载完成后会自动运行模型
ollama run deepseek-r1:70b
# 验证模型加载状态
curl http://localhost:11434/api/tags 四、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
// 配置信息
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
}4.2.2 关键参数说明
4.2.3 超时优化
# 根据脚本名称更新脚本超时时间为300s
mysql -uzabbix -p
use zabbix;
update scripts set timeout='300s' where name ='解决方案';4.3 告警分析实践
4.3.1 案例一:存储容量告警
4.3.2 案列二:Agent失联告警
五、 扩展应用场景
六、总结
后记