如何使用 NRPE 插件将远程 Linux 添加到 Nagios 服务器
在 Nagios 系列文章的第一部分中,我们详细解释了如何在基于 RHEL 的发行版(例如,例如 CentOS Stream、Rocky Linux、AlmaLinux 和 Fedora。
在本文中,我们将向您展示如何使用 NRPE 将远程 Linux 计算机及其服务添加到 Nagios Core Monitoring 主机(NRPE >Nagios 远程插件执行器)代理。
我们希望您已经安装并正常运行Nagios Core。如果没有,请使用以下安装指南在系统上安装它。
如果您计划将远程 Windows 主机添加到 Nagios 监控服务器,请使用以下指南:
安装完成后,您可以继续在 Remote Linux 主机上安装 NRPE 代理。在进一步讨论之前,让我们先简要介绍一下 NRPE。
什么是NRPE?
NRPE(Nagios Remote Plugin Executor)插件允许您监控任何远程Linux/Unix服务、网络设备,或本地/远程Linux上的CPU负载、交换、内存使用、在线用户等资源机器。
毕竟,这些本地资源大部分不会暴露给外部计算机,必须在远程计算机上安装和配置 NRPE 代理。
注意:NRPE 插件要求必须在远程 Linux 计算机上安装 Nagios 插件。如果没有这些,NRPE 守护进程将无法工作并且不会监视任何内容。
在 Nagios 服务器和远程 Linux 主机中安装 NRPE 插件
要使用NRPE,您需要在安装了NRPE的Nagios监控服务器和远程Linux主机上执行一些额外的任务在。我们将分别介绍这两个安装部分。
在远程 Linux 主机上安装 Nagios 插件和 NRPE
请按照以下说明在远程Linux主机上安装Nagios插件和NRPE守护程序。
第 1 步:安装所需的依赖项
我们需要安装所需的库,例如gcc、glibc、glibc-common、和GD及其开发库,使用yum 包管理器。
yum install -y gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel tar wget
第2步:创建Nagios用户
创建一个新的 nagios 用户帐户并设置密码。
useradd nagios
passwd nagios
第 3 步:安装 Nagios 插件
为 nagios 插件安装及其所有未来下载创建一个目录。
mkdir /root/nagios
cd /root/nagios
现在使用 wget 命令下载最新的 Nagios 插件包。
wget https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz
第 4 步:提取 Nagios 插件
运行以下 tar 命令以提取源代码 tarball。
tar -xvf nagios-plugins-2.3.3.tar.gz
之后,解压后该目录中就会出现一个新文件夹。
ls -l
total 2724
drwxr-xr-x. 15 root root 4096 Mar 11 2020 nagios-plugins-2.3.3
-rw-r--r--. 1 root root 2782610 Mar 11 2020 nagios-plugins-2.3.3.tar.gz
第5步:编译并安装Nagios插件
接下来,使用以下命令编译并安装 nagios 插件
cd nagios-plugins-2.3.3
./configure
make
make install
使用 chown 命令设置插件目录的权限。
chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec
第6步:安装NRPE插件
要安装 nrpe 插件,首先,下载最新的 NRPE 插件或使用以下 wget 命令。
cd /root/nagios
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.2/nrpe-4.0.2.tar.gz
解压 NRPE 源代码 tarball。
tar xzf nrpe-4.0.2.tar.gz
cd nrpe-4.0.2
编译并安装 NRPE 插件。
./configure
make all
注意:如果运行“make all”命令时出现以下错误:
In file included from ../include/common.h:34,
from ./nrpe.c:38:
/usr/include/openssl/err.h:413:15: note: declared here
413 | unsigned long ERR_get_error_line_data(const char **file, int *line,
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccWQBjHb.o: in function `init_ssl':
/root/nagios/nrpe-4.0.2/src/./nrpe.c:474: undefined reference to `get_dh2048'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:48: nrpe] Error 1
然后,您需要使用 ./configure --disable-ssl
标志禁用 nrpe 配置的 SSL,如图所示。
./configure --disable-ssl
make all
接下来,安装 NRPE 插件守护程序和示例配置文件。
make install-plugin
make install-daemon
make install-config
将 NRPE 守护进程安装在 systemd 下作为服务。
make install-init
第7步:配置NRPE插件
现在打开 /usr/local/nagios/etc/nrpe.cfg 文件并添加 Nagios 的本地主机和IP 地址监控服务器。
allowed_hosts=127.0.0.1,192.168.102
接下来,启用并重新启动 nrpe 服务。
systemctl enable nrpe
systemctl restart nrpe
步骤 8:在防火墙中打开 NRPE 端口
确保本地计算机上的防火墙允许从远程服务器访问NRPE守护程序。为此,请运行以下 iptables 命令。
firewall-cmd --zone=public --add-port=5666/tcp
firewall-cmd --zone=public --add-port=5666/tcp --permanent
步骤 8:本地验证 NRPE 守护进程
运行以下 netstat 命令来验证 NRPE 守护进程在 systemd 下是否正常工作。
# netstat -at | grep nrpe
OR
netstat -na | grep "5666"
tcp 0 0 0.0.0.0:nrpe 0.0.0.0:* LISTEN
tcp6 0 0 [::]:nrpe [::]:* LISTEN
如果得到与上面类似的输出,则表示它工作正常。如果没有,请务必检查以下事项。
- 确保检查 nrpe 条目是否正确添加到 /etc/services 文件中。
- allowed_hosts 包含 /usr/local/nagios/etc/nrpe.cfg 文件中的“nagios_ip_address”条目。
- 检查系统日志文件中有关nrpe的错误并修复这些问题。
接下来,通过运行之前出于测试目的安装的“check_nrpe”命令来验证 NRPE 守护程序是否正常运行。
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
您将在屏幕上看到以下字符串,它显示安装的 NRPE 版本:
NRPE v4.0.2
第 9 步:自定义 NRPE 命令
安装的默认 NRPE 配置文件有几个将用于监视该计算机的命令定义。示例配置文件位于。
vi /usr/local/nagios/etc/nrpe.cfg
以下是位于配置文件底部的默认命令定义。目前,我们假设您正在使用这些命令。您可以使用以下命令来检查它们。
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_users
USERS OK - 1 users currently logged in |users=1;5;10;0
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load
OK - load average: 3.90, 4.37, 3.94|load1=3.900;15.000;30.000;0; load5=4.370;10.000;25.000;0; load15=3.940;5.000;20.000;0;
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_hda1
DISK OK - free space: /boot 154 MB (84% inode=99%);| /boot=29MB;154;173;0;193
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_total_procs
PROCS CRITICAL: 297 processes
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_zombie_procs
PROCS OK: 0 processes with STATE = Z
您可以通过编辑 NRPE 配置文件来编辑和添加新的命令定义。最后,您已在远程 Linux 主机上成功安装并配置了 NRPE 代理。
现在是时候安装 NRPE 组件并向您的 Nagios 监控服务器添加一些服务了……
在Nagios监控服务器上安装NRPE
现在登录您的Nagios 监控服务器。在这里您需要执行以下操作:
- 安装 check_nrpe 插件。
- 使用 check_nrpe 插件创建 Nagios 命令定义。
- 创建Nagios 主机并添加服务定义以监控远程Linux 主机。
步骤1:在Nagios中安装NRPE插件
转到 nagios 下载目录并下载最新的 NRPE 插件或使用以下 wget 命令。
cd /root/nagios
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.2/nrpe-4.0.2.tar.gz
解压 NRPE 源代码 tarball。
tar xzf nrpe-4.0.2.tar.gz
cd nrpe-4.0.2
编译并安装 NRPE 插件。
./configure
make all
make install-plugin
make install-daemon
make install-init
第 2 步:远程验证 NRPE 守护程序
确保 check_nrpe 插件可以与远程 Linux 主机上的 NRPE 守护程序进行通信。在下面的命令中添加 IP 地址以及您的远程 Linux 主机的 IP 地址。
/usr/local/nagios/libexec/check_nrpe -H <remote_linux_ip_address>
您将得到一个返回的字符串,显示远程主机上安装的 NRPE 版本,如下所示:
NRPE v4.0.2
如果您收到插件超时错误,请检查以下内容。
- 确保您的防火墙没有阻止远程主机和监控主机之间的通信。
- 确保 NRPE 守护进程已正确安装在 systemd 下。
- 确保远程Linux主机防火墙规则阻止监控服务器与NRPE守护程序通信。
将远程Linux主机添加到Nagios监控服务器
要添加远程主机,您需要在“/usr/local/nagios/”下创建两个新文件“hosts.cfg”和“services.cfg”等/”位置。
第 1 步:创建 Nagios 主机和服务文件
cd /usr/local/nagios/etc/
touch hosts.cfg
touch services.cfg
现在将这两个文件添加到主 Nagios 配置文件中。使用任何编辑器打开 nagios.cfg 文件。
vi /usr/local/nagios/etc/nagios.cfg
现在添加两个新创建的文件,如下所示。
You can specify individual object config files as shown below:
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg
步骤2:配置Nagios主机和服务文件
现在打开hosts.cfg文件并添加默认主机模板名称和定义远程主机,如下所示。确保将主机名、别名和地址替换为您的远程主机服务器详细信息。
vi /usr/local/nagios/etc/hosts.cfg
## Default Linux Host Template ##
define host{
name linux-box ; Name of this template
use generic-host ; Inherit default values
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check-host-alive
notification_period 24x7
notification_interval 30
notification_options d,r
contact_groups admins
register 0 ; DONT REGISTER THIS - ITS A TEMPLATE
}
## Default
define host{
use linux-box ; Inherit default values from a template
host_name tecmint ; The name we're giving to this server
alias CentOS 6 ; A longer name for the server
address 5.175.142.66 ; IP address of Remote Linux host
}
接下来打开services.cfg文件并添加以下要监控的服务。
vi /usr/local/nagios/etc/services.cfg
define service{
use generic-service
host_name tecmint
service_description CPU Load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name tecmint
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use generic-service
host_name tecmint
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name tecmint
service_description SSH Monitoring
check_command check_nrpe!check_ssh
}
define service{
use generic-service
host_name tecmint
service_description FTP Monitoring
check_command check_nrpe!check_ftp
}
步骤3:配置NRPE命令定义
现在需要在commands.cfg 文件中创建NRPE 命令定义。
vi /usr/local/nagios/etc/objects/commands.cfg
在文件底部添加以下 NRPE 命令定义。
###############################################################################
NRPE CHECK COMMAND
#
Command to use NRPE to check remote host systems
###############################################################################
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
最后,验证 Nagios 配置文件是否有任何错误。
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
最后,重新启动 Nagios 以应用最近的配置更改:
systemctl restart nagios
步骤 4:在 Nagios 中监控远程 Linux
现在转到 Nagios 监控 Web 界面,地址为“http://Your-server-IP-address/nagios”或“http://FQDN/nagios” ” 并提供用户名“nagiosadmin”和密码。检查远程 Linux 主机是否已添加且正在受监控。
结论
就是这样!现在,在我即将发表的文章中,我将向您展示如何将Windows主机添加到Nagios监控服务器。如果您在将远程主机添加到 Nagios 时遇到任何困难。
请通过评论部分评论您的疑问或问题,在此之前请继续关注linux-console.net以获取更多此类有价值的文章。