如何在Ubuntu 18.04上安装Nagios 4并监控服务器

Nagios是一种流行的开源监控系统。它会保留您的服务器清单并对其进行监控,以便您了解关键服务的运行情况。使用像Nagios这样的监控系统是任何生产的必备工具。

作者选择开源计划作为Write for DOnations计划的一部分接受捐赠。

介绍

Nagios是一种流行的开源监控系统。 它会保留您的服务器清单并对其进行监控,以便您了解关键服务的运行情况。 使用Nagios等监控系统是任何生产环境的必备工具,因为通过监控正常运行时间,CPU使用率或磁盘空间,您可以在问题发生之前或用户呼叫之前解决问题。

在本教程中,您将安装Nagios 4并对其进行配置,以便您可以通过Nagios的Web界面监控主机资源。 您还将设置Nagios Remote Plugin Executor(NRPE),它在远程主机上作为代理运行,以便您可以监视其资源。

先决条件

要学习本教程,您需要:

  • 按照我们的Ubuntu 18.04初始服务器设置指南设置了两个Ubuntu 18.04服务器,包括一个具有sudo权限的非root用户和一个配置了ufw的防火墙。 在一台服务器上,您将安装Nagios; 本教程将此称为Nagios服务器 它将监视您的第二台服务器; 这第二台服务器将被称为第二台Ubuntu服务器
  • 运行Nagios服务器的服务器需要安装Apache和PHP。 请按照本指南在您的某台服务器上配置。 您可以跳过该教程中的MySQL步骤。

通常,Nagios在硬件防火墙或VPN后面运行。 如果Nagios服务器暴露给公共Internet,则应通过安装TLS / SSL证书来保护Nagios Web界面。 这是可选的,但强烈鼓励 您可以按照Ubuntu 18.04上Let's Encrypt指南获取免费的TLS / SSL证书。

本教程假定您的服务器启用了专用网络,以便在专用网络而不是公共网络上进行监控。 如果您没有启用专用网络,您仍然可以通过将所有对私有IP地址的引用替换为公共IP地址来遵循本教程。

第1步 - 安装Nagios 4

有多种方法可以安装Nagios,但您将从源安装Nagios及其组件,以确保您获得最新功能,安全更新和错误修复。

登录到运行Apache的服务器。 在本教程中,我们将其称为Nagios服务器

ssh sammy@your_nagios_server_ip

因为您要从源代码构建Nagios及其组件,所以必须安装一些开发库来完成构建,包括编译器,开发头和OpenSSL。

更新软件包列表以确保您可以下载最新版本的先决条件:

sudo apt update

然后安装所需的包:

sudo apt install autoconf gcc make unzip libgd-dev libmcrypt-dev libssl-dev dc snmp libnet-snmp-perl gettext

安装了先决条件后,您可以自行安装Nagios。 下载Nagios Core最新稳定版的源代码。 转到Nagios下载页面 ,然后单击表单下方的“ 跳过下载”链接。 复制最新稳定版本的链接地址,以便将其下载到Nagios服务器。

使用curl命令将发行版下载到主目录:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.4.tar.gz

提取Nagios存档:

tar zxf nagios-4.4.4.tar.gz

然后切换到解压缩的目录:

cd nagioscore-nagios-4.4.4

在构建Nagios之前,运行configure脚本并指定Apache configs目录:

./configure --with-httpd-conf=/etc/apache2/sites-enabled

注意:如果您希望Nagios使用Postfix发送电子邮件,您必须安装Postfix并通过在configure命令中添加--with-mail=/usr/sbin/sendmail来配置Nagios以使用它。 我们不会在本教程中介绍Postfix,但如果您以后选择使用Postfix和Nagios,则需要重新配置并重新安装Nagios才能使用Postfix支持。

您将看到configure命令的以下输出:

*** Configuration summary for nagios 4.4.4 2019-07-29 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagios
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  /run/nagios.lock
   Check result directory:  /usr/local/nagios/var/spool/checkresults
           Init directory:  /lib/systemd/system
  Apache conf.d directory:  /etc/apache2/sites-enabled
             Mail program:  /bin/mail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

现在使用以下命令编译Nagios:

make all

接下来创建一个nagios用户和nagios组。 它们将用于运行Nagios流程:

sudo make install-groups-users

现在运行这些make命令来安装Nagios二进制文件,服务文件及其示例配置文件:

sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config

您将使用Apache来提供Nagios的Web界面,因此请运行以下命令来安装Apache配置文件并配置其设置:

sudo make install-webconf

使用a2enmod命令启用Apache rewritecgi模块:

sudo a2enmod rewrite
sudo a2enmod cgi

要通过Web界面向Nagios发出外部命令,请将Web服务器用户www-data添加到nagios组:

sudo usermod -a -G nagios www-data

使用htpasswd命令创建一个名为nagiosadmin的管理员用户,该用户可以访问Nagios Web界面:

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

在提示符下输入密码。 记住此密码,因为您需要它来访问Nagios Web界面。

警告:如果创建名称不是nagiosadmin的用户,则需要编辑/usr/local/nagios/etc/cgi.cfg并将所有nagiosadmin引用更改为您创建的用户。

重新启动Apache以加载新的Apache配置:

sudo systemctl restart apache2

你现在已经安装了Nagios。 但为了实现这一点,有必要安装Nagios插件,您将在下一步中介绍它。

第2步 - 安装Nagios插件

Nagios需要插件才能正常运行。 官方Nagios插件包中包含50多个插件,可用于监视基本服务,如正常运行时间,磁盘使用情况,交换使用情况,NTP等。

我们来安装插件包。

您可以在官方网站上找到最新版本的Nagios插件。

使用curl其下载到您的主目录:

cd ~
curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

提取NRPE存档并导航到解压缩的目录:

tar zxf nagios-plugins-<^>2.2.1<^.tar.gz
cd nagios-plugins-2.2.1

接下来配置他们的安装

./configure

现在构建并安装插件:

make
sudo make install

现在安装了插件,但是您需要一个插件来监视远程服务器。 我们接下来安装它。

第3步 - 安装check_nrpe插件

Nagios使用Nagios Remote Plugin Executor或NRPE监控远程主机。 它由两部分组成:

  • Nagios服务器使用的check_nrpe插件。
  • NRPE守护程序,它在远程主机上运行并将数据发送到Nagios服务器。

让我们在Nagios服务器上安装check_nrpe插件。

GitHub页面上找到最新稳定版NRPE的下载URL。

使用curl其下载到您的主目录:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

提取NRPE存档:

tar zxf nrpe-3.2.1.tar.gz

然后切换到解压缩的目录:

cd nrpe-3.2.1

配置check_nrpe插件:

./configure

现在构建并安装check_nrpe插件:

make check_nrpe
sudo make install-plugin

我们接下来配置Nagios服务器。

第4步 - 配置Nagios

现在让我们执行初始的Nagios配置,其中包括编辑一些配置文件。 您只需在Nagios服务器上执行一次此部分。

在首选文本编辑器中打开主Nagios配置文件。 在这里,你将使用nano

sudo nano /usr/local/nagios/etc/nagios.cfg

在文件中找到这一行:

/usr/local/nagios/etc/nagios.cfg
...
#cfg_dir=/usr/local/nagios/etc/servers
...

通过删除行前面的#字符取消注释该行:

/usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/servers

CTRL+X ,然后按Y ,然后按ENTER (如果你使用的是nano ),保存并关闭nagios.cfg

现在创建将存储您将监视的每个服务器的配置文件的目录:

sudo mkdir /usr/local/nagios/etc/servers

在文本编辑器中打开Nagios联系人配置:

sudo nano /usr/local/nagios/etc/objects/contacts.cfg

