如何配置Nagios服务器以监控Apache服务器


在本文中,我们将介绍如何在CentOS 6.7上安装Nagios 4(一个非常流行的开源监控工具)。我们将介绍一些基本的配置步骤,这些步骤可能对通过Web界面监控大量资源很有用。在这里,我们还将使用Nagios远程插件执行器(NRPE),它作为代理安装在远程主机上,以监控服务器/客户端的本地资源。

Nagios可用于跟踪服务器清单,并确保关键服务正常运行。在任何生产服务器环境中,Nagios作为监控系统都是必不可少的工具。

前提条件

要配置Nagios,理想情况下,我们必须在运行Nagios的Linux服务器上拥有root用户权限。

安装Nagios 4

**创建Nagios用户和组**: 我们必须创建一个用户和组来运行Nagios进程。创建“Nagios”用户和“nagcmd”组,然后使用以下命令将用户添加到该组

# useradd nagios
# groupadd nagcmd
# usermod -a -G nagcmd nagios

安装构建依赖项

由于我们是从源代码构建Nagios Core,因此我们必须安装一些开发库,以便完成构建。同时,我们还将安装**apache2-utils**,它将用于设置Nagios Web界面。

首先,更新您的Yum软件包列表

# yum update

然后,安装所需的软件包

# yum install -y httpd php gcc glibc glibc-common gd gd-devel make net-snmp perl-rrd xinetd openssl-devel package perl-GD* ntp perl-rrd*

下载Nagios 4.1.1 Core和插件

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.1.1.tar.gz
# wget https://www.nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz

安装Nagios Core 4.1.1

我们需要使用tar命令解压下载的软件包,如下所示。

# tar –xvf nagios-4.1.1.tar.gz
# cd nagios-*

在构建Nagios之前,我们必须对其进行配置。如果您想将其配置为使用postfix(可以使用apt-get安装),请将`–with-mail=/usr/sbin/sendmail`添加到以下命令中

# ./configure --with-nagios-group=nagios --with-command-group=nagcmd

Output:

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: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/init.d
Apache conf.d directory: /etc/httpd/conf.d
Mail program: /usr/bin/mail
Host OS: nagios.test.com
Web Interface Options:
------------------------
HTML URL: https://127.0.0.1/nagios/
CGI URL: https://127.0.0.1/nagios/cgi-bin/
Traceroute (used by WAP): /usr/sbin/traceroute
Review the options above for accuracy. If they look okay,
type 'make all' to compile the main program and CGIs
*** Main program, CGIs and HTML files installed ***
Now compile Nagios with this command:

Output:
You can continue with installing Nagios as follows (type 'make'without any arguments for a list of all possible options):
# make install-init

– 这会将init脚本安装在`/etc/rc.d/init.d`中

# make install-commandmode

– 这会安装并配置保存外部命令文件的目录的权限

# make install-init

为了使nagios能够从命令行工作,我们需要安装命令模式。

# make install-commandmode

接下来,安装示例nagios文件,请运行以下命令。

# make install-config

Output:
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc/objects
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/nagios.cfg /usr/local/nagios/etc/nagios.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/cgi.cfg /usr/local/nagios/etc/cgi.cfg
/usr/bin/install -c -b -m 660 -o nagios -g nagios sample-config/resource.cfg /usr/local/nagios/etc/resource.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/templates.cfg
/usr/local/nagios/etc/objects/templates.cfg/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/commands.cfg
/usr/local/nagios/etc/objects/commands.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/contacts.cfg /usr/local/nagios/etc/objects/contacts.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/timeperiods.cfg /usr/local/nagios/etc/objects/timeperiods.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/localhost.cfg /usr/local/nagios/etc/objects/localhost.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/windows.cfg /usr/local/nagios/etc/objects/windows.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/printer.cfg /usr/local/nagios/etc/objects/printer.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/switch.cfg /usr/local/nagios/etc/objects/switch.cfg
*** Config files installed ***

安装Nagios插件

