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

作者选择了 开源倡议以作为 写给捐赠计划的一部分接受捐赠。

介绍

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

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

前提条件

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

  • 两个 Ubuntu 18.04 服务器是根据我们的 Initial Server Setup Guide for Ubuntu 18.04设置的,包括一个具有 sudo 特权的非根用户和一个配置为 ufw 的防火墙。在一个服务器上,您将安装 Nagios;本教程将称之为 Nagios 服务器 。它将监控您的第二个服务器;这个第二个服务器将被称为 ** 第二 Ubuntu 服务器** .
  • 将运行 Nagios 服务器的服务器需要安装 Apache 和 PHP。

通常情况下,Nagios运行在硬件防火墙或VPN后面。如果您的Nagios服务器暴露在公共互联网上,您应该通过安装TLS/SSL证书来保护Nagios Web接口。

本教程假定您的服务器已启用 私人网络,以便监控发生在私人网络而不是公共网络上。

步骤 1 – 安装 Nagios 4

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

在本教程中,我们将称之为 Nagios 服务器 :

1[environment local]
2ssh sammy@your_nagios_server_ip

由于您正在从源头构建 Nagios 及其组件,您必须安装几个开发库来完成构建,包括编译器、开发标题和 OpenSSL。

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

1sudo apt update

然后安装所需的包:

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

安装前提条件后,您可以自行安装 Nagios. 下载最新稳定版本的 Nagios Core 源代码. 点击 Nagios 下载页面,然后点击表单下方的 ** Skip to download** 链接。 复制最新稳定版本的链接地址,以便您可以下载到您的 Nagios 服务器。

通过curl命令将该版本下载到您的主目录:

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

提取Nagios档案:

1tar zxf nagios-4.4.4.tar.gz

然后更改到提取的目录:

1cd nagioscore-nagios-4.4.4

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

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

<$>[注] 注: 如果您希望 Nagios 使用 Postfix 发送电子邮件,您必须 安装 Postfix并配置 Nagios 以添加 --with-mail=/usr/sbin/sendmail配置命令。

您将从配置命令中看到以下输出:

 1[secondary_label Output]
 2*** Configuration summary for nagios 4.4.4 2019-07-29 ***:
 3
 4 General Options:
 5 -------------------------
 6        Nagios executable:  nagios
 7        Nagios user/group:  nagios,nagios
 8       Command user/group:  nagios,nagios
 9             Event Broker:  yes
10        Install ${prefix}:  /usr/local/nagios
11    Install ${includedir}:  /usr/local/nagios/include/nagios
12                Lock file:  /run/nagios.lock
13   Check result directory:  /usr/local/nagios/var/spool/checkresults
14           Init directory:  /lib/systemd/system
15  Apache conf.d directory:  /etc/apache2/sites-enabled
16             Mail program:  /bin/mail
17                  Host OS:  linux-gnu
18          IOBroker Method:  epoll
19
20 Web Interface Options:
21 ------------------------
22                 HTML URL:  http://localhost/nagios/
23                  CGI URL:  http://localhost/nagios/cgi-bin/
24 Traceroute (used by WAP):
25
26Review the options above for accuracy. If they look okay,
27type 'make all' to compile the main program and CGIs.

现在用这个命令编译 Nagios:

1make all

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

1sudo make install-groups-users

现在运行这些制造命令来安装 Nagios 二进制文件、服务文件和其样本配置文件:

1sudo make install
2sudo make install-daemoninit
3sudo make install-commandmode
4sudo make install-config

您将使用 Apache 来服务 Nagios 的 Web 界面,因此执行以下操作来安装 Apache 配置文件并配置其设置:

1sudo make install-webconf

使用a2enmod命令启用Apache重写cgi模块:

1sudo a2enmod rewrite
2sudo a2enmod cgi

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

1sudo usermod -a -G nagios www-data

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

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

请记住这个密码,因为您将需要它来访问Nagios Web接口。

<$>[warning] 警告: 如果您创建一个用户名,而不是 ** nagiosadmin** ,您将需要编辑 /usr/local/nagios/etc/cgi.cfg 并更改所有 ** nagiosadmin** 引用创建的用户。

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

1sudo systemctl restart apache2

现在你已经安装了Nagios,但要做到这一点,你需要安装Nagios插件,下一步你将涵盖它。

第2步:安装Nagios插件