找到email指令并将其值替换为您自己的电子邮件地址:

/usr/local/nagios/etc/objects/contacts.cfg
...
define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                           your_email@your_domain.com        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
...

保存并退出编辑器。

接下来,向Nagios配置添加一个新命令,该命令允许您在Nagios服务定义中使用check_nrpe命令。 在编辑器中打开文件/usr/local/nagios/etc/objects/commands.cfg

sudo nano /usr/local/nagios/etc/objects/commands.cfg

将以下内容添加到文件末尾以定义名为check_nrpe的新命令:

/usr/local/nagios/etc/objects/commands.cfg
...
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

这定义了名称并指定了执行插件的命令行选项。

保存并退出编辑器。

然后启动Nagios并在服务器启动时启用它:

sudo systemctl start nagios

Nagios现在正在运行,所以让我们登录它的网络界面。

第5步 - 访问Nagios Web界面

打开您喜欢的Web浏览器,访问http:// nagios_server_public_ip /nagios转到Nagios服务器。

在显示的弹出窗口中输入Web界面的登录凭据。 使用nagiosadmin作为用户名,以及为该用户创建的密码。

进行身份验证后,您将看到默认的Nagios主页。 单击左侧导航栏中的Hosts链接,查看Nagios正在监控的主机:

Nagios主页

如您所见,Nagios仅监视“localhost”或其本身。

让我们使用Nagios监控我们的其他服务器,

第6步 - 在主机上安装Nagios插件和NRPE守护程序

让我们添加一个新主机,以便Nagios可以监控它。 您将在远程主机上安装Nagios Remote Plugin Executor(NRPE),安装一些插件,然后配置Nagios服务器以监控此主机。

登录到第二台服务器,我们将其称为第二台Ubuntu服务器

ssh sammy@your_monitored_server_ip

首先创建一个运行NRPE代理的nagios用户:

sudo useradd nagios

您将从源安装NRPE,这意味着您将需要在第1步中在Nagios服务器上安装的相同开发库。更新软件包源并安装NRPE先决条件:

sudo apt update
sudo apt install autoconf gcc libmcrypt-dev make libssl-dev wget dc build-essential gettext

NRPE要求在远程主机上安装Nagios插件 我们从源代码安装这个包。

下载页面中找到最新版本的Nagios插件。

使用curl将Nagios插件下载到您的主目录:

cd ~
curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

解压缩Nagios插件存档并更改为解压缩的目录:

tar zxf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1

在构建Nagios插件之前,请使用以下命令对其进行配置:

./configure

现在编译插件:

make

然后通过运行安装它们:

sudo make install

接下来,安装NRPE守护程序。 GitHub页面上找到最新稳定版NRPE的下载URL,就像在第3步中一样。使用curl将最新的NRPE稳定版本下载到受监控服务器的主目录:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

使用以下命令提取NRPE存档:

tar zxf nrpe-3.2.1.tar.gz

然后切换到解压缩的目录:

cd nrpe-3.2.1

配置NRPE:

./configure

现在使用以下命令构建和安装NRPE及其启动脚本:

make nrpe
sudo make install-daemon
sudo make install-config
sudo make install-init

现在,让我们更新NRPE配置文件并添加Nagios可以监控的一些基本检查。

首先,让我们监控该服务器的磁盘使用情况。 使用df -h命令查找根文件系统。 您将在NRPE配置中使用此文件系统名称:

df -h /

你会看到与此类似的输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /

现在在编辑器中打开/usr/local/nagios/etc/nrpe.cfg文件:

sudo nano /usr/local/nagios/etc/nrpe.cfg

NRPE配置文件非常长且充满了注释。 您需要查找和修改几行:

  • server_address :设置为受监控服务器的私有IP地址。
  • allowed_hosts :将Nagios服务器的私有IP地址添加到逗号分隔列表中。
  • command [check_hda1] :将/dev/hda1更改为调用根文件系统的任何内容。

