监控对于对于系统管理人员的日常运维工作来说是非常重要的,而比较知名的开源监控软件有Ganglia、Cacti、Nagios、Zabbix等等,而本次就简单的说下Nagios的安装部署,因为Nagios是基于web页面查看管理的,那可以选用lamp或者是lnmp这些比较容易实现的web系统框架来实现即可,Nagios的官网是:https://www.nagios.org/downloads/,当然下载版本建议用最新的稳定版。Nagios的监控实现是由各个插件来完成的它本身是没有监控功能的,所以Nagios使用非常灵活,而在需要监控不同的平台主机、硬件时用不同的插件,下面从网页上找的一张图能很好的说明:wKioL1j7lDqDYCBXAADwVryoOFM808.jpg-wh_50

从图中得知Nagios监控中的插件SNMP在不同平台的主机、硬件上都有用到,而Linux中有send-nsca和NRPE一般我们常用的是NRPE,监听的是tcp的5666端口;而在Windows主机上使用的是NSClient++,监听的是12489和5666端口,这一点很重要做为被监控的主机上一定要开放这些端口。

   在安装Nagios之前需要先安装Nagios的监控主机(server端),然后再到被监控主机(clinet端)上安装相应的插件。

   1、server端:

在安装之前先要检查依赖包

[root@localhost ~]# yum -y groupinstall "Development Tools" "Development Libraries"#在配置好yum源的主机上,先检查下开发包组是否安装
或
[root@localhost ~]# yum -y install  httpd php php-mysql  gcc glibc glibc-common gd gd-devel sendmail openssl-devel#这里是测试就没有用编译包的php和apache,一般来说建议使用编译包

在依赖关系解决后就开始正常的Nagios安装,先安装Nagios的核心引擎和web页面

[root@bogon ~]# groupadd -r nagcmd#添加nagcmd组
[root@bogon ~]# useradd -M -G nagcmd -r -s /bin/bash nagios
[root@bogon ~]# passwd nagios#在这里建议设定用户密码,不要使用/sbin/nologin,不然之后的Nagios服务无法启动,主要是启动脚本中需要切换至Nagios用户去创建验证文件,当然也可以把脚本中check_config函数中的用su切换用的部分修改
[root@bogon ~]# usermod -a -G nagcmd apache#把nagcmd组附属在apache组
[root@bogon ~]# cd /usr/local/src/nagios-4.3.1
[root@bogon nagios-4.3.1]# ./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --enable-event-broker
[root@bogon nagios-4.3.1]#  make all && make install && make install-config && make install-init && make install-commandmode && make install-exfoliation && make install-classicui
[root@bogon nagios-4.3.1]#  make install-commandmode && make install-config#添加相应的插件
[root@bogon nagios-4.3.1]# vim /usr/local/nagios/etc/objects/contacts.cfg#修改邮件接收人的配置文件,在此就不做过多的说明,配置文件的注释里都有,主要改的就是邮箱地址
[root@bogon nagios-4.3.1]# make install-webconf#配置web配置文件
[root@bogon nagios-4.3.1]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin#配置Nagios的页面密码
New password: 
Re-type new password: 
Adding password for user nagiosadmin

到此nagios的核心引擎和基本web页面就已经安装完毕,在此直接启动httpd后使用浏览器测试下wKioL1kJPEOztm_JAABS_KZ_u8M327.png-wh_50

此时的Nagios是不具备任何监控功能,因为这台Nagios主机是Linux服务器,所以监控插件在这里选比较常用的nrpe,在安装nrpe之前要先安装好Nagios的插件plugins

[root@localhost nagios-4.3.1]# cd ../nagios-plugins-2.1.4
[root@localhost nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-2.1.4]# make && make install
[root@localhost nagios-plugins-2.1.4]# chkconfig --add nagios#添加Nagios的服务
[root@localhost nagios-plugins-2.1.4]# chkconfig nagios on#Nagios开机自启动
[root@localhost nagios-plugins-2.1.4]# /etc/init.d/nagios start
[root@localhost nagios-plugins-2.1.4]# getenforce#此处要注意的是要检查是否服务器上有开启selinux,如果有开启要选择关闭吧或者在selinux中添加nagios的相应文件到可以执行的标签中
Enforcing
[root@localhost nagios-plugins-2.1.4]# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
[root@localhost nagios-plugins-2.1.4]# chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

此时在server端上的Nagios的插件就已经安装完毕,此时便可以安装Nagios的nrpe插件

[root@localhost nagios-plugins-2.1.4]# cd ../nrpe-3.0.1/
[root@localhost nrpe-3.0.1]# ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios --enable-command-args --enable-ssl
[root@localhost nrpe-3.0.1]# make all && make install-plugin

这样在server端上的Nagios就已经安装部署完毕,此时Nagios已经可以自行监控本机。wKiom1kJ_bqSAe7YAADyYaRHjR0700.png-wh_50

   2、clinet端:

此处的客户端为了快速简单的部署实现,在这里就用另外一台Linux服务器来搭建。同理,在Nagios的client端下也要添加相应的用户。当然,也要先安装好Nagios的插件

[root@bogon ~]# useradd -M -r -s /sbin/nologin nagios
[root@bogon ~]# cd /usr/local/src/
[root@bogon src]# cd nagios-plugins-2.1.4
[root@bogon nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@bogon nagios-plugins-2.1.4]# make all && make install

