1. 需求背景与整体思路
1.1 为什么要在麒麟系统上装Zabbix Agent
最近接手了一个信创项目,现场环境清一色的银河麒麟V10 SP1服务器,操作系统是刚从CentOS切过来的,团队里不少兄弟对麒麟的包管理、目录规范还停留在“换个皮”的认知上,结果第一批Agent部署就踩了一堆坑。这里我想说一句:麒麟系统虽然跟RHEL系长得像,但细节上并不完全一样,装Zabbix Agent不是把CentOS那套命令复制粘贴就能解决的事。
先说一个最现实的问题:为什么要用Zabbix Agent,而不是直接SNMP走天下。这个项目里的服务器承载了业务中间件和国产数据库,SNMP能拿到的指标太粗,CPU内存这类基础监控还好,但要监控进程存活、自定义日志关键字、端口连通性,SNMP要么实现复杂要么根本做不了。Zabbix Agent的主动式监控和自定义KEY能把这些需求全部覆盖。再加上Zabbix Server端本身已经在跑,监控麒麟服务器最合理的方案就是部署Agent作为数据采集端。
另一个背景是麒麟系统的生态问题。银河麒麟V10基于OpenEuler 20.03 LTS的rpm体系构建,但软件仓库里并没有现成的zabbix-agent包,直接用yum安装大概率会提示找不到软件包。这就是本次部署的核心矛盾:目标服务器是国产化替代系统,但Agent的二进制包还是要从Zabbix官方源或者编译获取,中间还涉及依赖库的兼容性。所以这篇文章的核心思路,就是把麒麟环境下部署Zabbix Agent的完整链路讲清楚,从下载选型到运行验证,每一个步骤都给出可落地的操作方法,顺便把我在现场踩过的坑也一并交代了。
1.2 方案选型:官方源、二进制包还是源码编译
装机之前先解决一个关键选择:Agent从哪来。我当时在项目现场试过三条路,分别是官方yum源、二进制包解压、源码编译,各有各的适用场景,这里直接给出我的选择逻辑。
第一条路是配置Zabbix官方源。Zabbix官网提供了针对RHEL/Oracle/Linux系的rpm包,麒麟V10和RHEL8的glibc版本、系统调用接口高度兼容,所以直接使用el8的源是可以装的。但问题在于:如果现场是内网环境,出不了外网,yum源就废了。即便能出外网,官方源的依赖解析有时候会把系统自带的php、libcurl版本拉起来更新,这对业务系统是潜在风险。我在生产环境不敢这么干,仅限测试机尝试过。
第二条路是直接下载编译好的二进制包解压使用,这也是我最终采用的方式。Zabbix官方在源码包的编译产物中包含了zabbix_agentd和相关配置文件,但是从源码包make install出来的方式依赖较多,需要保证gcc、make、pcre-devel这些编译链齐全。不过现场连pcre-devel都没有,用dnf安装这些依赖又绕回网络问题。所以在内网麒麟系统上,我最终选择了从一台能联网的同架构机器上制作好的二进制包,用scp拷贝过去解压部署。
第三条路是源码编译,这个通常是在极端情况下才需要,比如官方没有对应CPU架构的包、或者需要打特定补丁。麒麟V10 SP1的CPU大多是x86_64或aarch64架构,官方包完全覆盖,所以源码编译在我的场景里不是必要选项,但如果你的环境是龙芯MIPS架构的麒麟,那就只能走这条路了。
综合来看,我的建议是:能联网的环境优先用官方yum源,图省事;内网环境准备好离线二进制包,图可控;特殊架构才考虑源码编译。接下来的章节,我按“二进制包部署”这条主线来讲,因为这是绝大多数信创现场最可能用到的方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础组件梳理
2.1 麒麟V10系统版本与Agent版本的匹配关系
这是第一个隐形坑:Zabbix Agent要和Server版本保持一致,不然高版本Agent的某些新特性(比如主动式检查的多条并发)在旧Server上解析不了。我这边Server是Zabbix 6.0 LTS,所以Agent也锁定6.0系列。如果你的Server是7.0,Agent最好也是7.0,混用虽然大多数场景能通,但出了问题排查起来成本很高。
先确认系统版本和架构,命令如下:
bash复制cat /etc/os-release
uname -m
我现场两台机器的输出分别如下,这里贴出来给各位一个直观参照:
bash复制[root@kylin-node1 ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (SP1)"
ID=kylin
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (SP1)"
[root@kylin-node1 ~]# uname -m
x86_64
这里有个容易搞混的点:麒麟V10有“桌面版”和“高级服务器版”之分,桌面版对应的是Kylin Desktop,服务器版对应的是Kylin Server。安装Agent时,两种版本的glibc环境基本一致,操作步骤也通用,但服务器版的防火墙策略和SELinux通常是默认开启的,需要额外处理。我们项目里全是服务器版,所以下文都是基于这个环境写的。
然后是Agent版本的选型。Zabbix 6.0 LTS在官方源码包的编译参数里,默认使用了--prefix=/usr/local/zabbix这种路径配置,但源码包里不会自动生成init脚本和systemd unit文件,这对麒麟系统的自启动是个麻烦事。我在使用的过程中发现,直接从编译好的zabbix目录里拿二进制更省事,官方在发布源码包的同时,也会在下载页面提供编译好的agent二进制包(zabbix_agentd、zabbix_sender、zabbix_get等),压缩包解压后复制到目标路径就能用。这个方法不依赖系统版本的库文件,兼容性实测下来比rpm包更稳。
2.2 前置检查与依赖组件确认
二进制包的Agent运行其实只有少量依赖,主要是glibc和libpcre。麒麟V10默认带了glibc 2.28,完全满足Zabbix Agent的编译期glibc要求。不过libpcre这个库在最小化安装的服务器上不一定有,而Agent的配置文件解析、正则表达式过滤功能都依赖它。
检查命令如下:
bash复制ldconfig -p | grep libpcre
如果输出为空,说明系统里没有pcre运行库。从麒麟的安装镜像中提取pcre和pcre2的rpm包离线安装是最快的办法,也可以在有网的环境直接dnf安装,然后通过rpms目录缓存拷贝到内网。我这里不推荐静态编译版本,虽然静态编译能绕开依赖问题,但Agent体积会大不少,而且后续如果要加载LoadModu
