介绍
在本教程中,我们将介绍在 Ubuntu 14.04 上安装非常流行的开源监控系统 Nagios 4。 我们将介绍一些基本配置,因此您将能够通过 Web 界面监控主机资源。 我们还将利用 Nagios 远程插件执行器 (NRPE),它将作为代理安装在远程主机上,以监控其本地资源。
Nagios 可用于保存服务器清单,并确保您的关键服务正常运行。 使用像 Nagios 这样的监控系统对于任何生产服务器环境都是必不可少的工具。
先决条件
要学习本教程,您必须在运行 Nagios 的 Ubuntu 14.04 服务器上拥有超级用户权限。 理想情况下,您将使用具有超级用户权限的非 root 用户。 如果您在设置方面需要帮助,请按照本教程中的步骤 1 到 3 进行操作: 使用 Ubuntu 14.04 进行初始服务器设置。
还需要 LAMP 堆栈。 如果您需要进行设置,请遵循本教程:如何在 Ubuntu 14.04 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈。
本教程假设您的服务器启用了专用网络。 如果不是,只需将所有对私有 IP 地址的引用替换为公共 IP 地址。
现在我们已经整理好了先决条件,让我们继续安装 Nagios 4。
安装 Nagios 4
本节将介绍如何在监控服务器上安装 Nagios 4。 您只需完成此部分一次。
创建 Nagios 用户和组
我们必须创建一个将运行 Nagios 进程的用户和组。 创建一个“nagios”用户和“nagcmd”组,然后使用以下命令将该用户添加到该组:
sudo useradd nagios sudo groupadd nagcmd sudo usermod -a -G nagcmd nagios
安装构建依赖项
因为我们是从源代码构建 Nagios Core,所以我们必须安装一些开发库来完成构建。 在此过程中,我们还将安装 apache2-utils
,它将用于设置 Nagios Web 界面。
首先,更新您的 apt-get 软件包列表:
sudo apt-get update
然后安装所需的包:
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev xinetd apache2-utils unzip
现在让我们安装 Nagios。
安装 Nagios 核心
下载最新稳定版 Nagios Core 的源代码。 进入Nagios下载页面,点击表格下方的跳过下载链接。 复制最新稳定版本的链接地址,以便将其下载到 Nagios 服务器。
在撰写本文时,最新的稳定版本是 Nagios 4.1.1。 使用 curl 将其下载到您的主目录:
cd ~ curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz
使用以下命令提取 Nagios 存档:
tar xvf nagios-*.tar.gz
然后切换到解压目录:
cd nagios-*
在构建 Nagios 之前,我们必须对其进行配置。 如果要将其配置为使用 postfix(可以使用 apt-get 安装),请将 --with-mail=/usr/sbin/sendmail
添加到以下命令:
./configure --with-nagios-group=nagios --with-command-group=nagcmd
现在使用以下命令编译 Nagios:
make all
现在我们可以运行这些 make 命令来安装 Nagios、初始化脚本和示例配置文件:
sudo make install sudo make install-commandmode sudo make install-init sudo make install-config sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf
为了通过 Web 界面向 Nagios 发出外部命令,我们必须将 Web 服务器用户 www-data
添加到 nagcmd
组:
sudo usermod -G nagcmd www-data
安装 Nagios 插件
在此处找到最新版本的 Nagios 插件:Nagios 插件下载。 复制最新版本的链接地址,并复制链接地址,以便您可以将其下载到您的 Nagios 服务器。
在撰写本文时,最新版本是 Nagios Plugins 2.1.1。 使用 curl 将其下载到您的主目录:
cd ~ curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
使用以下命令提取 Nagios 插件存档:
tar xvf nagios-plugins-*.tar.gz
然后切换到解压目录:
cd nagios-plugins-*
在构建 Nagios 插件之前,我们必须对其进行配置。 使用这个命令:
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
现在使用以下命令编译 Nagios 插件:
make
然后使用以下命令安装它:
sudo make install
安装 NRPE
在 NRPE 下载页面 中找到 NRPE 最新稳定版本的源代码。 将最新版本下载到您的 Nagios 服务器。
在撰写本文时,最新版本是 2.15。 使用 curl 将其下载到您的主目录:
cd ~ curl -L -O http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
使用以下命令提取 NRPE 存档:
tar xvf nrpe-*.tar.gz
然后切换到解压目录:
cd nrpe-*
使用以下命令配置 NRPE:
./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
现在使用以下命令构建和安装 NRPE 及其 xinetd 启动脚本:
make all sudo make install sudo make install-xinetd sudo make install-daemon-config
在编辑器中打开 xinetd 启动脚本:
sudo vi /etc/xinetd.d/nrpe
修改 only_from
行,将您的 Nagios 服务器的私有 IP 地址添加到末尾(替换为您服务器的实际 IP 地址):
only_from = 127.0.0.1 10.132.224.168
保存并退出。 只有 Nagios 服务器将被允许与 NRPE 通信。
重启xinetd服务启动NRPE:
sudo service xinetd restart
现在已经安装了 Nagios 4,我们需要对其进行配置。
配置 Nagios
现在让我们执行初始 Nagios 配置。 您只需在 Nagios 服务器上执行此部分一次。
组织 Nagios 配置
在您喜欢的文本编辑器中打开主要的 Nagios 配置文件。 我们将使用 vi 来编辑文件:
sudo vi /usr/local/nagios/etc/nagios.cfg
现在通过删除 #
来取消注释这一行:
#cfg_dir=/usr/local/nagios/etc/servers
保存并退出。
现在创建一个目录来存储你要监控的每台服务器的配置文件:
sudo mkdir /usr/local/nagios/etc/servers
配置 Nagios 联系人
在您喜欢的文本编辑器中打开 Nagios 联系人配置。 我们将使用 vi 来编辑文件:
sudo vi /usr/local/nagios/etc/objects/contacts.cfg
找到 email 指令,并将其值(突出显示的部分)替换为您自己的电子邮件地址:
email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
保存并退出。
配置 check_nrpe 命令
让我们在 Nagios 配置中添加一个新命令:
sudo vi /usr/local/nagios/etc/objects/commands.cfg
将以下内容添加到文件末尾:
define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
保存并退出。 这允许您在 Nagios 服务定义中使用 check_nrpe
命令。
配置阿帕奇
启用 Apache 重写和 cgi 模块:
sudo a2enmod rewrite sudo a2enmod cgi
使用 htpasswd 创建一个名为“nagiosadmin”的管理员用户,该用户可以访问 Nagios Web 界面:
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
在提示符处输入密码。 记住此密码,因为您将需要它来访问 Nagios Web 界面。
注意: 如果您创建一个不名为“nagiosadmin”的用户,您需要编辑/usr/local/nagios/etc/cgi.cfg
并将所有“nagiosadmin”引用更改为您创建的用户。
现在创建一个 nagios.conf
到 sites-enabled
目录的符号链接:
sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/
Nagios 已准备好启动。 让我们这样做,然后重新启动 Apache:
sudo service nagios start sudo service apache2 restart
要使 Nagios 在服务器启动时启动,请运行以下命令:
sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
可选:通过 IP 地址限制访问
如果要限制可以访问 Nagios Web 界面的 IP 地址,则需要编辑 Apache 配置文件:
sudo vi /etc/apache2/sites-available/nagios.conf
通过在它们前面添加 #
符号来查找并注释以下两行:
Order allow,deny Allow from all
然后通过删除 #
符号取消注释以下行,并在 Allow from
行中添加您希望允许的 IP 地址或范围(空格分隔):
# Order deny,allow # Deny from all # Allow from 127.0.0.1
由于这些行将在配置文件中出现两次,因此您需要再次执行这些步骤。
保存并退出。
现在重新启动 Apache 以使更改生效:
sudo service nagios restart sudo service apache2 restart
Nagios 现在正在运行,所以让我们尝试登录。
访问 Nagios Web 界面
打开您喜欢的 Web 浏览器,然后转到您的 Nagios 服务器(用 IP 地址或主机名替换突出显示的部分):
http://nagios_server_public_ip/nagios
因为我们将 Apache 配置为使用 htpasswd,所以您必须输入您之前创建的登录凭据。 我们使用“nagiosadmin”作为用户名:
验证后,您将看到默认的 Nagios 主页。 点击左侧导航栏中的 Hosts 链接,查看 Nagios 正在监控哪些主机:
如您所见,Nagios 仅监控“localhost”或它自己。
让我们用 Nagios 监控另一台主机!
使用 NRPE 监控主机
在本节中,我们将向您展示如何将新主机添加到 Nagios,以便对其进行监控。 对您要监控的每台服务器重复此部分。
在您要监控的服务器上,更新 apt-get:
sudo apt-get update
现在安装 Nagios 插件和 NRPE:
sudo apt-get install nagios-plugins nagios-nrpe-server
配置允许的主机
现在,让我们更新 NRPE 配置文件。 在您喜欢的编辑器中打开它(我们使用的是 vi):
sudo vi /etc/nagios/nrpe.cfg
找到 allowed_hosts
指令,并将 Nagios 服务器的私有 IP 地址添加到逗号分隔的列表中(用它代替突出显示的示例):
allowed_hosts=127.0.0.1,10.132.224.168
保存并退出。 这会将 NRPE 配置为通过其私有 IP 地址接受来自 Nagios 服务器的请求。
配置允许的 NRPE 命令
查找根文件系统的名称(因为它是我们要监控的项目之一):
df -h /
我们将在 NRPE 配置中使用文件系统名称来监控您的磁盘使用情况(可能是 /dev/vda
)。 现在打开 nrpe.cfg 进行编辑:
sudo vi /etc/nagios/nrpe.cfg
NRPE 配置文件很长,注释很多。 您需要查找和修改几行:
- server_address:设置为本主机的私网IP地址
- allowed_hosts:设置为你的 Nagios 服务器的私有 IP 地址
- command[check_hda1]:将
/dev/hda1
更改为您的根文件系统被调用的任何内容
上述三行应如下所示(替换适当的值):
server_address=client_private_IP allowed_hosts=nagios_server_private_IP command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
请注意,如果 Nagios 服务器配置为使用它们,则此文件中定义的其他几个“命令”将运行。 另请注意,NRPE 将侦听端口 5666,因为已设置 server_port=5666
。 如果您有任何防火墙阻止该端口,请确保将其打开到您的 Nagios 服务器。
保存并退出。
重启 NRPE
重新启动 NRPE 以使更改生效:
sudo service nagios-nrpe-server restart
在您要监控的主机上完成安装和配置 NRPE 后,您必须将这些主机添加到您的 Nagios 服务器配置中,然后它才会开始监控它们。
将主机添加到 Nagios 配置
在您的 Nagios 服务器上,为要在 /usr/local/nagios/etc/servers/
中监视的每个远程主机创建一个新的配置文件。 将突出显示的单词“yourhost”替换为您的主机名:
sudo vi /usr/local/nagios/etc/servers/yourhost.cfg
添加以下主机定义,将 host_name
值替换为您的远程主机名(示例中为“web-1”),将 alias
值替换为主机描述,并将 [X180X ] 值与远程主机的私有 IP 地址:
define host { use linux-server host_name yourhost alias My first Apache server address 10.132.234.52 max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
使用上面的配置文件,Nagios 将只监控主机是启动还是关闭。 如果这对您来说足够了,请保存并退出,然后重新启动 Nagios。 如果您想监控特定服务,请继续阅读。
为您要监控的服务添加任何这些服务块。 请注意,check_command 的值决定了要监控的内容,包括状态阈值。 以下是一些可以添加到主机配置文件中的示例:
平:
define service { use generic-service host_name yourhost service_description PING check_command check_ping!100.0,20%!500.0,60% }
SSH(notifications_enabled 设置为 0 禁用服务通知):
define service { use generic-service host_name yourhost service_description SSH check_command check_ssh notifications_enabled 0 }
如果您不确定 use generic-service
是什么意思,它只是继承了默认定义的名为“generic-service”的服务模板的值。
现在保存并退出。 重新加载您的 Nagios 配置以使任何更改生效:
sudo service nagios reload
完成配置 Nagios 以监视所有远程主机后,您应该进行设置。 请务必访问您的 Nagios Web 界面,并查看 Services 页面以查看所有受监控的主机和服务:
结论
既然您监控了您的主机和它们的一些服务,您可能需要花一些时间来确定哪些服务对您至关重要,因此您可以开始监控这些服务。 您可能还需要设置通知,例如,当您的磁盘利用率达到警告或严重阈值或您的主网站关闭时,您会收到一封电子邮件,这样您就可以及时解决问题,甚至在问题发生之前解决问题。
祝你好运!