前置条件:已部署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 效果展示

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