Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维

2025-04-23阅读 0热度 0
zabbix mysql linux python centos

【导读】⾯对⽇益复杂的it环境,如何⾼效分析监控数据并快速响应已成为运维工作中的关键挑战。本文深入探讨了deepseek与zabbix结合的创新性应用,包括一键式智能告警分析、zabbix文档知识库助手功能以及钉钉告警增强功能。通过详尽的部署指南和实用脚本,展示了deepseek如何助力提升故障排查效率,为运维工程师与系统管理员提供高效解决方案。

1 前置准备(部署zabbix7.0及准备DeepSeek模型API)

关于Zabbix的详尽安装步骤,本文不再展开讨论。笔者所构建的运行环境基于Zabbix 7.0、Nginx以及MySQL 8.0版本,且文中提及的所有应用场景均已在该特定配置环境下通过了实际验证。

1.1 私有化采用Ollama工具部署DeepSeek-R1模型(物理资源满足需求时参考)

Ollama是一款强大的私有化部署大模型工具,专为简化AI模型的部署和管理而设计,在满足物理资源需求的前提下私有化部署DeepSeek-R1模型时可采用ollama部署,在Linux环境中部署流程参考如下:

① 下载一键安装Ollama脚本并执行:

代码语言:javascript代码运行次数:0运行复制
curl -fsSL  http://113.141.80.105:9999/install.sh  | sh
登录后复制

② 下载并运行deepseek-r1,按照自己硬件环境选择不同参数量的模型下载并运行即可

代码语言:javascript代码运行次数:0运行复制
ollama run deepseek-r1:14b
登录后复制

DeepSeekR1各版本使用场景及参考硬件配置如下:

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 2
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 3
1.2 申请DeepSeek-R1官网API(建议)

官方API申请地址:https://platform.deepseek.com/sign_in

推荐大家使用DeepSeek官方API,不仅能提供稳定可靠的服务,而且成本极低,每百万tokens仅需8元。实际测试显示,调用API 30次仅消耗约20,000 tokens,费用约为0.1元,性价比非常高。申请后,请务必妥善保管您的API密钥。

2 场景一:Zabbix前端一键调用DeepSeek-API智能分析告警

通过在Zabbix前端集成DeepSeek分析功能,用户可以实现一键智能分析告警,快速生成详细的故障解析和解决方案建议。这一功能可以大幅提升故障排查的效率,还降低了运维人员的工作负担,确保系统稳定运行的同时,节省宝贵的时间和资源。

2.1 Zabbix 前端创建全局脚本

① 进入Zabbix首页路径:导航至 “ 告警 > 脚本 > 创建脚本”。

② 配置脚本信息:

名称:可自定义设置。范围:选择 “手动执行事件操作”。菜单路径:自定义菜单路径,便于快速找到。类型:选择 “脚本”。执行位置:选择 “zabbix proxy或server”。

③ 命令栏内输入:

代码语言:javascript代码运行次数:0运行复制
/etc/zabbix/scripts/send_alert_to_ai.sh "{TRIGGER.NAME}" "{TRIGGER.SUBJECT}"  "{HOST.NAME}" "{HOST.IP}" "{EVENT.TIME}" "{TRIGGER.SEVERITY}"
登录后复制
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 4
2.2 zabbix - server 服务器内新建调取 API 脚本

① 修改 zabbix - server 配置文件,打开全局脚本

vi /etc/zabbix/zabbix_server.conf

将 EnableGlobalscripts 设置为 1 以启用全局脚本:

代码语言:javascript代码运行次数:0运行复制
EnableGlobalscripts=1
登录后复制

然后重启zabbix服务

systemctl restart zabbix-server

② 在zebbix-server上创建本地脚本

mkdir /etc/zabbix/scripts && cd /etc/zabbix/scripts,注意,如前端提示无法找到脚本文件,请尝试将脚本移至nginx代理的目录下。

vi send_alert_to_ai.sh

③ 调用deepseek官方api脚本如下,注意DeepSeek KEY请替换为您的API_KEY

代码语言:javascript代码运行次数:0运行复制
#!/bin/bash# DeepSeek API配置API_URL="https://api.deepseek.com/chat/completions"API_KEY="xxxxxxxxxxxxxxxxxxxx"# 获取传递的参数作为告警信息TRIGGER_NAME="$1"ALERT_SUBJECT="$2"HOSTNAME="$3"HOST_IP="$4"EVENT_TIME="$5"TRIGGER_SEVERITY="$6"# 构建更简洁的告警信息JSON格式alert_info=$(cat  /dev/null; then        echo "jq could not be found, please install it first."        exit 1    fi    # 提取content字段并格式化输出    content=$(echo "$response_body" | jq -r '.choices[0].message.content')    echo -e "分析结果:\n$content"else    echo "错误: HTTP 状态码 $http_code, 响应: $response_body"fi
登录后复制