官方Nagios插件包包含超过50个插件,允许您监控基本服务,如工作时间,磁盘使用率,交换使用率,NTP等。

让我们安装 Plugins 包。

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

将其下载到您的家庭目录中,使用curl:

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

提取 NRPE 档案并导航到提取的目录:

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

接下来配置他们的安装:

1./configure

现在构建并安装插件:

1make
2sudo make install

现在插件已安装,但您需要一个额外的插件来监控远程服务器。

步骤 3 — 安装 check_nrpe 插件

Nagios 使用 Nagios Remote Plugin Executor,或 NRPE 监控远程主机。

  • Nagios 服务器使用的 check_nrpe 插件.
  • 在远程主机上运行并将数据发送到 Nagios 服务器的 NRPE 戴蒙。

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

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

将其下载到您的家庭目录中,使用curl:

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

提取 NRPE 档案:

1tar zxf nrpe-3.2.1.tar.gz

然后更改到提取的目录:

1cd nrpe-3.2.1

设置check_nrpe插件:

1./configure

现在构建并安装check_nrpe插件:

1make check_nrpe
2sudo make install-plugin

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

步骤 4 – 配置 Nagios

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

在您喜爱的文本编辑器中打开主 Nagios 配置文件. 在这里,您将使用 nano:

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

在文件中找到这个行:

1[label /usr/local/nagios/etc/nagios.cfg]
2...
3#cfg_dir=/usr/local/nagios/etc/servers
4...

通过从行的前面删除# 字符来删除此行:

1[label /usr/local/nagios/etc/nagios.cfg]
2cfg_dir=/usr/local/nagios/etc/servers

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

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

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

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

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

找到电子邮件指令,并用自己的电子邮件地址替换其值:

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

保存和退出编辑器。

接下来,将新命令添加到您的 Nagios 配置中,允许您在 Nagios 服务定义中使用check_nrpe命令。

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

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

1[label /usr/local/nagios/etc/objects/commands.cfg]
2...
3define command{
4        command_name check_nrpe
5        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
6}

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

保存和退出编辑器。

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

1sudo systemctl start nagios

Nagios 现在正在运行,所以让我们登录到其 Web 界面。

步骤 5 – 访问 Nagios Web 界面

打开你最喜欢的网页浏览器,然后访问你的Nagios服务器,访问http://nagios_server_public_ip/nagios

输入 Web 接口的登录凭证在出现的 popup 中. 使用 nagiosadmin 为用户名和您为该用户创建的密码。

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

Nagios Hosts Page

正如你所看到的,Nagios只监控本地主机或自己。

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

步骤 6 — 在主机上安装 Nagios 插件和 NRPE Daemon

您将在远程主机上安装Nagios Remote Plugin Executor(NRPE),安装一些插件,然后配置Nagios服务器来监控这个主机。

登录到第二个服务器,我们将称之为第二个Ubuntu服务器:

1[environment local]
2ssh sammy@your_monitored_server_ip

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

1[environment second]
2sudo useradd nagios

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

1[environment second]
2sudo apt update
3sudo apt install autoconf gcc libmcrypt-dev make libssl-dev wget dc build-essential gettext

NRPE 要求在远程主机上安装 Nagios Plugins

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

下载 Nagios Plugins 到您的主目录用curl:

1[environment second]
2cd ~
3curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

提取Nagios插件档案并更改提取的目录:

1[environment second]
2tar zxf nagios-plugins-2.2.1.tar.gz
3cd nagios-plugins-2.2.1

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

1[environment second]
2./configure

现在将 Plugins 编译成:

1[environment second]
2make

然后通过运行来安装它们:

1[environment second]
2sudo make install

接下来,安装 NRPE daemon. 在 GitHub 页面找到 NRPE 最新稳定版本的下载 URL,就像您在步骤 3 中所做的一样。

1[environment second]
2cd ~
3curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

使用此命令提取 NRPE 档案:

1[environment second]
2tar zxf nrpe-3.2.1.tar.gz

然后更改到提取的目录:

1[environment second]
2cd nrpe-3.2.1

NRPE 配置:

1[environment second]
2./configure

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

1[environment second]
2make nrpe
3sudo make install-daemon
4sudo make install-config
5sudo make install-init

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

