Nagios安装配置教程(四)配置使用



我是一只小鸟,老鸟直接飞过,有什么错误,还请谅解,谢谢

当您可以在web页面打开nagios的页面,就可以配置以下文件了



默认配置文件介绍

Nagios 安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下。

每个文件或目录含义如下表所示:

文件名或目录名用途


文件名或目录名

用途

cgi.cfg

控制CGI访问的配置文件

nagios.cfg

Nagios 主配置文件

resource.cfg

变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$

objects

objects 是一个目录,在此目录下有很多配置文件模板,用于定义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 主机的一个配置文件模板,默认没有启用此文件



进行监控文件配置的流程大概是这样,每增加一台被监控的机器(linux、window)都需要安装下面的配置文件一一做出相应的修改


修改主配置文件nagios.cfg             启用以下文件的配置、或者不启用以下的配置

配置时间模板timeperiods.cfg          定义报警的时间,监视的时间

配置联系人模板contacts.cfg           出现问题联系人,邮箱信息

配置联系组模板contactgroups.cfg      联系组,网络问题的网络管理组,系统问题的系统组

配置主机模板hosts.cfg                监控的主机信息,ip地址、主机名

配置主机组模板hostgroups.cfg         像linux系统组、window系统组,web服务器组等

配置检测服务模板services.cfg       监控主机的服务,像监控ping 、snmp、磁盘空间、web服务等


注:如果文件夹下没有此文件,请在安装包中找,或者新建




(一) 修改主配置文件nagios.cfg  


Nagios的主配置文件是nagios.cfg,我们就从这个文件开始修改。用vi编辑nagios.cfg,注释行,然后把下面几行的注释去掉:


cfg_file=/usr/local/nagios/etc/contactgroups.cfg    //联系组配置文件路径  

cfg_file=/usr/local/nagios/etc/contacts.cfg         //联系人配置文件路径  

cfg_file=/usr/local/nagios/etc/hostgroups.cfg       //主机组配置文件路径  

cfg_file=/usr/local/nagios/etc/hosts.cfg            //主机配置文件路径             上面已经介绍过文件配置的作用

cfg_file=/usr/local/nagios/etc/services.cfg         //服务配置文件路径  

cfg_file=/usr/local/nagios/etc/timeperiods.cfg      //监视时段配置文件路径  


去掉前面的 # 号,保持启用,我们编辑的配置文件有没有效果,全部都是在这个地方进行应用的


还要修改以下地方

check_external_commands=0为check_external_commands=1  

这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作

command_check_interval=115s为command_check_interval=10s

根据自己的情况定这个命令检查时间间隔,不要太长也不要太短





(二) 配置时间模板timeperiods.cfg


此文件只要用于定义监控的时间段,下面是一个配置好的实例:


#下面是定义一个名为24x7的时间段,即监控所有时间段  

define timeperiod{  

       timeperiod_name     24x7//时间段的名称,这个地方不要有空格

       alias           24 Hours A Day, 7 Days A Week  

       sunday          00:00-24:00  

       monday          00:00-24:00  

       tuesday         00:00-24:00  

       wednesday       00:00-24:00  

       thursday        00:00-24:00  

       friday          00:00-24:00  

       saturday        00:00-24:00  

       }  

#下面是定义一个名为workhours的时间段,即工作时间段。  

define timeperiod{  

       timeperiod_name workhours

       alias           Normal Work Hours  

       monday          09:00-17:00  

       tuesday         09:00-17:00  

       wednesday       09:00-17:00  

       thursday        09:00-17:00  

       friday          09:00-17:00  

       }  



注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制





(三) 配置联系人模板contacts.cfg


[root@localhost etc]# vi contacts.cfg


define contact{

       contact_name                    test

//联系人的名称,这个地方不要有空格

       alias                           sys admin    

// 随便填,不意义

       service_notification_period     24x7

//时间段就是上面在timeperiods.cfg中定义的timeperiod_name要对应

       host_notification_period        24x7

//时间段就是上面在timeperiods.cfg中定义的timeperiod_name要对应

       service_notification_options    w,u,c,r  

//当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.

       host_notification_options       d,u,r    

//当主机出现d—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人

       service_notification_commands   notify-by-email

//服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍

       host_notification_commands      host-notify-by-email  

//同上,主机出问题时采用的也是发邮件的方式通知联系人

       email                           test@test.com

//邮箱通知

       pager                           1338757xxxx

//短信通知

       address1                       xxxxx.xyyy@test.com

//随便填,不意义

       address2                        555-555-5555

//随便填,不意义

       }


