在服务器运维领域,监控系统的搭建一直是保障业务连续性的关键环节。Nagios作为老牌的开源监控解决方案,其NRPE(Nagios Remote Plugin Executor)组件能够有效解决远程主机指标采集的难题。最近我在部署浪潮信息KeyarchOS(KOS)系统时,成功实现了nrpe-3.2.1-8的安装配置,这套方案特别适合需要从CentOS迁移到国产化操作系统的场景。
KeyarchOS是浪潮基于Linux Kernel和OpenAnolis等开源技术自主研发的企业级服务器操作系统,不仅支持x86和ARM架构,更在性能调优和稳定性方面表现出色。通过本文,我将详细记录在aarch64架构的KeyarchOS 5.8sp2环境上部署NRPE的全过程,包括依赖解决、配置调优以及实际测试的关键步骤。
我的测试环境采用浪潮ARM架构服务器,系统版本为KeyarchOS 5.8sp2。与常见Linux发行版相比,KeyarchOS的软件源配置略有不同,这是安装过程中需要特别注意的环节。首先需要确认系统已启用EPEL仓库:
bash复制# 检查现有仓库
yum repolist all
如果缺少EPEL源,需要手动添加适用于aarch64架构的仓库配置。由于KeyarchOS基于OpenAnolis,建议优先使用系统自带的anolis-repos工具进行仓库管理:
bash复制# 安装Anolis仓库工具
yum install -y anolis-repos
# 启用EPEL仓库
anolis-repos --enable epel
注意:不同版本的KeyarchOS可能对应不同的EPEL版本,建议通过
cat /etc/os-release确认系统基础版本后再选择匹配的EPEL源。
NRPE的正常运行需要以下核心组件支持:
这些组件的版本兼容性至关重要。在ARM架构下,我选择的版本组合是:
这种组合经过实测验证,能完美兼容KeyarchOS 5.8的环境。特别提醒:x86架构的RPM包无法在ARM服务器上运行,下载时务必确认架构匹配。
首先需要获取所有必需的RPM包。由于部分老版本包不在标准仓库中,需要手动下载:
bash复制# 创建临时下载目录
mkdir -p /tmp/nrpe_install
cd /tmp/nrpe_install
# 下载tcp_wrappers-libs
wget http://rpmfind.net/linux/centos/8-stream/BaseOS/aarch64/os/Packages/tcp_wrappers-libs-7.6-96.el8.aarch64.rpm
# 下载nagios-common和nrpe
wget https://archives.fedoraproject.org/pub/archive/epel/7.7/aarch64/Packages/n/nagios-common-4.4.3-1.el7.aarch64.rpm
wget https://archives.fedoraproject.org/pub/archive/epel/7.7/aarch64/Packages/n/nrpe-3.2.1-8.el7.aarch64.rpm
安装顺序应该遵循依赖关系,先安装底层库再安装上层应用:
bash复制# 安装tcp_wrappers
yum install -y tcp_wrappers-libs-7.6-96.el8.aarch64.rpm
# 安装nagios-common
yum install -y nagios-common-4.4.3-1.el7.aarch64.rpm
# 最后安装nrpe主程序
yum install -y nrpe-3.2.1-8.el7.aarch64.rpm
常见问题:如果遇到"Error: Package requires libssl.so.10"等依赖错误,可能需要额外安装兼容的openssl库。可以通过
yum provides */libssl.so.*查找可用版本。
安装完成后,需要进行基础功能验证:
bash复制# 检查版本信息
/usr/sbin/nrpe --version
# 查看帮助文档
/usr/sbin/nrpe -h
正常输出应类似:
code复制NRPE - Nagios Remote Plugin Executor
Version: 3.2.1
NRPE的主配置文件位于/etc/nagios/nrpe.cfg,其中几个关键参数需要特别关注:
ini复制# 监听的服务器IP(建议改为具体IP而非0.0.0.0)
server_address=192.168.1.100
# 允许连接Nagios服务器的IP
allowed_hosts=192.168.1.50
# 命令定义示例(监控负载)
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 5.0,4.0,3.0 -c 10.0,6.0,4.0
# 连接端口(默认5666)
server_port=5666
安全建议:
推荐使用systemd管理NRPE服务:
bash复制# 创建systemd服务文件
cat > /etc/systemd/system/nrpe.service <<EOF
[Unit]
Description=Nagios Remote Plugin Executor
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
ExecReload=/bin/kill -HUP \$MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 重载systemd配置
systemctl daemon-reload
# 启动服务并设置开机自启
systemctl start nrpe
systemctl enable nrpe
验证服务状态:
bash复制systemctl status nrpe
netstat -tulnp | grep nrpe
在配置完成后,可以先用本地命令测试NRPE是否正常工作:
bash复制# 测试check_load命令
/usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_load
预期输出示例:
code复制OK - load average: 0.15, 0.10, 0.05|load1=0.150;5.000;10.000;0; load5=0.100;4.000;6.000;0; load15=0.050;3.000;4.000;0;
问题1:Connection refused错误
解决方案:
firewall-cmd --list-portsfirewall-cmd --add-port=5666/tcp --permanent && firewall-cmd --reloadsystemctl status nrpe问题2:NRPE: Command 'check_disk' not defined
解决方案:
chmod +x /usr/lib64/nagios/plugins/check_disk问题3:CHECK_NRPE: Error - Could not complete SSL handshake
解决方案:
debug=1和no_ssl=1(仅测试环境使用)bash复制# Nagios服务器端测试命令
ssh -L 5666:127.0.0.1:5666 user@remote_host check_nrpe -H 127.0.0.1 -c check_load
对于高负载环境,建议调整以下参数:
ini复制# 最大并发连接数
max_concurrent_connections=50
# 连接超时时间
connection_timeout=60
# 命令执行超时
command_timeout=90
推荐的基础监控项配置:
ini复制# 系统负载
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 5,4,3 -c 10,6,4
# 磁盘空间
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
# 内存使用
command[check_mem]=/usr/lib64/nagios/plugins/check_mem -w 90 -c 95
# 僵尸进程
command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z
在Nagios服务器上,需要为每个KeyarchOS客户端添加主机和服务定义:
cfg复制define host {
host_name kos_server
alias KeyarchOS Production Server
address 192.168.1.100
use generic-host
}
define service {
host_name kos_server
service_description CPU Load
check_command check_nrpe!check_load
max_check_attempts 3
check_interval 5
retry_interval 1
}
对于大规模部署,建议采用以下架构:
这种架构既能减轻网络压力,又能实现分级管理。在KeyarchOS上,可以通过配置多个allowed_hosts实现多级上报:
ini复制allowed_hosts=192.168.1.50,192.168.2.100
经过实际生产环境验证,这套基于KeyarchOS和NRPE的监控方案在ARM服务器上运行稳定,资源占用率低(平均内存消耗<50MB),完全满足企业级监控需求。特别是在国产化替代场景下,相比传统方案展现出更好的兼容性和性能表现。