Nagios Core + 插件 + Web 界面
整理一个完整的安装步骤,包含依赖安装、源码编译、Web UI 配置,最后加上 agent (NRPE) 的安装。
一、安装依赖
bash
sudo apt update
sudo apt install -y autoconf gcc make unzip apache2 \
php libapache2-mod-php libgd-dev libssl-dev \
daemon wget unzip tar build-essential snmp \
libnet-snmp-perl gettext
二、创建 Nagios 用户和组
bash
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd www-data
三、下载并安装 Nagios Core
- 获取最新版本(以 4.5.9 为例,版本可能会更新)
bash
cd /tmp
wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.5.9/nagios-4.5.9.tar.gz
tar xvf nagios-4.5.9.tar.gz
cd nagios-4.5.9
- 编译 & 安装
bash
./configure --with-command-group=nagcmd
make all
sudo make install
sudo make install-groups-users
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config
sudo make install-webconf
四、设置 Web 登录用户
bash
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
(输入两次密码,后续 Web 登录用)
五、安装 Nagios 插件
bash
cd /tmp
wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.9/nagios-plugins-2.4.9.tar.gz
tar xvf nagios-plugins-2.4.9.tar.gz
cd nagios-plugins-2.4.9
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
sudo make install
六、启动服务
bash
sudo systemctl enable apache2
sudo systemctl enable nagios
sudo systemctl start apache2
sudo systemctl start nagios
七、访问 Web 界面
浏览器打开:
http://<服务器IP>/nagios
用户名:nagiosadmin
密码:安装时设置的那个
八、安装 NRPE(远程监控插件,可选)
如果你要监控远程主机:
bash
sudo apt install nagios-nrpe-server nagios-plugins -y
配置文件路径:
/etc/nagios/nrpe.cfg
编辑允许访问的 IP:
allowed_hosts=127.0.0.1,192.168.1.100
重启服务:
bash
sudo systemctl restart nagios-nrpe-server
⚡ 至此 Nagios Core + 插件 + Web 界面在 Ubuntu 24.04 上就安装好了。
Nagios Core + Plugins + NRPE(一键脚本)
nagios_install.sh 脚本升级一下,增加 NRPE server + NRPE client 的安装步骤。这样:
- Nagios 主服务器会安装
check_nrpe插件(用于远程访问)。 - 被监控的主机可以安装
nagios-nrpe-server(默认监听 TCP 5666)。
🔹 一键安装脚本(含 NRPE)
保存为 nagios_full_install.sh:
bash
#!/bin/bash
# Nagios Core + Plugins + NRPE 一键安装脚本
# 适配 Ubuntu 24.04
set -e
NAGIOS_VERSION="4.5.9"
PLUGINS_VERSION="2.4.9"
NAGIOS_USER="nagios"
NAGIOS_GROUP="nagcmd"
ADMIN_USER="nagiosadmin"
echo "🚀 更新系统..."
sudo apt update -y
sudo apt install -y autoconf gcc make unzip apache2 \
php libapache2-mod-php libgd-dev libssl-dev \
daemon wget tar build-essential snmp \
libnet-snmp-perl gettext
echo "👤 创建用户和组..."
sudo useradd -m -s /bin/bash $NAGIOS_USER || true
sudo groupadd $NAGIOS_GROUP || true
sudo usermod -a -G $NAGIOS_GROUP $NAGIOS_USER
sudo usermod -a -G $NAGIOS_GROUP www-data
echo "📥 下载并安装 Nagios Core v$NAGIOS_VERSION..."
cd /tmp
wget -q https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-$NAGIOS_VERSION/nagios-$NAGIOS_VERSION.tar.gz
tar xvf nagios-$NAGIOS_VERSION.tar.gz
cd nagios-$NAGIOS_VERSION
./configure --with-command-group=$NAGIOS_GROUP
make all
sudo make install
sudo make install-groups-users
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config
sudo make install-webconf
echo "🔑 设置 Web 登录账号 ($ADMIN_USER)..."
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users $ADMIN_USER
echo "📥 下载并安装 Nagios Plugins v$PLUGINS_VERSION..."
cd /tmp
wget -q https://github.com/nagios-plugins/nagios-plugins/releases/download/release-$PLUGINS_VERSION/nagios-plugins-$PLUGINS_VERSION.tar.gz
tar xvf nagios-plugins-$PLUGINS_VERSION.tar.gz
cd nagios-plugins-$PLUGINS_VERSION
./configure --with-nagios-user=$NAGIOS_USER --with-nagios-group=$NAGIOS_USER
make
sudo make install
echo "📥 安装 NRPE (服务端 + 客户端插件)..."
sudo apt install -y nagios-nrpe-server nagios-plugins nagios-nrpe-plugin
echo "⚙️ 配置 NRPE..."
NRPE_CFG="/etc/nagios/nrpe.cfg"
sudo sed -i "s/^allowed_hosts=.*/allowed_hosts=127.0.0.1,$(hostname -I | awk '{print $1}')/" $NRPE_CFG
echo "⚙️ 启动服务..."
sudo systemctl enable apache2
sudo systemctl enable nagios
sudo systemctl enable nagios-nrpe-server
sudo systemctl restart apache2
sudo systemctl restart nagios
sudo systemctl restart nagios-nrpe-server
echo "✅ Nagios + Plugins + NRPE 安装完成!"
echo "🌍 访问地址: http://$(hostname -I | awk '{print $1}')/nagios"
echo "👤 用户名: $ADMIN_USER"
echo "🔑 密码: 你刚刚设置的密码"
echo "📡 NRPE 已启用 (TCP 5666),允许 Nagios 主机访问。"
🔹 使用方法
bash
chmod +x nagios_full_install.sh
./nagios_full_install.sh
🔹 验证 NRPE 是否工作
在 Nagios 主服务器上执行:
bash
/usr/local/nagios/libexec/check_nrpe -H <被监控主机IP>
正常返回类似:
NRPE v4.0.3
说明 NRPE 通信正常 ✅。
Nagios + NRPE 的示例配置
监控一台 Linux 主机的 磁盘 / CPU / 内存。
🔹 一、Nagios 主服务器配置
Nagios 的配置文件路径在:
/usr/local/nagios/etc/
主要有三个文件夹:
objects/→ 默认配置文件nagios.cfg→ 主配置文件servers/→ (建议新建,用来放远程主机的配置)
1. 编辑主配置文件
告诉 Nagios 去加载 servers/ 目录里的配置:
bash
sudo nano /usr/local/nagios/etc/nagios.cfg
找到这行(如果没有就加上):
cfg_dir=/usr/local/nagios/etc/servers
保存后退出。
2. 新建配置目录
bash
sudo mkdir -p /usr/local/nagios/etc/servers
3. 添加一台被监控主机(示例:192.168.1.50)
新建配置文件:
bash
sudo nano /usr/local/nagios/etc/servers/client1.cfg
内容示例:
cfg
define host {
use linux-server
host_name client1
alias My First Client
address 192.168.1.50
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
# 检查 NRPE 通信是否正常
define service {
use generic-service
host_name client1
service_description NRPE Connection
check_command check_nrpe!check_load
}
# 检查远程磁盘
define service {
use generic-service
host_name client1
service_description Disk Usage (/)
check_command check_nrpe!check_disk
}
# 检查远程 CPU Load
define service {
use generic-service
host_name client1
service_description CPU Load
check_command check_nrpe!check_load
}
# 检查远程内存 (需要在客户端自定义命令)
define service {
use generic-service
host_name client1
service_description Memory Usage
check_command check_nrpe!check_mem
}
🔹 二、被监控主机(192.168.1.50)配置 NRPE
NRPE 配置文件:
/etc/nagios/nrpe.cfg
- 修改允许访问的主机:
ini
allowed_hosts=127.0.0.1,192.168.1.100
(假设 Nagios 服务器是 192.168.1.100)
- 定义要执行的命令(检查内存需要手动添加):
在nrpe.cfg末尾添加:
ini
command[check_mem]=/usr/lib/nagios/plugins/check_mem -w 20 -c 10
⚠️ 默认 nagios-plugins 里没有 check_mem,你可以用 check_swap 或者自己放个脚本。
比如安装一个常用的脚本:
bash
wget -O /usr/lib/nagios/plugins/check_mem https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
chmod +x /usr/lib/nagios/plugins/check_mem
- 重启 NRPE:
bash
sudo systemctl restart nagios-nrpe-server
🔹 三、Nagios 主服务器测试
在 Nagios 主服务器上测试:
bash
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.50 -c check_load
如果正常会返回类似:
OK - load average: 0.01, 0.05, 0.10
🔹 四、重启 Nagios
最后在主服务器上重启 Nagios:
bash
sudo systemctl restart nagios
现在 Web 界面里就能看到 client1 这台主机及其 磁盘/CPU/内存 的监控数据了 ✅。
最小化 NRPE 客户端配置脚本
- 安装 NRPE server
- 配置
nrpe.cfg(允许 Nagios 主服务器访问) - 安装常用监控插件(磁盘、CPU、内存)
- 启动 NRPE
🔹 NRPE 客户端一键脚本
保存为 nrpe_client_install.sh:
bash
#!/bin/bash
# NRPE 客户端最小化安装脚本
# 适配 Ubuntu 24.04
# 使用: sudo ./nrpe_client_install.sh <Nagios_Server_IP>
set -e
if [ -z "$1" ]; then
echo "❌ 用法: $0 <Nagios_Server_IP>"
exit 1
fi
NAGIOS_SERVER_IP=$1
NRPE_CFG="/etc/nagios/nrpe.cfg"
echo "🚀 更新系统..."
sudo apt update -y
echo "📥 安装 NRPE 和插件..."
sudo apt install -y nagios-nrpe-server nagios-plugins wget perl
echo "⚙️ 配置 NRPE (允许 Nagios 服务器 $NAGIOS_SERVER_IP 访问)..."
sudo sed -i "s/^allowed_hosts=.*/allowed_hosts=127.0.0.1,$NAGIOS_SERVER_IP/" $NRPE_CFG
echo "🛠️ 添加自定义检查命令 (内存监控)..."
if ! grep -q "check_mem" $NRPE_CFG; then
sudo bash -c "cat >> $NRPE_CFG" <<EOF
# 内存检查命令
command[check_mem]=/usr/lib/nagios/plugins/check_mem -w 20 -c 10
EOF
fi
echo "📥 下载 check_mem 插件..."
if [ ! -f /usr/lib/nagios/plugins/check_mem ]; then
sudo wget -q -O /usr/lib/nagios/plugins/check_mem https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
sudo chmod +x /usr/lib/nagios/plugins/check_mem
fi
echo "🔄 重启 NRPE 服务..."
sudo systemctl enable nagios-nrpe-server
sudo systemctl restart nagios-nrpe-server
echo "✅ NRPE 客户端安装完成!"
echo "📡 监听端口: 5666"
echo "👉 请在 Nagios 主服务器上测试:"
echo " /usr/local/nagios/libexec/check_nrpe -H $(hostname -I | awk '{print $1}')"
🔹 使用方法
- 在被监控主机上保存脚本:
bash
nano nrpe_client_install.sh
- 赋予执行权限:
bash
chmod +x nrpe_client_install.sh
- 执行安装(假设 Nagios 服务器 IP 是
192.168.1.100):
bash
sudo ./nrpe_client_install.sh 192.168.1.100
🔹 脚本完成后
-
被监控主机 NRPE 端口 5666 开放,允许 Nagios 服务器访问
-
常用检查命令可用:
check_disk(磁盘使用率)check_load(CPU 负载)check_mem(内存使用情况)
在 Nagios 主服务器上测试:
bash
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.50 -c check_load
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.50 -c check_disk
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.50 -c check_mem