④ 调用私有化ollama部署的api脚本如下,注意脚本内api地址请替换为您的地址,model类型请更换为您运行的deepseek模型版本

代码语言:javascript代码运行次数:0运行复制
#!/bin/bash# Ollama API配置API_URL="http://xxx.xxx.xxx.xxx:11434/api/chat"# 使用函数来转义特殊字符escape_json() {    if [ -z "$1" ]; then        echo '""'    else        python3 -c "import json, sys; print(json.dumps(sys.argv[1]))" "$1"    fi}# 获取传递的参数作为告警信息TRIGGER_NAME=$(escape_json "$1")ALERT_SUBJECT=$(escape_json "$2")HOSTNAME=$(escape_json "$3")HOST_IP=$(escape_json "$4")EVENT_TIME=$(escape_json "$5")TRIGGER_SEVERITY=$(escape_json "$6")# 构建更简洁的告警信息JSON格式alert_info=$(jq -n \    --arg model "deepseek-r1:14b" \    --arg role "user" \    --arg content "$(printf '收到以下告警信息:\n\n触发名称: %s\n告警主题: %s\n告警主机: %s\n主机IP: %s\n告警时间: %s\n警报等级: %s\n\n请以简短专业的语言告诉我发生告警的原因和处理措施,字数控制在300字以内。\n' "$TRIGGER_NAME" "$ALERT_SUBJECT" "$HOSTNAME" "$HOST_IP" "$EVENT_TIME" "$TRIGGER_SEVERITY")" \    '{        "model": $model,        "messages": [{            "role": $role,            "content": $content        }]    }')# 发送POST请求并捕获响应和HTTP状态码response=$(curl -s -w "\n%{http_code}" -X POST "$API_URL" \    -H "Content-Type: application/json" \    -d "$alert_info")# 分离HTTP状态码和响应体http_code=$(echo "$response" | awk 'END{print $NF}')response_body=$(echo "$response" | sed '$d')if [ "$http_code" -eq 200 ]; then    # 使用jq工具解析JSON    if ! command -v jq &amp;&gt; /dev/null; then        echo "jq could not be found, please install it first."        exit 1    fi    content=$(echo "$response_body" | jq -r '.message.content // empty')        # 删除分析结果前的文字(如果有)    clean_content=$(echo "$content" | sed '/^<think>/,/^$/d' | tr -d '\n' | sed 's/^\s*//;s/\s*$//')    if [ -z "$clean_content" ]; then        echo "无法从响应中提取内容"    else        echo -e "分析结果:\n$clean_content"    fielse    echo "错误: HTTP 状态码 $http_code, 响应: $response_body"fi</think>
登录后复制

赋予脚本执行权限:

chmod +x /etc/zabbix/scripts/send_alert_to_ai.sh

注意:脚本依赖jq处理和解析 JSON 数据,用来过滤、映射、聚合以及格式化 JSON 数据。如果您的系统上没有安装 jq,可以通过以下命令进行安装:

对于 Debian/Ubuntu 系统:

apt-get update

apt-get install jq

对于 CentOS/RHEL 系统:

yum install epel-release

yum install jq

2.3 Zabbix 仪表盘进行调用效果展示

完成上述步骤后,就可以在 Zabbix 仪表盘的当前问题小组件中直接调用展示,直观地查看告警分析结果。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 5

执行后效果如下:

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 6
2.4 可选优化项目

① 执行后发现输出框较小,浏览不方便,我们可以通过修改前端css文件实现优化:

cd /usr/share/nginx/html/assets/styles/ && cp blue-theme.css blue-theme.css.bak

vi /usr/share/nginx/html/assets/styles/blue-theme.css

然后,在文件末尾添加:

代码语言:javascript代码运行次数:0运行复制
#execution-output {    height: 500px; /* 调整为你希望的高度 */    width: 540px; /* 可选:根据需求调整宽度 */    overflow-y: auto; /* 当内容超出设定高度时显示滚动条 */}
登录后复制

保存退出编辑器后,清除浏览器缓存,重新加载页面,最终显示如下:

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 7

② 执行一键分析脚本后输出反应慢如何优化?

