nagios服务端无法启动或web界面空白,90%因httpd未运行、php模块未加载或gd库缺失;需验证systemctl is-active httpd为active、php -v有输出且php -m | grep gd命中、yum或dpkg确认httpd/php/gd已安装、用户组属nagcmd、configure加--with-command-group=nagcmd、装nagios-plugins并验证check_ping、检查selinux和firewalld。

Nagios 服务端无法启动或 Web 界面空白,90% 是因为 httpd 没跑起来、php 模块未加载、或 gd 库缺失 —— 不是 Nagios 本身装错了,而是它依赖的底层没配好。
确认系统基础组件是否就位
别急着下载源码。先验证 Apache、PHP 和图形支持是否真能用:
-
systemctl is-active httpd必须返回active,否则make install-webconf生成的配置不会生效 -
php -v要有输出,且php -m | grep gd必须命中 —— 缺gd会导致所有图表(CPU、磁盘趋势图)显示为红叉 - CentOS/RHEL 上运行
yum list installed | grep -E "(httpd|php|gd)";Ubuntu/Debian 用dpkg -l | grep -E "(apache2|php|libgd)",漏一个就停在这步
用户与组权限必须严格按 nagcmd 组对齐
Nagios 进程和 Apache 都得属于同一个组,否则 CGI 调用外部命令(比如 check_disk)会因权限拒绝直接返回 UNKNOWN:
- 执行
useradd -r -s /sbin/nologin nagios(-r表示系统用户,更安全) - 执行
groupadd nagcmd,然后usermod -a -G nagcmd nagios和usermod -a -G nagcmd apache(注意:Ubuntu 默认 Web 用户是www-data,不是apache) - 验证:运行
id nagios和id www-data(或id apache),两者的输出里都得出现nagcmd
configure 参数错一个,后续全崩
./configure 不只是指定安装路径,它决定了 Nagios 能不能跟 Web 和命令系统对话:
- 必须加
--with-command-group=nagcmd,这是硬性要求,不加则make install-commandmode会失败 - Apache 配置路径要匹配实际环境:
--with-httpd-conf=/etc/httpd/conf.d(CentOS)或--with-httpd-conf=/etc/apache2/sites-enabled(Ubuntu) - 不要加
--prefix=/opt/nagios这类自定义路径 —— 后续所有插件路径、CGI 脚本、service 文件都默认认/usr/local/nagios,改了就得手动同步全部配置
插件没装,所有监控项都是 UNKNOWN
装完 Nagios Core 只是搭了个空壳,nagios-plugins 才是真正干活的:
- 下载地址必须用官方 GitHub release 页面的链接,比如
wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.4/nagios-plugins-2.4.4.tar.gz - 解压后进目录,运行
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd,然后make && make install - 验证:运行
/usr/local/nagios/libexec/check_ping -H 127.0.0.1 -w 100.0,80% -c 500.0,100%,有输出才是真装好了;如果报command not found,说明libexec没进 PATH 或权限不对
最常被跳过的一步是 SELinux 或防火墙拦截:CentOS 默认开启 SELinux,setenforce 0 只是临时方案,长期要用 semanage permissive -a httpd_t 或打对应策略包;而 firewalld 必须放行 http 服务,不是只开 80 端口 —— 因为 httpd 的 zone 规则依赖服务名而非端口。











