介绍
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只监控本地主机
或自己。
让我们用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,并将其配置为监控至少一个远程计算机的平均负载和磁盘使用率。
现在,您正在监控主机及其部分服务,您可以开始使用 Nagios 来监控关键任务的服务. 您可以使用 Nagios 设置关键事件的通知。 例如,当您的磁盘使用率达到警告或关键门槛时,您可以收到电子邮件,或者当您的主要网站停机时收到通知。