Zabbix进阶2--接入DeepSeek分析问题并提供解决方案

背景

由于现在AI的爆火,怎么有效使用AI来提高我们的工作成了很关键的一点,用好了,工作都能少做很多,所以我们尝试在Zabbix中接入DeepSeek来获取报警的相关知识

参考文章: https://blog.zabbix.com/creating-a-personal-assistant-in-zabbix-with-artificial-intelligence/29596/

文章中使用了Gemini,而我们这回选择改成Deepseek,看能不能实现相同的功能

步骤

创建script

Alert -> Script

创建一个手动执行的script,也就是说只有当你手动选择执行script的时候才能够运行该脚本

修改timeout

timeout参数必须修改,尤其是推理模型的时候,因为可能网络问题或者性能问题,默认的30s timeout时间是不够的,所以咱们尽可能改大一点,60s最大

修改Parameters参数

在Parameters中输入以下两个参数:

  • alert_subject, {TRIGGER.NAME}, 即alert的名称,用来分析报错原因,所以alert的名称需要设置的正确
  • api_key: API token, sk-xxxxx
  • model: 模型名称

编辑脚本内容

在Script中输入以下内容

值得一说的是,这个是接入了阿里云的deepseep,如果你接入的是其他的平台,记得修改API地址以及接口格式

复制代码
var DeepSeek = {
    params: {},
    setParams: function (params) {
        if (typeof params !== 'object') {
            return;
        }
        DeepSeek.params = params;
        if (typeof DeepSeek.params.api_key !== 'string' || DeepSeek.params.api_key === '') {
            throw 'API key for DeepSeek is required.';
        }
        DeepSeek.params.url = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';
    },
    request: function (data) {
        if (!DeepSeek.params.api_key) {
            throw 'API key is missing.';
        }
        var request = new HttpRequest();
		request.addHeader('Content-Type: application/json');
        request.addHeader('Authorization: Bearer ' + DeepSeek.params.api_key);
        var response = request.post(DeepSeek.params.url, JSON.stringify(data));

        if (request.getStatus() < 200 || request.getStatus() >= 300) {
            throw 'DeepSeek API request failed with status code ' + request.getStatus() + '.';
        }

        try {
            response = JSON.parse(response);
        } catch (error) {
            Zabbix.log(4, '[ DeepSeek Webhook ] Failed to parse response.');
            response = null;
        }
        return response;
    }
};

try {
    var params = JSON.parse(value),
        data = {},
        result = "",
        required_params = ['alert_subject'];

    Object.keys(params).forEach(function (key) {
        if (required_params.indexOf(key) !== -1 && params[key] === '') {
            throw 'Parameter "' + key + '" cannot be empty.';
        }
    });

    data = {
        "model": "deepseek-v3",  // 指定模型
        "messages": [
            {
                "role": "user",
                "content": "Alert : " + params.alert_subject + " occurred on Zabbix. " +
                    "Suggest possible causes and solutions to resolve this issue. " +
                    "Provide concise points (10 lines max) including root causes, debug commands, and mitigation steps."
            }
        ]
    };

    DeepSeek.setParams({api_key: params.api_key});
	Zabbix.log(3, '[ DeepSeek debug ] ' + data);
    var response = DeepSeek.request(data);

    if (response && response.choices && response.choices.length > 0) {
        result = response.choices[0].message.content.trim();
    } else {
        throw 'No valid response from DeepSeek.';
    }

    return result;

} catch (error) {
    Zabbix.log(3, '[ DeepSeek Webhook ] ERROR: ' + error);
    throw 'Sending failed: ' + error;
}

测试脚本是否工作

Monitoring -> Problems中,随便找一个问题,点击问题,会出现刚刚创建的script选项

总结

这个个人感觉只是一个初阶版,只能根据该问题的title进行分析并给出对应的建议,无法结合其他信息进一步分析

而且,由于网络问题,API很容易超时,导致无法展示结果,因此对API的性能和网络有较高要求

相关推荐
doiito19 小时前
【Agent Harness】Gliding Horse 记忆系统深度剖析:像 CPU 一样思考的 AI 记忆架构
ai·rust·架构设计·系统设计·ai agent
mobility1 天前
免费AI视频生成器:我如何用零成本做出带旁白字幕的多场景AI视频
ai·vibe coding
doiito1 天前
【Agent Harness】Gliding Horse 给 Agent OS 装上双曲空间引擎与默克尔树边云同步
ai·rust·架构设计·系统设计·ai agent
Web3探索者1 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
knqiufan2 天前
从 Python 到 TypeScript,用 GLM-5.2 跑通 PowerMem SDK 的长程任务工程
ai·memory·agentic·powermem
zylyehuo2 天前
Linux系统中网线与USB网络共享冲突
linux
荣--2 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森2 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜2 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
小白跃升坊2 天前
Codex 增强部署:基于 Codex++ 接入 DeepSeek
ai·ai编程·codex·deepseek·ai coding·codex++