注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制



(四) 配置联系组模板contactgroups.cfg


[root@localhost etc]# vi contactgroups.cfg


define contactgroup{

       contactgroup_name       sagroup

//联系人组的名称,同样不能空格

       alias                   System Administrators        

//别名

       members                 test

//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔,切记对应上面的配置

       }




(五) 配置主机模板hosts.cfg  


[root@localhost etc]# vi hosts.cfg


define host{

       host_name                       nagios-server

//被监控主机的名称,最好别带空格,自定义

       alias                           nagios server

//别名

       address                         125.222.31.20

//被监控主机的IP地址,我现在暂时先填本机的IP

       check_command                   check-host-alive

//监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活

       max_check_attempts              5

//检查失败后重试的次数

       check_period                   24x7

//检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的,切记对应

       contact_groups                  sagroup

//联系人组,上面在contactgroups.cfg中定义的sagroup,切记对应

       notification_interval           10

//提醒的间隔,每隔10秒提醒一次

       notification_period             24x7

//提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的,切记对应

       notification_options            d,u,r

//指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍

       }



注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制



(六) 配置主机组模板hostgroups.cfg


与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg


[root@localhost etc]# vi hostgroups.cfg

define hostgroup{

       hostgroup_name          sa-servers

//主机组名称,自定义

       alias                   sa Servers  

//别名

       members                nagios-server

//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的,切记对应

       }




(七) 配置检测服务模板services.cfg


[root@localhost etc]# vi services.cfg


#service definition

define service{

       host_name               nagios-server

//被监控的主机,hosts.cfg中定义的,自定义

       service_description     check-host-alive

//这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活

       check_command           check-host-alive

//所用的命令,是commands.cfg中定义的

       max_check_attempts      5

       normal_check_interval   3

       retry_check_interval    2

       check_period           24x7

//监控的时间段,是timeperiods.cfg中定义的,切记对应

       notification_interval   10

       notification_period     24x7

//通知的时间段, ,是timeperiods.cfg中定义的,切记对应

       notification_options    w,u,c,r

//在监控的结果是wucr时通知联系人,具体含义看前文.

       contact_groups          sagroup

//联系人组,是contactgroups.cfg中定义的,切记对应

       }


注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制




插入针对配置检测服务模板services.cfg中的    

check_command           check-host-alive

这一命令,是检查服务器得服务状态,监控主机的服务,像监控ping 、snmp、磁盘空间、web服务等,具体的命令已经命令的书写可以查看commands.cfg详细的说明


check_command                   check_ping!100.0,20%!500.0,60%

//查看ping

check_command                   check_local_disk!20%!10%!/

//查看本机磁盘使用情况

check_command                   check_local_users!20!50

//查看本机用户

check_command                   check_local_procs!250!400!RSZDT

//查看本机程序

check_command                 check_local_load!5.0,4.0,3.0!10.0,6.0,4.0

//查看本机负载

check_command                   check_local_swap!20!10

//查看swap 使用空间


其中的一些参数说明

check_local_disk定义如下


# 'check_local_disk' command definition

define command{

       command_name    check_local_disk

       command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$

       }


check_local_disk实际上是执行的check_disk插件.这里的$ARG1$, $ARG2$, $ARG3$是什么意思呢?在之前我们已经提到了这个check_disk这个插件的用法,-w的参数指定磁盘剩了多少是警告状态,-c的参数指定剩多少是严重状态,-p用来指定路径.

在使用check-host-alive的时候,只需要在services.cfg中直接写上这个命令名check-host-alive.后面没任何的参数.而使用check_local_disk则不同,在services.cfg中这要这么写

check_local_disk!10%!5%!/

在命令名后面用!分隔出了3个参数,10%是$ARG1$的值,5%是$ARG2$的值,/ 是$ARG3$的值,