首先,让我们监控这个服务器的磁盘使用率。 使用df -h命令来搜索根文件系统。 您将在 NRPE 配置中使用此文件系统名称:

1[environment second]
2df -h /

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

1[secondary_label Output]
2Filesystem Size Used Avail Use% Mounted on
3/dev/vda1 25G 1.4G 23G 6% /

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

1[environment second]
2sudo nano /usr/local/nagios/etc/nrpe.cfg

NRPE配置文件非常长,充满了评论,有几个行你需要找到和修改:

  • server_address : 设置为监控服务器的私有 IP 地址。
  • allowed_hosts : 将您的 Nagios 服务器的私有 IP 地址添加到 comma-delimited 列表中。
  • command[check_hda1] : 更改 /dev/hda1 到您的 root 文件系统。

查找这些设置并相应地更改它们:

1[environment second]
2[label /usr/local/nagios/etc/nrpe.cfg]
3...
4server_address=second_ubuntu_server_private_ip
5...
6allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip
7...
8command[check_vda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vda1
9...

保存并退出编辑器. 现在您可以启动 NRPE:

1[environment second]
2sudo systemctl start nrpe.service

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

1[environment second]
2sudo systemctl status nrpe.service

您将看到以下输出:

1[environment second]
2[secondary_label Output]
3...
4Aug 01 06:28:31 client systemd[1]: Started Nagios Remote Plugin Executor.
5Aug 01 06:28:31 client nrpe[8021]: Starting up daemon
6Aug 01 06:28:31 client nrpe[8021]: Server listening on 0.0.0.0 port 5666.
7Aug 01 06:28:31 client nrpe[8021]: Server listening on :: port 5666.
8Aug 01 06:28:31 client nrpe[8021]: Listening for connections on port 5666
9Aug 01 06:28:31 client nrpe[8021]: Allowing connections from: 127.0.0.1,::1,165.22.212.38

接下来,通过防火墙允许访问端口 5666. 如果您正在使用 UFW,请用以下命令配置它以允许 TCP 连接到端口 5666:

1[environment second]
2sudo ufw allow 5666/tcp

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

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

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

您将看到以下输出:

1[secondary_label Output]
2NRPE v3.2.1

重复本节中的步骤,对于您要监控的每个额外服务器。

一旦你完成了在你想要监控的主机上安装和配置NRPE,你将不得不将这些主机添加到你的Nagios服务器配置,然后它将开始监控它们。

步骤 7 – 使用 Nagios 监控主机

要使用 Nagios 监控您的主机,您将为每个主机添加配置文件,指定您想要监控的内容。

在您的 Nagios 服务器上,为您希望在 /usr/local/nagios/etc/servers/ 中监控的每个远程主机创建一个新的配置文件。

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

添加以下主机定义,将host_name值替换为您的远程主机名,alias值以主机的描述,以及地址值以远程主机的私人IP地址:

 1[label /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg]
 2define host {
 3        use linux-server
 4        host_name your_monitored_server_host_name
 5        alias My client server
 6        address your_monitored_server_private_ip
 7        max_check_attempts 5
 8        check_period 24x7
 9        notification_interval 30
10        notification_period 24x7
11}

有了这个配置,Nagios 只会告诉你主机是否在上或下,让我们添加一些服务来监控。

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

1[label /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg]
2define service {
3        use generic-service
4        host_name your_monitored_server_host_name
5        service_description Load average
6        check_command check_nrpe!check_load
7}

使用通用服务指令要求Nagios继承名为通用服务 的服务模板的值,该服务由Nagios预定义。

接下来,添加此块来监控磁盘使用:

1[label /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg]
2define service {
3        use generic-service
4        host_name your_monitored_server_host_name
5        service_description             /dev/vda1 free space
6        check_command check_nrpe!check_vda1
7}

现在保存并停止. 重新启动 Nagios 服务以使任何更改生效:

1sudo systemctl restart nagios

几分钟后,Nagios会检查新的主机,你会在Nagios的Web界面中看到它们。

Nagios Services Page

结论

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

现在,您正在监控主机及其部分服务,您可以开始使用 Nagios 来监控关键任务的服务. 您可以使用 Nagios 设置关键事件的通知。 例如,当您的磁盘使用率达到警告或关键门槛时,您可以收到电子邮件,或者当您的主要网站停机时收到通知。

Published At
Categories with 技术
comments powered by Disqus