介绍
在本教程中,我们将介绍在CentOS 7或RHEL 7上安装Nagios 4(一种非常流行的开源监控系统)。我们将介绍一些基本配置,以便您可以通过Web界面监控主机资源。我们还将利用将作为代理安装在远程主机上的Nagios Remote Plugin Executor(NRPE)来监控其本地资源。
Nagios对于保留服务器清单以及确保关键服务正常运行非常有用。使用像Nagios这样的监控系统,对于任何生产服务器环境来说,是一个最基本的工具。
课程准备
要学习本教程,您必须拥有运行Nagios的CentOS 7服务器的超级用户权限。理想情况下,您将使用具有超级用户权限的非root用户。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
还需要LAMP堆栈。
本教程假定您的服务器启用了专用网络。如果没有,只需用公共IP地址替换所有对私有IP地址的引用。
现在我们已经解决了先决条件,让我们继续安装Nagios 4。
安装Nagios 4
本节将介绍如何在监控服务器上安装Nagios 4。您只需要完成此部分一次。
安装构建依赖项
因为我们正在从源代码构建Nagios Core,所以我们必须安装一些开发库来完成构建。
首先,安装所需的包:
代码语言:javascript复制sudo yum install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip
创建Nagios用户和组
我们必须创建一个运行Nagios流程的用户和组。创建“nagios”用户和“nagcmd”组,然后使用以下命令将用户添加到组:
代码语言:javascript复制sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
我们现在安装Nagios。
安装Nagios Core
下载Nagios Core最新稳定版的源代码。转到Nagios下载页面,然后单击表单下方的“ 跳过下载”链接。复制最新稳定版本的链接地址,以便将其下载到Nagios服务器。
在撰写本文时,最新的稳定版本是Nagios 4.1.1。使用curl将其下载到您的主目录:
代码语言:javascript复制cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz
使用以下命令提取Nagios存档:
代码语言:javascript复制tar xvf nagios-*.tar.gz
然后切换到解压缩的目录:
代码语言:javascript复制cd nagios-*
在构建Nagios之前,我们必须使用以下命令对其进行配置:
代码语言:javascript复制./configure --with-command-group=nagcmd
现在使用以下命令编译Nagios:
代码语言:javascript复制make all
现在我们可以运行这些make命令来安装Nagios,init脚本和示例配置文件:
代码语言:javascript复制sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
sudo make install-webconf
为了通过Web界面向Nagios发出外部命令,我们必须将Web服务器用户apache
添加到nagcmd
组:
sudo usermod -G nagcmd apache
安装Nagios插件
在撰写本文时,最新版本是Nagios Plugins 2.1.1。使用curl将其下载到您的主目录:
代码语言:javascript复制cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
使用以下命令提取Nagios Plugins存档:
代码语言:javascript复制tar xvf nagios-plugins-*.tar.gz
然后切换到解压缩的目录:
代码语言:javascript复制cd nagios-plugins-*
在构建Nagios插件之前,我们必须对其进行配置。使用此命令:
代码语言:javascript复制./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
现在使用以下命令编译Nagios插件:
代码语言:javascript复制make
然后使用以下命令安装它:
代码语言:javascript复制sudo make install
安装NRPE
在NRPE下载页面上找到最新稳定版NRPE的源代码。将最新版本下载到Nagios服务器。
在撰写本文时,最新版本是2.15。使用curl将其下载到您的主目录:
代码语言:javascript复制cd ~
curl -L -O http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
使用以下命令提取NRPE存档:
代码语言:javascript复制tar xvf nrpe-*.tar.gz
然后切换到解压缩的目录:
代码语言:javascript复制cd nrpe-*
使用以下命令配置NRPE:
代码语言:javascript复制./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启动脚本:
代码语言:javascript复制make all
sudo make install
sudo make install-xinetd
sudo make install-daemon-config
在编辑器中打开xinetd启动脚本:
代码语言:javascript复制sudo vi /etc/xinetd.d/nrpe
通过将Nagios服务器的专用IP地址添加到末尾来修改该only_from
行(替换为服务器的实际IP地址):
only_from = 127.0.0.1 10.132.224.168
保存并退出。只允许Nagios服务器与NRPE通信。
重新启动xinetd服务以启动NRPE:
代码语言:javascript复制sudo service xinetd restart
现在已经安装了Nagios 4,我们需要对其进行配置。
配置Nagios
现在让我们执行初始的Nagios配置。您只需在Nagios服务器上执行一次此部分。
组织Nagios配置
在您喜欢的文本编辑器中打开主Nagios配置文件。我们将使用vi来编辑文件:
代码语言:javascript复制sudo vi /usr/local/nagios/etc/nagios.cfg
现在通过删除#
找到此行的取消注释:
#cfg_dir=/usr/local/nagios/etc/servers
保存并退出。
现在创建一个目录,该目录将存储您将监视的每个服务器的配置文件:
代码语言:javascript复制sudo mkdir /usr/local/nagios/etc/servers
配置Nagios联系人
在您喜欢的文本编辑器中打开Nagios联系人配置。我们将使用vi编辑文件:
代码语言:javascript复制sudo vi /usr/local/nagios/etc/objects/contacts.cfg
找到电子邮件指令,并用您自己的电子邮件地址替换其值(突出显示的部分):
代码语言:javascript复制email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
保存并退出。
配置check_nrpe命令
让我们为Nagios配置添加一个新命令:
代码语言:javascript复制sudo vi /usr/local/nagios/etc/objects/commands.cfg
将以下内容添加到文件末尾:
代码语言:javascript复制define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
保存并退出。这允许您在Nagios服务定义中使用该check_nrpe
命令。
配置Apache
使用htpasswd创建一个名为“nagiosadmin”的管理员用户,可以访问Nagios Web界面:
代码语言:javascript复制sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
在提示符下输入密码。记住此登录信息,因为您需要它来访问Nagios Web界面。
注意:如果您创建的用户名为“nagiosadmin”,则需要编辑/usr/local/nagios/etc/cgi.cfg
并更改对您创建的用户的所有“nagiosadmin”引用。
Nagios准备开始了。让我们这样做,然后重启Apache:
代码语言:javascript复制sudo systemctl daemon-reload
sudo systemctl start nagios.service
sudo systemctl restart httpd.service
要使Nagios能够在服务器引导时启动,请运行以下命令:
代码语言:javascript复制sudo chkconfig nagios on
可选:通过IP地址限制访问
如果要限制可以访问Nagios Web界面的IP地址,则需要编辑Apache配置文件:
代码语言:javascript复制sudo vi /etc/httpd/conf.d/nagios.conf
通过在它们前面添加#
符号来查找和注释以下两行:
Order allow,deny
Allow from all
然后通过删除#
符号取消注释以下行,并在Allow from
行中添加要允许的IP地址或范围(空格分隔):
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
由于这些行将在配置文件中出现两次,因此您需要再次执行这些步骤。
保存并退出。
现在启动Nagios并重新启动Apache以使更改生效:
代码语言:javascript复制sudo systemctl restart nagios.service
sudo systemctl restart httpd.service
Nagios现在正在运行,所以让我们尝试登录。
访问Nagios Web界面
打开您喜欢的Web浏览器,然后转到Nagios服务器(替换突出显示部分的IP地址或主机名):
代码语言:javascript复制http://nagios_server_public_ip/nagios
因为我们将Apache配置为使用htpasswd,所以您必须输入先前创建的登录凭据。我们使用“nagiosadmin”作为用户名:
进行身份验证后,您将看到默认的Nagios主页。单击左侧导航栏中的Hosts链接,查看Nagios正在监控的主机:
如您所见,Nagios仅监视“localhost”或其本身。
让我们用Nagios监视另一台主机吧!
使用NRPE监控CentOS 7主机
在本节中,我们将向您展示如何向Nagios添加新主机,以便对其进行监控。对要监视的每个CentOS或RHEL服务器重复此部分。
在要监视的服务器上,安装EPEL存储库:
代码语言:javascript复制sudo yum install epel-release
现在安装Nagios插件和NRPE:
代码语言:javascript复制sudo yum install nrpe nagios-plugins-all
现在,让我们更新NRPE配置文件。在你最喜欢的编辑器中打开它(我们正在使用vi):
代码语言:javascript复制sudo vi /etc/nagios/nrpe.cfg
找到该allowed_hosts
指令,并将Nagios服务器的私有IP地址添加到逗号分隔列表中(替换它代替突出显示的示例):
allowed_hosts=127.0.0.1,10.132.224.168
保存并退出。这会将NRPE配置为通过其专用IP地址接受来自Nagios服务器的请求。
重新启动NRPE以使更改生效:
代码语言:javascript复制sudo systemctl start nrpe.service
sudo systemctl enable nrpe.service
在要监视的主机上完成NRPE的安装和配置后,必须先将这些主机添加到Nagios服务器配置中,然后才能开始监视它们。
将主机添加到Nagios配置
在Nagios服务器上,在/usr/local/nagios/etc/servers/
中,为要监视的每个远程主机创建新的配置文件。将突出显示的单词“yourhost”替换为您的主机名称:
sudo vi /usr/local/nagios/etc/servers/yourhost.cfg
添加以下主机定义,将host_name
值替换为远程主机名(示例中为“web-1”),带有主机描述的alias
值,以及带有远程主机的专用IP地址的address
值:
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的值确定将监视的内容,包括状态阈值。以下是一些可以添加到主机配置文件的示例:
代码语言:javascript复制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禁用服务通知):
代码语言:javascript复制define service {
use generic-service
host_name yourhost
service_description SSH
check_command check_ssh
notifications_enabled 0
}
如果您不知道use generic-service
是什么意思,其实它只是继承默认定义的名为“generic-service”的服务模板的值。
现在保存并退出。重新加载Nagios配置以使任何更改生效:
代码语言:javascript复制sudo systemctl reload nagios.service
完成配置Nagios以监控所有远程主机后,应该进行设置。请务必访问Nagios Web界面,并查看“ 服务”页面以查看所有受监控的主机和服务:
结论
既然您正在监控主机及其某些服务,那么您可能需要花一些时间来确定哪些服务对您来说是非常重要的,因此您可以开始监控这些服务。您可能还需要设置通知,例如,当磁盘利用率达到警告或严重阈值或主站点已关闭时,您会收到电子邮件,这样您就可以及时解决问题或在问题发生之前解决问题。
祝你好运!
更多CentOS教程请前往腾讯云 社区学习更多知识。
参考文献:《How To Install Nagios 4 and Monitor Your Servers on CentOS 7》