在以上是监控命令中分为两种对于像磁盘容量,cpu负载这样的”本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力.毕竟没得到被控主机的适当权限是不可能得到这些信息的.为了解决这个问题,nagios有这样一个附加组件----NRPE.用它就可以完成对linux类型主机”本地信息”的监控.


NRPE总共由两部分组成:

– check_nrpe 插件,位于在监控主机上

– NRPE daemon,运行在远程的linux主机上(通常就是被监控机)

按照上图,整个的监控过程如下:

当nagios需要监控某个远程linux主机的服务或者资源情况时

1.nagios会运行check_nrpe这个插件,告诉它要检查什么.

2.check_nrpe插件会连接到远程的NRPE daemon,所用的方式是SSL

3.NRPE daemon会运行相应的nagios插件来执行检查

4.NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.

 注意:NRPE daemon需要nagios插件安装在远程的linux主机上,否则,daemon不能做任何的监控.

监控内部信息,需要通过客户端的NRPE 插件收集内部信息,服务器通过check_nrpe 接收客户端的信息。

配置被监控机器

[root@server nrpe-2.12]# groupadd nagios

[root@server nrpe-2.12]# useradd -g nagios -s /sbin/nologin nagios

[root@server libexec]# chown nagios.nagios /usr/local/nagios

[root@server libexec]# chown -R nagios.nagios /usr/local/nagios/libexec


1. 安装nrpe 插件

[root@server ~]# tar zxvf nrpe-2.12.tar.gz

[root@server ~]# cd nrpe-2.12

[root@server nrpe-2.12]# ./configure

[root@server nrpe-2.12]# make all

[root@server nrpe-2.12]# make install-plugin

[root@server nrpe-2.12]# make install-daemon

[root@server nrpe-2.12]# make install-daemon-config


2. 安装nagios 补丁

[root@server ~]# tar zxvf nagios-plugins-1.4.14.tar.gz

[root@server ~]# cd nagios-plugins-1.4.14

[root@server nagios-plugins-1.4.14]# ./configure --with-nagios-user=nagios --with-

nagios-group=nagios

[root@server nagios-plugins-1.4.14]# make

[root@server nagios-plugins-1.4.14]# make install


3. 配置nrpe.cfg

[root@server libexec]# vim /usr/local/nagios/etc/nrpe.cfg  

allowed_hosts=127.0.0.1,192.168.30.100  # 添加监控主机的IP


4. 启动nrpe守护进程

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

检查nrpe是否已经启动

[root@server ~]# netstat -nultp |grep 5666

tcp  0  0 0.0.0.0:5666     0.0.0.0:*      LISTEN      18929/nrpe


5. 测试nrpe功能

[root@server ~]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1

NRPE v2.12

正常的返回值为被监控服务器上安装的NRPE的版本信息,如果能看到这些,表示NRPE已经正常工作了


6. 定义监控服务器内容


服务端上的配置

1. 安装nrpe

[root@server ~]# tar zxvf nrpe-2.12.tar.gz

[root@server ~]# cd nrpe-2.12

[root@server nrpe-2.12]# ./configure

[root@server nrpe-2.12]# make all

[root@server nrpe-2.12]# make install-plugin

[root@server nrpe-2.12]# make install-daemon

[root@server nrpe-2.12]# make install-daemon-config

检测nrpe是否能正常和客户端通信

[root@server ~]# /usr/local/nagios/libexec/check_nrpe  -H 192.168.30.110

CHECK_NRPE: Error - Could not complete SSL handshake.

注意:这里有一个报错。


解决办法:

1).检查是否安装了openssl和openssl-devel包

[root@server ~]# rpm -qa |grep ssl

openssl-devel-1.0.0-20.el6_2.5.x86_64

openssl-1.0.0-20.el6_2.5.x86_64

2). 检查/usr/local/nagios/etc/nrpe.cfg 此配置文件是否配置正确

allowed_hosts=127.0.0.1,192.168.30.100

3).重启系统


若check_nrpe 的返回值是其版本号,则表示已正常通信

[root@server nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe  -H 192.168.30.110

NRPE v2.12



在运行nagios之前首先做测试

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

看到下面这些信息就说明没问题了

Total Warnings: 0

Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

如果有问题的话就可以按照输出信息来排查


作为守护进程后台启动nagios

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg


登陆http://your ip address /nagios/来查看吧.点左边的Host Detail