网站搜索

如何使用 NRPE 插件将远程 Linux 添加到 Nagios 服务器


在 Nagios 系列文章的第一部分中,我们详细解释了如何在基于 RHEL 的发行版(例如,例如 CentOS StreamRocky LinuxAlmaLinuxFedora

在本文中,我们将向您展示如何使用 NRPE远程 Linux 计算机及其服务添加到 Nagios Core Monitoring 主机(NRPE >Nagios 远程插件执行器)代理。

我们希望您已经安装并正常运行Nagios Core。如果没有,请使用以下安装指南在系统上安装它。

如果您计划将远程 Windows 主机添加到 Nagios 监控服务器,请使用以下指南:

安装完成后,您可以继续在 Remote Linux 主机上安装 NRPE 代理。在进一步讨论之前,让我们先简要介绍一下 NRPE

什么是NRPE?

NRPENagios 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 步:安装所需的依赖项

我们需要安装所需的库,例如gccglibcglibc-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以获取更多此类有价值的文章。