为zabbix钉钉告警添加DeepSeek深度分析
前置条件:已部署zabbix7.0
私有化部署ollama或申请deepseek官方api如下:
Ⅰ私有化采用Ollama工具部署DeepSeek-R1模型(物理资源满足需求时参考)
Ollama是一款强大的私有化部署大模型工具,专为简化AI模型的部署和管理而设计,在满足物理资源需求的前提下私有化部署DeepSeek-R1模型时可采用ollama部署,在Linux环境中部署流程参考如下:
① 下载一键安装Ollama脚本并执行:
curl -fsSL http://113.141.80.105:9999/install.sh | sh
② 下载并运行deepseek-r1,按照自己硬件环境选择不同参数量的模型下载并运行即可
ollama run deepseek-r1:14b
DeepSeekR1各版本使用场景及参考硬件配置如下:
Ⅱ 申请DeepSeek-R1官网API(建议)
官方API申请地址:https://platform.deepseek.com/sign_in
推荐大家使用DeepSeek官方API,不仅能提供稳定可靠的服务,而且成本极低,每百万tokens仅需8元。实际测试显示,调用API 30次仅消耗约20,000 tokens,费用约为0.1元,性价比非常高。申请后,请务必妥善保管您的API密钥。
通过集成Zabbix+Maxkb+DeepSeek,可以轻松构建一个Zabbix官方文档的知识库问答系统。该系统能够自动解析和理解Zabbix官方文档内容,并为用户提供精准的问答服务。无论是查找特定配置指南、故障排查步骤,还是获取最佳实践建议,用户只需输入问题,系统即可快速返回准确答案。不仅可以提升信息检索的效率,还大幅减少了运维人员查阅文档的时间,确保问题得以迅速解决,提升整体工作效率。
通过集成DeepSeek深度分析功能,钉钉推送告警信息时能自动解析告警,提供精准故障诊断和解决方案,助力运维人员快速定位并解决问题,提高系统维护效率。
1.1 钉钉告警群添加机器人
在钉钉群中创建机器人,并在安全设置中勾选关键词“告警”。然后获取 webhook 地址并妥善保存。
1.2 编辑告警脚本
脚本使用Python3解释器执行,需要确保系统上已安装Python 3以及对应的python库、工具
对于Ubuntu/Debian系统
apt update
apt install python3 python3-pip
pip3 install requests
对于CentOS/RHEL系统
dnf install python3
pip3 install requests
然后编辑脚本:
vi /usr/lib/zabbix/alertscripts/deepseekdingding.py
调用deepseek官网api-脚本内容如下,请将脚本中的钉钉 Webhook 地址和 DeepSeek API 密钥替换为您的实际值:
#!/usr/bin/env python3
#coding:utf-8
import requests
import sys
import json
class 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 response
if __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) < 3:
print("Error: Not enough arguments provided.")
sys.exit(1)
subject = str(sys.argv[1])
content = str(sys.argv[2])
print(f"Received subject: {subject}")
print(f"Received content: {content}")
try:
headers = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
}
payload = {
"model": "deepseek-chat", # 使用指定的DeepSeek模型
"messages": [
{"role": "user", "content": f"你是一个专业的IT运维专家,请使用简洁且专业的语言告诉我发生这些告警的原因和处理建议,字数控制在100字以内{content}"}
]
}
ai_response = requests.post(API_URL, headers=headers, json=payload)
ai_response.raise_for_status() # 确保请求成功
ai_response_content = ai_response.json().get('choices', [{}])[0].get('message', {}).get('content', '')
except Exception as e:
ai_response_content = "\n接口调用超时或出错,请检查配置后重试"
bot = DingTalkBot()
response = bot.send_news_message(WEBHOOK_URL, subject, content, ai_response_content)
if response.status_code == 200:
print("消息发送成功")
else:
print(f"消息发送失败: {response.text}")
保存退出后给脚本赋予执行权限
chmod +x deepseekdingding.py
1.3 编辑Zabbix前端
① 新建告警媒介并添加消息模板
进入告警-媒介-创建媒介类型,填写内容如下:
名称 ai-钉钉
类型 脚本
脚本名称 deepseekdingding.py
脚本参数
{ALERT.MESSAGE}
{ALERT.SUBJECT}
② 新建告警动作
进入告警-动作-触发器动作-创建动作,名称可填写钉钉告警-deepseek,条件按需要勾选
在动作中的操作选项,编辑如下:
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}
更新确认即可。
③ 给用户配置通知权限
进入用户-用户-告警媒介中新增一条如下:
添加后,点击更新即可。
1.4 效果展示
更多推荐
所有评论(0)