再谈Nagios安装与配置(3)

【配置被监控端】
一、安装nagios-plugin
# useradd nagios
# tar zxvf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-RedHat-pthread-workaround
# make
# make install
chown -R nagios.nagios /usr/local/nagios

二、安装被监控端nrpe
# tar zxvf nrpe-2.12.tar.gz
# cd nrpe
# .configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config

配置nrpe
vi  /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=192.168.0.1,127.0.0.1
启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
也可讲其写入到/etc/rc.d/rc.local中开机运行

验证nrpe
# netstat -anpl |grep 5666
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      11750/nrpe   
# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.12

然后服务端测试
/usr/local/nagios/libexec/check_nrpe -H 被监控机IP
NRPE v2.12
配置监控对象(重要)
# vi /usr/local/nagios/etc/nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
这一步是关键,如果nagios服务器想要监控客户机swap分区,但客户机nrpe.cfg文件
没有swap监控对像,这时监控服务器就是报错(NRPE command ‘check_swap’no defined).
平时自己写脚本,也是主要配这个地方
至此就可以监控linux客户机的disk,swap,users,memory了

那么到了这里还不够,如果我们需要邮件报警或者短信报警的功能那么就要进行更加负责的操作

【邮件报警】
我们首先看一下邮件报警的功能事怎么定义的:
vi /usr/local/nagios/etc/objects/commands.cfg
#'notify-host-by-email' command definition
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotific
ation Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddre
ss: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bi
n/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **"
$CONTACTEMAIL$
        }

# 'notify-service-by-email' command definition
define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotific
ation Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$
\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME
$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIO
NTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONT
ACTEMAIL$
        }
这里定义了host和server两个模块的email发送方式,
可以看到nagios默认的是使用linux系统自带的/bin/mail 来发送邮件的,
这里nagios已经帮我们配置好了,不出意外的话不需要进行太多修改。但是如果你需要用sendmail的话,可以自己修改命令。

下面来看看联系人的配置文件
vim /usr/local/nagios/etc/objects/contacts.cfg
定义一个发送邮件的地址和选项
define contact{
     contact_name            nagiosadmin        //定义联系人的名字
     use                        generic-contact        //这个名字是默认的,没有进行修改                                                                                                                                       做修改
     alias                    Nagios Admin        //别名
     service_notification_period          24x7        //服务出现状况通知的时间段,这个时间段是objects中的timeperiod.cfg中定义的
     host_notification_period         24x7        //主机出现状况通知的时间段,这个时间段同样是timeperiod.cfg中定义的
      service_notification_options      w,u,c,r  //当服务器出现w(warning),u(unkown),c(critical),或者r(恢复)这几种情况下通知联系人
      host_notification_options         d,u,r         //与service差不多,d的意思是down
      service_notification_commands   notify-service-by-email         // 定义服务出现问题,使用命令notify-service-by-email通知
      host_notification_commands      notify-host-by-email     //主机出现问题使用notify-host-by-email 通知
      email                          xxx@xx.com    //通知人的邮件地址

}

这里顺便也讲contact组也定义了 如下:

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin
}

下面来看监控主机的配置文件,我这里的配置文件为localhost.cfg
你可以选择起任何的名字,只需要在nagios.cfg中重新定义即可。
vi /usr/local/nagios/etc/objects/localhost.cfg
定义主机如下:
define host{
    host_name    linux-20      //为被监控的主机起个名字
    alias        linux20       //起个别名
    address        192.168.0.20   //IP地址
    contact_groups    admins       //联系人的组,在contacts.cfg中定义
    check_command    check-host-alive  //检查主机状态的命令,commands.cfg中定义
    check_period    24x7    //检查的时间段24*7,来自timeperiod.cfg中定义的
    max_check_attempts    3  //检查失败后的重试次数
    notification_interval        10  //提醒的间隔,单位是分钟
    notification_period        24x7  //提醒周期,来自timeperiod.cfg中定义
    notification_options        d,u,r   //报警的选项
}
主机检查命令行一般选择检查主机存活check-host-alive
最大尝试次数最好不要设置为“1”,一般来说3-4次比较合理,否则你的邮箱估计会爆掉
顺便将host组也定义下
define hostgroup{
        hostgroup_name  linux-servers
        alias           Linux Servers
        members         linux-20  //可以在此添加linux主机,以逗号分离
}

下面来编辑service 的配置还是在localhost.cfg下,以Ping和apache服务为例子
define service {
host_name         linux-20                      #被监控的主机,hosts.cfg中定义的
service_description     PING                      #定义的是监控这个主机是不是存活,描述是PING
check_period                24x7                        #监控的时间段,是timeperiods.cfg中定义的
notification_interval           10                 #重复发送提醒信息的最短间隔时间。默认间隔时间是
                                                  "60"分钟。如果这个值设置为 "0" ,将不会发送重复提醒
normal_check_interval           3                 #检查间隔3分钟
max_check_attempts              3                 #最大重试次数,重新检查3次 3次都失败就报警
retry_check_interval            2                 #重试检查间隔时间2分钟
check_command         check_ping!100.0,20%!500.0,60%  #使用ping来做健康检查
contact_groups                admins               #联系人组,是contactgroups.cfg中定义的
                      }

define service {
host_name         linux-20
max_check_attempts              5
check_period                    24x7
notification_interval           10
normal_check_interval           1
retry_check_interval            1
service_description     HTTP
check_command         check_http
notification_period        24x7
notification_options        w,u,c,r
contact_groups             admins
                       }

主机名 host_name,必须是主机配置文件hosts.cfg中定义的主机。
检查用的命令check_command,在命令配置文件中定义或在nrpe配置文件中有定义。
最大重试次数max_check_attempts 一般设置为3-4次比较好,这样不会因为网络闪断片刻而发生误报。
检查间隔和重试检查间隔的单位是分钟。
通知间隔指探测到故障以后,每隔多少时间发送一次报警信息。 它的单位是分钟。
通知选项跟服务定义配置文件相同。
联系组contact_groups由配置文件contactgroup.cfg定义。

最后我们检查下配置文件是否正确
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios restart 
通过破坏测试,看看你能不能收到邮件吧。
PS:关于收不到邮件有很多可能
1.本地mail命令没有权限给nagios用或者mail本身就无法使用
2.本地防火墙阻止
3.commands.cfg中的mail功能定义错误
4.你定义的收件邮箱阻止了nagios的邮件
想查看你的邮件到底有没有发送出去,还是要看/var/log/maillog的日志吧
一般来说配置的过程中会出现很多问题 多用
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
验证,多查看各个日志是能找到关键性的错误点的,祝大家好运。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/psxwf.html