随着企业数字化转型的深入,IT系统日益复杂化和规模扩大化,传统的运维模式已难以应对海量告警信息的处理需求。如何在第一时间准确识别问题根源并提供有效的解决方案,成为运维团队面临的重大挑战。Zabbix作为全球领先的开源监控解决方案,在帮助企业实现全面 IT 资产监控方面发挥着重要作用。而深度求索(DeepSeek)作为专注实现AGI的中国的人工智能公司,致力于为各行业提供先进的AI技术和服务。本文将介绍如何通过集成Zabbix与深度求索AI助手,构建智能化告警处理方案。
本文参考官方博文(https://blog.zabbix.com/creating-a-personal-assistant-in-zabbix-with-artificial-intelligence/29596/)
本方案基于Zabbix监控系统,通过Webhook机制集成Deepseek AI助手,构建智能化运维体系。其核心架构包括:
Zabbix监控平台:负责实时监控和告警触发 Webhook接口:实现告警信息的传递 Deepseek AI平台:提供智能分析能力
可根据自身环境选择使用云上的服务接口或使用本地部署的环境。鉴于安全和部分环境为离线环境,本次采用本地部署DeepSeek环境,本次使用deepseek-r1:70b
组件 | 配置 |
---|---|
IP | 192.168.6.80 |
OS | Ubuntu 22.04.5 LTS |
CPU | Xeon Gold 6154 |
内存 | 88GB DDR5 |
GPU | A100 80GB x2 |
磁盘 | 1TB NVMe SSD |
本次使用Ollama框架进行部署
# 在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退出对话。
如本地无条件,可选择租用线上机器进行,推荐使用spacehpc平台,在镜像市场选择DeepSeek-R1 70b镜像即可,开机后模型已下载好,直接运行即可。
组件 | 配置 |
---|---|
IP | 172.16.60.161 |
OS | Debian 12 |
Zabbix | Zabbix 7.0.9 |
DB | Mariadb 10.11.6 |
在Zabbix控制台中创建新的Webhook脚本,具体步骤如下
在Script body中粘贴如下内容:
// 配置信息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}
Timeout配置为60s,点击保存。目前Webhook最大超时时间为60s,由于Deepseek思考时间可能较长,因此需要增加超时时间,可通过数据库方式直接配置为300s。
# 根据脚本名称更新脚本超时时间为300smysql -uzabbix -puse zabbix;update scripts set timeout='300s' where name ='解决方案';
当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生成并通过本地调试修改后完成。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。