在实测中,预计返回300字结果的时间约为20~30秒。您也可以通过调整脚本中的预置提示词来提高响应速度,但这会降低分析内容的丰富度。因此,建议根据实际需求调整脚本提示词中的回复字数,以平衡速度与内容深度。

3 场景二:基于DeepSeek构建Zabbix官方文档知识库问答系统

通过集成Zabbix+Maxkb+DeepSeek,可以轻松构建一个Zabbix官方文档的知识库问答系统。该系统能够自动解析和理解Zabbix官方文档内容,并为用户提供精准的问答服务。无论是查找特定配置指南、故障排查步骤,还是获取最佳实践建议,用户只需输入问题,系统即可快速返回准确答案。不仅可以提升信息检索的效率,还大幅减少了运维人员查阅文档的时间,确保问题得以迅速解决,提升整体工作效率。

3.1 系统架构

Zabbix:需提前部署完Zabbix,建议5.0以上版本。

Maxkb:一款基于大语言模型的开源知识库问答系统,支持快速上传文档、自动爬取在线文档,并能无缝嵌入第三方业务系统,为企业提供智能问答和信息管理的高效解决方案。

Deepseek:建议调用deepseek官方api,也可本地采用ollama工具私有部署。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 8
3.2 安装并配置Maxkb

部署环境选用Linux系统,安装Maxkb前请提前安装好Docker,Docker安装Maxkb命令如下:

代码语言:javascript代码运行次数:0运行复制
docker run -d --name=maxkb -p 8080:8080 -v ~/.max
登录后复制

通过浏览器访问 MaxKB:

代码语言:javascript代码运行次数:0运行复制
http://目标服务器 IP 地址:8080默认登录信息用户名:admin默认密码:MaxKB@123..
登录后复制3.3 配置模型参考一(DeepSeek官方-API)

进入系统管理-模型设置-添加模型列表中,列出了所有可调用模型,选择添加deepseek模型,模型名称填写deepseek-api,模型类型选择大语言模型,基础模型选择“deepseek-chat”,最后将申请到的API Key填入即可。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 9
3.4 配置模型参考二(基于Ollama私有化部署的deepseek)

进入系统管理-模型设置-添加模型列表中,选择添加Ollama模型,名称可填写deepseek-api,模型类型选择大语言模型,基础模型手动输入“deepseek-r1:7b”(以实际部署模型版本为准),API域名填写部署ollama的服务器ip+11434端口号,API Key未设置的话可输入任意字符,点击确定即可。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 10
3.5 新建知识库并配置

点击创建知识库,按需填入知识库名称及描述等必填。

注意创建知识库时您可以选择两种类型:通用型和Web站点型。

通用型允许您上传或手动录入文档。例如,您可以上传本地的Zabbix 7.0手册PDF文件。

Web站点型则可以直接同步网站文本数据。对于Zabbix官方文档,您可以使用以下网址进行同步:_https://www.zabbix.com/documentation/7.0/zh/manual_

无论选择哪种方式,上传完成后系统将自动进行索引并进行向量化处理。只需等待索引完成即可。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 11
3.6 新建应用并配置

随后,选择“应用”并创建新应用。输入自定义名称和描述后,选择“简单配置”即可快速完成设置。如果需要更复杂的流程,您也可以进行高级编排,但本文不再展开讨论这部分内容。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 12

在设置中,根据实际需求修改AI模型和自定义开场白,并关联已上传的知识库。您可以在参数设置中调整检索模式和召回分段,通过测试不断优化,直至达到满意的效果。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 13
3.7 嵌入至Zabbix前端

您还可以将助手添加到Zabbix前端,以便在页面上随时调用。具体步骤为:进入“应用” -> “Zabbix知识库小助手” -> “概览” -> “嵌入第三方”。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 14

找到浮窗模式,复制所有代码,编辑Zabbix前端文件,根据zabbix安装路径查找,需要编辑page_footer.php和layout.htmlpage.php两个前端文件,具体行数可能因版本不同有所差异,此处仅以笔者环境为例:

代码语言:javascript代码运行次数:0运行复制
vi /usr/share/zabbix/include/page_footer.php +62
登录后复制

在第62行加入

echo ' *******(此处为maxkb中复制的代码)';

代码语言:javascript代码运行次数:0运行复制
vi /usr/share/zabbix/app/views/layout.htmlpage.php +96
登录后复制

在第96行加入

echo ' *******(此处为maxkb中复制的代码)';

最后重启zabbix即可

