Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户。它是基于GPLv2开发的开源软件,可免费获得及使用。 使用Nagios这样的监控系统是生产环境的必备工具,通过监控系统运行时间,CPU使用率或磁盘空间,您可以在问题发生之前解决用户问题。
在本教程中,您将安装Nagios 4并对其进行配置,您可以通过Nagios的Web界面监控主机资源。您还将设置Nagios Remote Plugin Executor插件,它在远程主机上作为代理运行,您可以用他监视其他资源。
要完成本教程,您需要以下内容:
- 配置域名以指向您的服务器。保护你网站的最简单方法是使用[腾讯云SSL证书服务](https://cloud.tencent.com/product/ssl),它提供免费的可信证书。[腾讯云SSL证书安装操作指南](https://cloud.tencent.com/document/product/400/6814)进行设置。
- **如果你没有域名**,如果你只是使用此配置进行测试或个人使用,则可以使用自签名证书。自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为[Apache创建自签名SSL证书](https://cloud.tencent.com/developer/article/1165840)这篇文章。
有多种方法可以安装Nagios,我们将从源代码安装Nagios及其组件,以确保我们获得最新的功能及安全更新和BUG修复。
登录到运行Apache的服务器。我们称之为Nagios服务器。
ssh sammy@your_nagios_server_ip
创建一个nagios用户和nagcmd组。您将使用它们来运行Nagios。
sudo useradd nagios
sudo groupadd nagcmd
然后将用户添加到nagcmd
组:
sudo usermod -a -G nagcmd nagios
因为我们需要从源代码构建了Nagios及其组件,所以我们必须安装一些开发库来完成构建,包括编译器,开发软件包及OpenSSL。
更新软件包列表以确保您可以下载最新版本:
sudo apt-get update
然后安装所需的包:
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip
接下来,我们可以自行安装Nagios。下载Nagios Core最新稳定版的源代码。转到Nagios下载页面,然后单击表单下方的“跳过下载”链接。复制稳定版本的链接地址,以便将其下载到Nagios服务器。
使用curl
命令将其下载到您的主目录:
cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.4.tar.gz
提取Nagios存档:
tar zxf nagios-*.tar.gz
然后切换到解压缩的目录:
cd nagios-*
在构建Nagios之前,请运行configure
脚本以指定您希望Nagios使用的用户和组。使用您创建的nagios用户和nagcmd组:
./configure --with-nagios-group=nagios --with-command-group=nagcmd
如果您希望Nagios使用Postfix发送电子邮件,您必须安装Postfix并配置Nagios来使用它。我们不会在本教程中介绍Postfix,但如果您以后选择使用Postfix和Nagios,则需要重新配置并重新安装Nagios才能使用Postfix。
您将看到configure
命令输出以下内容:
*** Configuration summary for nagios 4.3.4 2017-08-24 ***:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Install ${includedir}: /usr/local/nagios/include/nagios
Lock file: /run/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/init.d
Apache conf.d directory: /etc/apache2/sites-available
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
现在运行make
命令来安装Nagios以及他的init脚本及其默认配置文件:
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
您将使用Apache来安装Nagios的Web界面,因此将Nagios Apache示例配置文件复制到/etc/apache2/sites-available
文件夹:
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 Remote Plugin Executor来监视远程主机。它由两部分组成:
check_nrpeNagios
服务器的插件。让我们在Nagios服务器上安装check_nrpe
插件。在NagiosExchange站点上找到最新稳定版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-*.tar.gz
然后切换到解压缩的目录:
cd nrpe-*
配置check_nrpe
插件:
./configure
构建并安装check_nrpe
:
make check_nrpe
sudo make install-plugin
接下来配置Nagios服务器。
现在让我们执行初始的Nagios配置,编辑一些配置文件。您只需在Nagios服务器上执行一次该操作。
在文本编辑器中打开主Nagios配置文件:
sudo nano /usr/local/nagios/etc/nagios.cfg
在文件中找到这一行:
...
#cfg_dir=/usr/local/nagios/etc/servers
...
通过删除行前面的#
字符取消注释此行:
cfg_dir=/usr/local/nagios/etc/servers
保存并退出编辑器。现在创建将存储监视每个服务器配置文件的目录:
sudo mkdir /usr/local/nagios/etc/servers
在文本编辑器中打开Nagios联系人配置:
sudo nano /usr/local/nagios/etc/objects/contacts.cfg
找到该email命令行并将其值替换为您自己的电子邮件地址:
...
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
的新命令:
...
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
这定义了执行插件的命令行选项。您将在步骤5中使用此命令。
保存并退出编辑器。
现在配置服Nagios WEB界面的Apache配置,使用以下命令启用Apache rewrite
和cgi
模块a2enmod
:
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
目录。这将启用Nagios虚拟主机。
sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/
接下来,打开Nagios的Apache配置文件。
sudo nano /etc/apache2/sites-available/nagios.conf
如果您想为Apache配置HTTPS页面,请找到此行的两个匹配项:
# SSLRequireSSL
通过删除#
符号取消注释。
如果要限制可以访问Nagios Web界面的IP地址,请找到以下两行:
Order allow,deny
Allow from all
通过在它们前面添加#
符号来注释它们:
# Order allow,deny
# Allow from all
然后找到以下行:
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
通过删除#
符号取消注释,并在Allow from行中添加要允许的IP地址或范围(空格分隔):
Order deny,allow
Deny from all
Allow from 127.0.0.1 your_ip_address
这些行在配置文件中出现了两次,因此请确保更改两次。然后保存并退出编辑器。
重新启动Apache以加载新的Apache配置:
sudo systemctl restart apache2
通过Apache配置,您可以为Nagios设置服务。Nagios没有提供Systemd单元文件来管理服务,所以让我们创建一个。创建nagios.service
文件并在编辑器中打开它:
sudo nano /etc/systemd/system/nagios.service
在文件中输入以下定义。此定义指定Nagios何时应该启动以及Systemd可以在何处找到Nagios应用程序。
[Unit]
Description=Nagios
BindTo=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
User=nagios
Group=nagios
ExecStart=/usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg
保存文件并退出编辑器。
然后启动Nagios:
sudo systemctl enable /etc/systemd/system/nagios.service
sudo systemctl start nagios
Nagios现在正在运行,所以让我们登录其Web界面。
访问http://nagios_server_public_ip/nagios
,在显示的弹出窗口中输入Web界面的登录凭据。我们这里使用nagiosadmin作为用户名,以及为该用户创建的密码。
身份验证后,您将看到默认的Nagios主页。单击左侧导航栏中的Hosts链接,查看Nagios正在监控的主机:
如您所见,Nagios仅监视“localhost”或其本身。让我们设置使用Nagios监控我们的其他服务器。
让我们添加一个新的主机,以便Nagios可以监控它。我们将在远程主机上安装Nagios Remote Plugin Executor(NRPE),然后配置Nagios服务器以监控该主机。
登录到第二台服务器,我们称之为受监控服务器。
ssh sammy@your_monitored_server_ip
首先创建一个“nagios”用户,它将运行NRPE代理。
sudo useradd nagios
我们将从源代码安装NRPE,这意味着您需要在Nagios服务器上安装相同的开发库。更新软件包源并安装NRPE的准备项:
sudo apt-get update
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip
从Nagios插件下载页面找到最新版本的Nagios插件。复制最新版本的链接地址,以便将其下载到Nagios服务器。
使用curl命令将Nagios插件下载到您的主目录:
cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
解压缩Nagios插件:
tar zxf nagios-plugins-*.tar.gz
切换到解压缩的目录:
cd nagios-plugins-*
在构建Nagios插件之前,将其配置为使用nagios用户和组,并配置OpenSSL支持:
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
现在编译插件:
make
然后安装它们:
sudo make install
接下来,安装NRPE。在Nagios Exchange站点上查找NRPE最新稳定版本的下载URL,就像在步骤1中一样。在NagiosExchange站点上找到最新稳定版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-*.tar.gz
然后切换到解压缩的目录:
cd nrpe-*
通过指定Nagios用户和组来配置NRPE,并告诉它您需要SSL支持:
./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及其启动脚本:
make all
sudo make install
sudo make install-config
sudo make install-init
接下来,让我们更新NRPE配置文件:
sudo nano /usr/local/nagios/etc/nrpe.cfg
找到该allowed_hosts
指令,并将Nagios服务器的私有IP地址添加到逗号分隔列表中:
allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip
这会将NRPE配置为通过其专用IP地址接受来自Nagios服务器的请求。
保存并退出编辑器。现在你可以开始使用NRPE了:
sudo systemctl start nrpe.service
通过检查其状态来确保服务正在运行:
sudo systemctl status nrpe.service
您将看到以下输出:
...
Oct 16 07:10:00 nagios systemd[1]: Started Nagios Remote Plugin Executor.
Oct 16 07:10:00 nagios nrpe[14653]: Starting up daemon
Oct 16 07:10:00 nagios nrpe[14653]: Server listening on 0.0.0.0 port 5666.
Oct 16 07:10:00 nagios nrpe[14653]: Server listening on :: port 5666.
Oct 16 07:10:00 nagios nrpe[14653]: Listening for connections on port 5666
Oct 16 07:10:00 nagios nrpe[14653]: Allowing connections from: 127.0.0.1,::1,207.154.249.232
接下来,允许流量通过防火墙访问5666
端口。如果您使用的是UFW,请将其配置为允许TCP连接到5666
端口,如果您使用的是腾讯云的服务器,则只需要在安全组页面放通5666
端口即可:
sudo ufw allow 5666/tcp
现在您可以检查与远程NRPE服务器的通信。在Nagios服务器上运行以下命令:
/usr/local/nagios/libexec/check_nrpe -H remote_host_ip
您将看到以下输出:
NRPE v3.2.1
现在让我们配置一些Nagios可以监控的基本信息。
首先,让我们监控该服务器的磁盘使用情况。使用该df -h
命令查找根文件系统。您将在NRPE配置中使用此文件系统:
df -h /
您将看到类似于此的输出:
Filesystem Size Used Avail Use% Mounted on
udev 490M 0 490M 0% /dev
tmpfs 100M 3.1M 97M 4% /run
/dev/vda1 29G 1.4G 28G 5% /
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda15 105M 3.4M 102M 4% /boot/efi
tmpfs 100M 0 100M 0% /run/user/0
现在在编辑器中打开/usr/local/nagios/etc/nrpe.cfg
文件:
sudo nano /usr/local/nagios/etc/nrpe.cfg
NRPE的配置文件非常长。您需要查找和修改以下几行:
/dev/hda1
为你服务器根文件系统的目录找到这些设置并更改它们:
...
server_address=monitored_server_private_ip
...
command[check_vda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda1
...
保存并退出编辑器。
重新启动NRPE服务以使更改生效:
sudo systemctl restart nrpe.service
对于要监视其他服务器,请重复本节中的步骤。在要监视的主机上完成NRPE的安装和配置后,必须先将这些主机添加到Nagios服务器配置中,然后才能开始监视它们。
要使用Nagios监视主机,您将为每个主机添加配置文件,指定要监视的内容。然后,您可以在NagiosWeb界面中查看这些主机。
在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
值,使用远程主机的IP地址替换address
值:
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只会告知您主机是启动还是关闭。让我们添加一些服务来监控。
首先,添加此块以监视CPU使用情况:
define service {
use generic-service
host_name your_monitored_server_host_name
service_description CPU load
check_command check_nrpe!check_load
}
use generic-service
指令告诉Nagios继承generic-service服务模板的值。
接下来,添加此块以监视磁盘使用情况:
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并将其配置为监视至少一台远程计算机的CPU和磁盘使用情况。
您可以开始使用Nagios来监控您的关键任务,您可以使用Nagios为关键事件设置通知。例如,您可以在磁盘利用率达到警告或阈值时收到电子邮件,或在主网站关闭时收到通知。通过这种方式,您可以及时解决问题,避免主机宕机的风险。如果您使用的是腾讯云的服务器,您可以直接使用腾讯云基础监控BCM服务您可以在这里看到最全、最详细的监控数据。基础监控实时监控云服务器、云数据库、CDN等云产品,提取云产品关键指标,以监控图标形式展示,且支持设置自定义告警阈值,为您提供立体化云产品数据监控、智能化数据分析、实时化故障告警和个性化数据报表配置,让您实时、精准掌控业务和各个云产品健康状况。
参考文献:《How To Install Nagios 4 and Monitor Your Servers on Ubuntu 16.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。