在此处查找Nagios插件的最新版本:Nagios插件下载。复制最新版本的链接地址,并复制链接地址以便您可以将其下载到您的Nagios服务器。

在撰写本文时,最新版本是Nagios Plugins 2.1.1。

# cd /root/nagios
# cd tar –xvf nagios-plugins-2.1.1.tar.gz
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl=/usr/bin/openssl --enable-perl-modules --enable-libtap
# make
# make install

安装NRPE

在NRPE下载页面查找NRPE最新稳定版本的源代码。将最新版本下载到您的Nagios服务器。

在撰写本文时,最新版本是2.15。

# mkdir -p /usr/local/src/nrpe
# cd /usr/local/src/nrpe

下载文件并解压

# wget http://kent.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
# tar -xf nrpe-2.15.tar.gz
# cd nrpe-2.15

由于OpenSSL库文件夹存在问题,我们需要使用`/usr/lib`以外的另一个路径

#./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

现在进行make和make install

# make all

接下来,安装NRPE插件守护程序和示例守护程序配置文件。

# make install-plugin
# make install-daemon
# make install-daemon-config

将NRPE守护程序作为服务安装在xinetd下。

# make install-xinetd

接下来,打开`/etc/services`文件,在文件的底部为NRPE守护程序添加以下条目。

# vi /etc/services
nrpe 5666/tcp                   NRPE

重启xinetd服务。

# service xinetd restart

本地验证NRPE守护程序

运行以下命令以验证NRPE守护程序在xinetd下是否正常工作。

# netstat -at | grep nrpe
tcp 0 0 *:nrpe                   *:*                LISTEN

验证NRPE守护程序是否正常运行。

# /usr/local/nagios/libexec/check_nrpe -H localhost
Output:
NRPE v2.15

现在Nagios 4.1.1已安装,我们需要对其进行配置。

配置Nagios

现在让我们执行初始Nagios配置。您只需要在Nagios服务器上执行此部分一次。

在您最喜欢的文本编辑器中打开主要的Nagios配置文件。我们将使用vi编辑该文件

# vi /usr/local/nagios/etc/nagios.cfg