在插件安装完毕后开始安装nrpe

[root@bogon nagios-plugins-2.1.4]# cd ../nrpe-3.0.1/
[root@bogon nrpe-3.0.1]# ./configure --enable-ssl
[root@bogon nrpe-3.0.1]# make all && make nrpe && make check_nrpe && make install && make install-plugin && make install-daemon && make install-config && make install-init

到这里Nagios的nrpe部分就安装结束了,以下做一些基本配置

[root@bogon nrpe-3.0.1]# vim /usr/local/nagios/etc/nagios/nrpe.cfg
…略…
allowed_hosts=192.168.218.128
#在这里的ip改成server端的Nagios的监听ip
…略…
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
#此处根据磁盘的实际使用的盘符情况修改
…略…
[root@bogon nrpe-3.0.1]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

在安装好后做一些基本的验证,这里要注意的是这些验证需要在监控server主机上做,被监控主机需要开启5666端口

[root@bogon nrpe-3.0.1]# cd /usr/local/nagios/libexec/
[root@bogon libexec]# ./check_nrpe -H 192.168.218.129#检查被监控主机的IP,这样有打印出版本号就是正常的
NRPE v3.0.1

这样Nagios的安装就完成了,而Nagios的家目录或文件的含义也很简单,如下:

目录
解释
bin
Nagios的二进制文件的目录
sbinNagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录
shareNagios网页文件所在的目录,建议这里去找一下中文的资料便于查阅
libexecNagios 外部插件所在目录
varNagios 日志文件、lock 等文件所在的目录
var/archivesNagios 日志自动归档目录
var/rw用来存放外部命令文件的目录

当然我这里是指定Nagios的配置文件路径在/usr/local/nagios/etc路径下,如果没有指定的话默认缺省是在Nagios的家目录下,而配置的一些文件或目录的含义也很简单,关系如下:

文件名或目录名用途
cgi.cfg控制CGI访问的配置文件
nagios.cfgNagios 主配置文件
resource.cfg变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$
objectsobjects 是一个目录,在此目录下有很多配置文件模板,用于定义Nagios 对象
objects/commands.cfg命令定义配置文件,其中定义的命令可以被其他配置文件引用
objects/contacts.cfg
定义联系人和联系人组的配置文件
objects/localhost.cfg定义监控本地主机的配置文件
objects/printer.cfg定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg定义监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg定义Nagios 监控时间段的配置文件
objects/windows.cfg监控Windows 主机的一个配置文件模板,默认没有启用此文件

在此时Nagios还是不能用的还有一些基础配置需要修改才能正常的使用,在这里为了便于管理可以把nagios.cfg的配置文件中使用cfg_file的全部注释掉全部使用cfg_dir

…略…
cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/objects
…略…

,在server端进入sysconfigdir目录,先要根据实际情况修改一下commandss.cfg文件,添加以下内容:

[root@bogon nagios]# vim objects/commands.cfg
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

在Nagios的默认配置文件下是没有Linux的配置文件所以如果是用于监控Linux主机,需要自行定义写配置文件,在此就用简单的写了一个Linux下使用的模板:

[root@bogon nagios]# vim objects/linux.cfg
define host{
        use             linux-server
        host_name       linuxhost
        alias           My linux Server
        address         192.168.218.129    ;这里填被监控主机的IP
        }

define service{
        use                     generic-service
        host_name               linuxhost
        service_description     CHECK_USERS
        check_command           check_nrpe!check_users
        }

define service{
        use                     generic-service
        host_name               linuxhost
        service_description     CHECK_LOAD
        check_command           check_nrpe!check_load
        }

define service{
        use                     generic-service
        host_name               linuxhost
        service_description     CHECK_SDA1
        check_command           check_nrpe!check_sda1
        }

define service{
        use                     generic-service
        host_name               linuxhost
        service_description     CHECK_ZOMBIE_PROCS
        check_command           check_nrpe!check_zombie_procs
        }

define service{
        use                     generic-service
        host_name               linuxhost
        service_description     CHECK_TOTAL_PROCS
        check_command           check_nrpe!check_total_procs
        }
[root@bogon nagios]# chown nagios:nagios linux.cfg#修改下配置文件的属组

在linux.cfg配置文件修改好后还需要 在nagios.cfg添加环境变量:

[root@bogon nagios]# vim nagios.cfg
…略…
cfg_file=/usr/local/nagios/etc/nagios/objects/linux.cfg
…略…

正在修改后可以用Nagios的配置文件验证检查

[root@bogon nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios/nagios.cfg
Nagios Core 4.3.1
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 02-23-2017
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 13 services.
        Checked 2 hosts.
        Checked 1 host groups.
        Checked 0 service groups.
        Checked 1 contacts.
        Checked 1 contact groups.
        Checked 25 commands.
        Checked 5 time periods.
        Checked 0 host escalations.
        Checked 0 service escalations.
Checking for circular paths...
        Checked 2 hosts
        Checked 0 service dependencies
        Checked 0 host dependencies
        Checked 5 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
[root@bogon nagios]# /etc/init.d/nagios restart

像这样就是没有报错的,再重启下Nagios就可以了,这样基本的Nagios的安装就完毕了,这里需要注意的是在Nagios的server端需要开启80、443端口用于Web管理页面的正常浏览,当然这也是一些基本的配置部署,如果要实现更多的功能还需要进一步的修改配置文件。