找到这些设置并适当更改它们:

/usr/local/nagios/etc/nrpe.cfg
...
server_address=second_ubuntu_server_private_ip
...
allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip
...
command[check_vda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vda1
...

保存并退出编辑器。 现在你可以开始NRPE了:

sudo systemctl start nrpe.service

通过检查其状态来确保服务正在运行:

sudo systemctl status nrpe.service

您将看到以下输出:

...
Aug 01 06:28:31 client systemd[1]: Started Nagios Remote Plugin Executor.
Aug 01 06:28:31 client nrpe[8021]: Starting up daemon
Aug 01 06:28:31 client nrpe[8021]: Server listening on 0.0.0.0 port 5666.
Aug 01 06:28:31 client nrpe[8021]: Server listening on :: port 5666.
Aug 01 06:28:31 client nrpe[8021]: Listening for connections on port 5666
Aug 01 06:28:31 client nrpe[8021]: Allowing connections from: 127.0.0.1,::1,165.22.212.38

接下来,允许通过防火墙访问端口5666 如果您使用的是UFW,请使用以下命令将其配置为允许TCP连接到端口5666

sudo ufw allow 5666/tcp

您可以在Ubuntu 18.04上了解有关如何使用UFW设置防火墙的UFW的更多信息。

现在您可以检查与远程NRPE服务器的通信。 在Nagios服务器上运行以下命令:

/usr/local/nagios/libexec/check_nrpe -H second_ubuntu_server_ip

您将看到以下输出:

NRPE v3.2.1

对于要监视的每个其他服务器,请重复本节中的步骤。

在要监视的主机上完成NRPE的安装和配置后,必须先将这些主机添加到Nagios服务器配置中,然后才能开始监视它们。 我们接下来就这样做。

第7步 - 使用Nagios监控主机

要使用Nagios监控主机,您将为每个主机添加配置文件,指定要监控的内容。 然后,您可以在Nagios Web界面中查看这些主机。

在Nagios服务器上,为要在/usr/local/nagios/etc/servers/监视的每个远程主机创建新的配置文件。 将突出显示的单词monitored_server_host_name替换为您的主机名:

sudo nano /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

添加以下主机定义,将host_name值替换为远程主机名,将alias值替换为主机描述,将address值替换为远程主机的专用IP地址:

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg
define host {
        use                             linux-server
        host_name                       your_monitored_server_host_name
        alias                           My client server
        address                         your_monitored_server_private_ip
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

使用此配置,Nagios将仅告知您主机是启动还是关闭。 让我们添加一些服务来监控。

首先,添加此块以监控负载平均值:

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg
define service {
        use                             generic-service
        host_name                       your_monitored_server_host_name
        service_description             Load average
        check_command                   check_nrpe!check_load
}

use generic-service directive指令使Nagios继承了Nagios预定义的名为generic-service的服务模板的值。

接下来,添加此块以监视磁盘使用情况:

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg
define service {
        use                             generic-service
        host_name                       your_monitored_server_host_name
        service_description             /dev/vda1 free space
        check_command                   check_nrpe!check_vda1
}

现在保存并退出。 重新启动Nagios服务以使任何更改生效:

sudo systemctl restart nagios

几分钟后,Nagios将检查新主机,您将在Nagios Web界面中看到它们。 单击左侧导航栏中的“ 服务”链接以查看所有受监控的主机和服务。

Nagios服务页面

结论

您已在服务器上安装Nagios并将其配置为监视至少一台远程计算机的负载平均值和磁盘使用情况。

现在您正在监视主机及其某些服务,您可以开始使用Nagios来监控您的关键任务服务。 您可以使用Nagios为关键事件设置通知。 例如,您可以在磁盘利用率达到警告或严重阈值时收到电子邮件,或者在主站点关闭时收到通知。 这样您就可以及时解决问题,甚至可以在问题发生之前解决问题。