现在找到并取消注释此行(删除#)

# cfg_dir=/usr/local/nagios/etc/servers

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

# mkdir /usr/local/nagios/etc/servers

配置Nagios联系人

在您最喜欢的文本编辑器中打开Nagios联系人配置。我们将使用vi编辑该文件

# vi /usr/local/nagios/etc/objects/contacts.cfg

找到email指令,并将其值(突出显示的部分)替换为您自己的电子邮件地址

email                nagios@localhost                ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

配置check_nrpe命令

让我们向Nagios配置添加一个新命令

# vi /usr/local/nagios/etc/objects/commands.cfg

将以下内容添加到文件的末尾

define command{
command_name             check_nrpe
command_line             $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

安装和配置Nagios的Web界面

我们完成了后端的所有配置,现在我们将使用以下命令配置Nagios的Web界面。以下命令将配置Nagios的Web界面,并将创建一个Web管理员用户“nagiosadmin”。

# make install-webconf

在此步骤中,我们将为“nagiosadmin”创建密码。执行此命令后,请两次提供密码并记住它,因为此密码将在您登录Nagios Web界面时使用。

# htpasswd -s -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:************
Re-type new password:************

添加nagiosadmin用户的密码

重新启动Apache以使新设置生效。

# service httpd start

Nagios现在正在运行,所以让我们尝试登录。

访问Nagios Web界面

打开您最喜欢的Web浏览器,然后转到您的Nagios服务器http://nagios_server_public_IP或私有IP地址/nagios。

因为我们将Apache配置为使用htpasswd,所以您必须输入您之前创建的登录凭据。我们使用“nagiosadmin”作为用户名

身份验证后,您将看到默认的Nagios主页。单击左侧导航栏中的“主机”链接,以查看Nagios正在监控哪些主机

如您所见,Nagios仅监控“localhost”或自身。

监控/使用NRPE添加新主机

在本节中,我们将向您展示如何向Nagios添加新主机,以便对其进行监控。对于要监控的每台服务器,重复此部分。

在要监控的服务器上,更新apt-get

# yum update

现在安装Nagios插件和NRPE

# yum install nagios-plugins nagios-nrpe-server

配置允许的主机

现在,让我们更新NRPE配置文件。在您最喜欢的编辑器中打开它(我们使用vi)

# vi /etc/nagios/nrpe.cfg

找到allowed_hosts指令,并将Nagios服务器的私有IP地址添加到逗号分隔的列表中(用突出显示的示例替换它)

allowed_hosts=127.0.0.1,10.132.224.168

保存并退出。这将配置NRPE以通过其私有IP地址或公共IP地址接受来自Nagios服务器的请求。

添加主机

# cd /usr/local/nagios/etc
# vi /usr/local/nagios/etc/hosts.cfg

define host{ name linux-box ; 此模板的名称 use generic-host ; 继承默认值 check_period 24x7 check_interval 5 retry_interval 1 max_check_attempts 10 check_command check-host-alive notification_period 24x7 notification_interval 30 notification_options d,r contact_groups admins register 0 } define host{ use linux-box ; 从模板继承默认值 host_name Testbox ; 我们为此服务器提供的名称 alias CentOS 6.7 ; 服务器的更长名称 address 192.168.1.84 ; 远程Linux主机的IP地址 }

要添加服务,我们需要编辑services.cfg文件,我们添加CPU负载、总进程、当前用户、根分区、主目录分区、Ping状态

# vi /usr/local/nagios/etc/services.cfg
define service{
   use                       generic-service
   host_name                 TestBox
   service_description       CPU Load
   check_command             check_nrpe!check_load
}
define service{
   use                       generic-service
   host_name                 Testbox
   service_description       Total Processes
   check_command             check_nrpe!check_total_procs
}
define service{
   use                       generic-service
   host_name                 Testbox
   service_description       Current Users
   check_command             check_nrpe!check_users
}
define service{
   use                       generic-service
   host_name                 Testbox
   service_description       Root Partition
   check_command             check_nrpe!check_disk
}
define service{
   use                       generic-service
   host_name                 Testbox
   service_description       Home Partition
   check_command             check_nrpe!check_disk_home
}
define service{
   use                      generic-service
   host_name                Testbox
   service_description      Ping Status
   check_command            check_ping!10.0,80%!50.0,90%
}

我们需要在nagios.cfg中添加此配置文件。

# vi /usr/local/nagios/nagios.cfg

cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg

现在需要在commands.cfg文件中创建NRPE命令定义。

# vi /usr/local/nagios/etc/objects/commands.cfg
define command{
   command_name check_nrpe
   command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

最后,验证Nagios配置文件中是否存在任何错误。

验证Nagios配置文件

现在我们完成了Nagios配置,现在该验证它了,为此,请运行以下命令。如果一切顺利,它将显示类似于以下输出的结果。

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Output:
Nagios Core 4.1.1
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 08-19-2015
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 7 services.
Checked 1 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 7 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 1 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check

重新启动Nagios服务器

# service nagios reload
Running configuration check...
Stopping nagios: done.
Starting nagios: done.

监控Apache Web服务器

Nagios也可用于监控Apache Web服务器。

Apache监控要求

监控Apache服务器是否可用。这项任务非常容易,因为Nagios为此内置了一个命令,我们需要编辑下面的文件。

# vi /etc/nagios3/conf.d/services.cfg
define service{
   use                   generic-service
   host_name             Webserver
   service_description    Check Apache Web Server
   check_command          check_http
}

完成后,请检查Nagios配置并在我们打开Web界面并单击服务后重新启动服务,我们可以看到Apache服务正在监控。

结论

现在您了解了Nagios及其功能,例如监控您的主机和某些服务,您可能需要花一些时间来确定哪些服务对您至关重要,以便您可以开始监控这些服务器。您可能还需要设置通知,例如,当磁盘利用率达到警告或临界阈值或您的主要网站关闭时,您会收到电子邮件,以便您可以立即或在问题发生之前解决问题。

更新于:2020年1月21日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告