基于DeepSeek构建Zabbix官方文档知识库问答系统

前置条件:已部署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官方文档内容,并为用户提供精准的问答服务。无论是查找特定配置指南、故障排查步骤,还是获取最佳实践建议,用户只需输入问题,系统即可快速返回准确答案。不仅可以提升信息检索的效率,还大幅减少了运维人员查阅文档的时间,确保问题得以迅速解决,提升整体工作效率。

1.1 系统架构

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

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

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

1.2 安装并配置Maxkb

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

docker run -d --name=maxkb -p 8080:8080 -v ~/.max

通过浏览器访问 MaxKB:

http://目标服务器 IP 地址:8080

默认登录信息
用户名:admin
默认密码:MaxKB@123..

1.3 配置模型参考一(DeepSeek官方-API)

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

1.4 配置模型参考二(基于Ollama私有化部署的deepseek)

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

1.5 新建知识库并配置

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

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

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

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

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

1.6 新建应用并配置

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

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

1.7 嵌入至Zabbix前端

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

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

vi /usr/share/zabbix/include/page_footer.php +62

在第62行加入

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

vi /usr/share/zabbix/app/views/layout.htmlpage.php +96

在第96行加入

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

最后重启zabbix即可

systemctl restart zabbix-server

layout.htmlpage.php配置文件:

<?php declare(strict_types = 0);

/**
 * @var CView $this
 * @var array $data
 */

function local_showHeader(array $data): void {
    header('Content-Type: text/html; charset=UTF-8');
    header('X-Content-Type-Options: nosniff');
    header('X-XSS-Protection: 1; mode=block');

    if (strcasecmp($data['config']['x_frame_options'], 'null') != 0) {
        $x_frame_options = $data['config']['x_frame_options'];

        if (strcasecmp($x_frame_options, 'SAMEORIGIN') == 0) {
            header('X-Frame-Options: SAMEORIGIN');
        }
        elseif (strcasecmp($x_frame_options, 'DENY') == 0) {
            header('X-Frame-Options: DENY');
        }
        else {
            header('Content-Security-Policy: frame-ancestors '.$x_frame_options);
        }
    }

    echo (new CPartial('layout.htmlpage.header', [
        'javascript' => [
            'files' => $data['javascript']['files']
        ],
       'stylesheet' => [
            'files' => $data['stylesheet']['files']
        ],
        'page' => [
            'title' => $data['page']['title']
        ],
        'user' => [
            'lang' => CWebUser::$data['lang'],
            'theme' => CWebUser::$data['theme']
        ],
        'web_layout_mode' => $data['web_layout_mode'],
        'config' => [
           'server_check_interval' => $data['config']['server_check_interval']
        ]
    ]))->getOutput();
}

function local_showSidebar(array $data): void {
    global $ZBX_SERVER_NAME;

    if ($data['web_layout_mode'] == ZBX_LAYOUT_NORMAL) {
        echo (new CPartial('layout.htmlpage.aside', [
           'server_name' => isset($ZBX_SERVER_NAME)? $ZBX_SERVER_NAME : ''
        ]))->getOutput();
    }
}

function local_showFooter(array $data): void {
    echo (new CPartial('layout.htmlpage.footer', [
        'user' => [
            'username' => CWebUser::$data['username'],
            'debug_mode' => CWebUser::$data['debug_mode']
        ],
        'web_layout_mode' => $data['web_layout_mode']
    ]))->getOutput();
}

local_showHeader($data);

echo '<body>';

local_showSidebar($data);

// 嵌入的 JavaScript 代码部分
echo '<script
async
defer
src="http://172.24.222.241:8080/api/application/embed?protocol=http&host=172.24.222.241:8080&token=d12b71b0a5de40c9">
</script>';

echo '<div class="'.ZBX_STYLE_LAYOUT_WRAPPER.
    ($data['web_layout_mode'] == ZBX_LAYOUT_KIOSKMODE? ' '.ZBX_STYLE_LAYOUT_KIOSKMODE : '').'">';

// Display unexpected messages (if any) generated by the layout.
echo get_prepared_messages(['with_current_messages' => true]);

echo $data['main_block'];


makeServerStatusOutput()->show();

local_showFooter($data);

1.8 效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值