代码语言:javascript代码运行次数:0运行复制
systemctl restart zabbix-server
登录后复制3.8 效果展示
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 15
4 场景三:为钉钉告警添加DeepSeek深度分析

通过集成DeepSeek深度分析功能,钉钉推送告警信息时能自动解析告警,提供精准故障诊断和解决方案,助力运维人员快速定位并解决问题,提高系统维护效率。

4.1 钉钉告警群添加机器人

在钉钉群中创建机器人,并在安全设置中勾选关键词“告警”。然后获取 webhook 地址并妥善保存。

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 16
4.2 编辑告警脚本

脚本使用Python3解释器执行,需要确保系统上已安装Python 3以及对应的python库、工具

对于Ubuntu/Debian系统

代码语言:javascript代码运行次数:0运行复制
apt updateapt install python3 python3-pippip3 install requests
登录后复制

对于CentOS/RHEL系统

代码语言:javascript代码运行次数:0运行复制
dnf install python3pip3 install requests
登录后复制

然后编辑脚本:

代码语言:javascript代码运行次数:0运行复制
vi /usr/lib/zabbix/alertscripts/deepseekdingding.py
登录后复制

脚本内容如下,请将脚本中的钉钉 Webhook 地址和 DeepSeek API 密钥替换为您的实际值:

代码语言:javascript代码运行次数:0运行复制
#!/usr/bin/env python3#coding:utf-8import requestsimport sysimport jsonclass DingTalkBot(object):    # 发送消息    def send_news_message(self, webhook_url, subject, content, ai_response):        url = webhook_url        data = {            "msgtype": "markdown",            "markdown": {                "title": subject,                "text": f"{subject}\n{content}\n\n【DeepSeek分析】:\n\n{ai_response}"              }        }        headers = {'Content-Type': 'application/json'}        response = requests.post(url, headers=headers, data=json.dumps(data))        return responseif __name__ == '__main__':    WEBHOOK_URL = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx'  # 钉钉Webhook地址    API_URL = 'https://api.deepseek.com/chat/completions'    API_KEY = 'sk-xxxxxxxxxxxxxx'  # DeepSeek API密钥    if len(sys.argv) <p>保存退出后给脚本赋予执行权限</p>代码语言:javascript<i class="icon-code"></i>代码运行次数:<!-- -->0<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>运行<svg width="16" height="16" viewbox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor"></path></svg>复制<pre class="prism-token token line-numbers javascript">chmod +x deepseekdingding.py
登录后复制4.3 编辑Zabbix前端

① 新建告警媒介并添加消息模板进入告警-媒介-创建媒介类型,填写内容如下:

代码语言:javascript代码运行次数:0运行复制
名称      ai-钉钉类型       脚本脚本名称   deepseekdingding.py脚本参数{ALERT.MESSAGE}{ALERT.SUBJECT}
登录后复制
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 17
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 18

② 新建告警动作进入告警-动作-触发器动作-创建动作,名称可填写钉钉告警-deepseek,条件按需要勾选

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 19

在动作中的操作选项,编辑如下:

代码语言:javascript代码运行次数:0运行复制
Send to media type      ai-钉钉主题      故障告警: {EVENT.NAME}消息【Zabbix告警通知】告警组:{TRIGGER.HOSTGROUP.NAME}告警主机:{HOSTNAME1} 主机IP:{HOST.IP}告警时间:{EVENT.DATE} {EVENT.TIME}警报等级:{TRIGGER.SEVERITY}问题信息:{TRIGGER.NAME}事件ID: {EVENT.ID}
登录后复制
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 20
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 21

更新确认即可。

③ 给用户配置通知权限

进入用户-用户-告警媒介中新增一条如下:

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 22

添加后,点击更新即可。

4.4 效果展示
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 23
5 场景四:一键进行系统服务深度分析

通过结合Zabbix前端一键脚本调用系统服务状态、配置文件、日志文件,可以实现针对某项特定服务的深度巡检分析,效果展示如下:

Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 24
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 25
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维图片 26
6 后记:DeepSeek与Zabbix结合的实践与感想

通过整合DeepSeek的智能分析能力与Zabbix的强大监控功能,我们成功实现Zabbix前端一键智能告警分析、构建高效的知识库问答系统,增强钉钉告警机制,并探讨了一键进行系统服务深度分析。这些应用场景的集成不仅可以提高故障诊断的速度与准确性,还能有效缓解运维团队的工作压力。智能化监控与分析的应用,使我们在面对复杂且多变的IT环境时能够迅速响应并解决问题,从而确保系统的高可用性和稳定性。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策