如何在Ubuntu18.04上安装Nagios4并监控您的服务器

来自菜鸟教程
跳转至:导航、​搜索

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

介绍

Nagios 是一个流行的开源监控系统。 它保留您的服务器清单并监控它们,以便您知道您的关键服务已启动并正在运行。 使用像 Nagios 这样的监控系统对于任何生产环境来说都是必不可少的工具,因为通过监控正常运行时间、CPU 使用率或磁盘空间,您可以在问题发生之前或在用户打电话给您之前阻止问题。

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

先决条件

要遵循本教程,您将需要:

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

通常,Nagios 在硬件防火墙或 VPN 之后运行。 如果您的 Nagios 服务器暴露在公共互联网上,您应该通过安装 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 并通过在 configure 中添加 --with-mail=/usr/sbin/sendmail 来配置 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

使用 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 等。

让我们安装插件包。

你可以在【X61X】官网【X78X】上找到最新版本的Nagios Plugins。

使用 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

保存并关闭 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 配置添加一个新命令,让您可以在 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 现在正在运行,让我们登录到它的 Web 界面。

第 5 步 — 访问 Nagios Web 界面

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

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

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

如您所见,Nagios 仅监控“localhost”或它自己。

让我们用 Nagios 监控我们的另一台服务器,

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

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

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

ssh sammy@your_monitored_server_ip

首先创建一个 nagios 用户,它将运行 NRPE 代理:

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 Plugins。 让我们从源代码安装这个包。

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

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

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 守护程序。 在 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 /

您将看到与此类似的输出:

OutputFilesystem      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,请使用以下命令将其配置为允许 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

您将看到以下输出:

OutputNRPE 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 界面中看到它们。 单击左侧导航栏中的 Services 链接,可以查看所有受监控的主机和服务。

结论

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

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