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

作为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 界面。这是可选的,但强烈鼓励您可以按照Let’s Encrypt on Ubuntu 18.04指南获取免费的 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并通过添加--with-mail=/usr/sbin/sendmailconfigure命令配置 Nagios 以使用它我们不会在本教程中介绍 Postfix,但如果您以后选择使用 Postfix 和 Nagios,则需要重新配置并重新安装 Nagios 才能使用 Postfix 支持。

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

Output
*** 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

使用以下命令启用 Apacherewritecgi模块a2enmod

  • 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 监视远程主机。它由两部分组成:

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

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

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

nagios.cfg保存并关闭CTRL+X,然后按Y,然后ENTER(如果您正在使用nano)。

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

  • 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 配置添加一个新命令,让您可以check_nrpe在 Nagios 服务定义中使用该命令。/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 现在正在运行,让我们登录到它的 Web 界面。

步骤 5 — 访问 Nagios Web 界面

打开您最喜欢的 Web 浏览器,然后访问.http://nagios_server_public_ip/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 插件

使用以下命令将 Nagios 插件下载到您的主目录curl

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

解压 Nagios Plugins 存档并切换到解压目录:

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

在构建 Nagios 插件之前,使用以下命令配置它们:

  • ./configure

现在编译插件:

  • make

然后通过运行安装它们:

  • sudo make install

接下来,安装 NRPE 守护进程。就像您在第 3 步中所做的那样,在GitHub 页面上找到NRPE 最新稳定版本的下载 URL。使用以下命令将 NRPE的最新稳定版本下载到您监控的服务器的主目录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

配置NRPE:

  • ./configure

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

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

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

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

  • df -h /

你会看到类似这样的输出:

Output
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

您将看到以下输出:

Output
... 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,请使用5666以下命令将其配置为允许 TCP 连接到端口

  • sudo ufw allow 5666/tcp

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

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

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

您将看到以下输出:

Output
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指令告诉 Nagios 继承名为generic-service的服务模板的值,该模板由 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             /dev/vda1 free space
        check_command                   check_nrpe!check_vda1
}

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

  • sudo systemctl restart nagios

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

Nagios 服务页面

结论

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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