1. 首页
  2. 系统运维
  3. Nagios

Nagios+NSCA分布式监控的部署步骤

最近项目中有多个nat环境,如果在每个nat中部署一套完整的nagios(nagios-core+apache+php+pnp4nagios)总感觉不是很理想,通知联系人的管理也不是很方便,那么接下来就一起开始部署nagios分布式监控。

主Nagios中心服务部署

一、安装nagios

这一步略过,具体不清楚的可以参考一键脚本:http://blog.nbqykj.cn/?p=scripts

二、安装nsca

这里我还是使用非常老的2.7.2版本,功能够用、稳定就行。

1、先运行如下命令:

# wget http://download.chekiang.info/nagios/nsca-2.7.2.tar.gz
# tar zxvf nsca-2.9.1.tar.gz
# cd nsca-2.7.2
# ./configure
# make all

运行完成后会在src中生成几个文件,有可执行程序nsca、send_nsca,和一些配置文件、脚本。

# cp src/nsca /usr/local/nagios/bin/
# cp sample-config/nsca.cfg /usr/local/nagios/etc
# chown nagios.nagios /usr/local/nagios/bin/nsca
# chown nagios.nagios /usr/local/nagios/etc/nsca.cfg
# cp init-script /etc/init.d/nsca
# chmod a+x /etc/init.d/nsca
# update-rc.d nsca defaults

因为我的是ubuntu系统,nsca服务脚本我去掉前面几行检查的语句,不然会报错。

2、修改nsca的配置文件

# vi /usr/local/nagios/etc/nsca.cfg
password=123456

3、修改nagios的配置文件

# vi /usr/local/nagios/etc/nagios.cfg
check_external_commands=1 # 配置nagios检查扩展命令
accept_passive_service_checks=1 # 配置接受被动服务检测的结果
accept_passive_host_checks=1 #配置接受被动主机检测的结果

4、检查没问题后重启nagios和启动nsca 。

到这里nsca接收数据的程序就部署好了。

分布服务器部署

一、安装nagios

这里只需要安装nagios-core即可,不需要安装其他组件。

二、安装nsca-send

1、和主的一样,先运行如下命令:

# wget http://download.chekiang.info/nagios/nsca-2.7.2.tar.gz
# tar zxvf nsca-2.9.1.tar.gz
# cd nsca-2.7.2
# ./configure
# make all

以上步骤检查正确执行以后会在src目录下生成两个程序 nsca send_nsca(主程序),sample-config中会有nsca.cfg与send_nsca.cfg(配置文件)。

2、修改配置文件

# cp src/send_nsca /usr/local/nagios/bin/
# cp sample-config/send_nsca.cfg /usr/local/nagios/etc/
# chown nagios.nagios /usr/local/nagios/bin/send_nsca
# chown nagios.nagios /usr/local/nagios/etc/send_nsca.cfg

修改send_nsca.cfg配置,改下密码。

# vi /usr/local/nagios/etc/send_nsca.cfg
password=123456

这里的密码需要和主的一样。

3、修改nagios配置文件

enable_notifications=0 //阻止它直接送出任何通知信息 
obsess_over_services=1 // 配置为强迫型服务(obsess over services)类型 
ocsp_command=submit_service_check_result //定义一个强迫型服务处理(ocsp)命令 
obsess_over_hosts=1 // 配置为强迫型服务(obsess over host)类型 
ochp_command=submit_host_check_result //定义一个强迫型主机处理(ochp)命令

4、添加ocsp命令

在添加submit_service_check_result命令的时候需要加上perfdata数据,这样nagios接受到数据后pnp4nagios才可以生成图片。

# vi command.cfg
define command{
    command_name submit_service_check_result
    command_line $USER1$/eventhandlers/submit_service_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$ '$SERVICEOUTPUT$ | $SERVICEPERFDATA$ [$SERVICECHECKCOMMAND$]'
}
define command{
    command_name submit_host_check_result
    command_line $USER1$/eventhandlers/submit_host_check_result $HOSTNAME$ $HOSTSTATE$ '$HOSTOUTPUT$'
}

5、添加命令脚本

# mkdir /usr/local/nagios/libexec/eventhandlers
# cd /usr/local/nagios/libexec/eventhandlers
# wget https://raw.githubusercontent.com/zhangnq/nagios/master/setup/submit_host_check_result
# wget https://raw.githubusercontent.com/zhangnq/nagios/master/setup/submit_service_check_result
# chmod +x /usr/local/nagios/libexec/eventhandlers/submit_host_check_result
# chmod +x /usr/local/nagios/libexec/eventhandlers/submit_service_check_result

修改submit_host_check_result和submit_service_check_result两个脚本中的中心nagios监控主机ip或域名,即修改www.chekiang.info为你自己的地址。

6、检查没问题后有启动nagios。

添加监控主机和服务

添加监控的时候需要注意:

1、中心服务器和分布服务器都需要添加监控的主机和服务。

2、中心服务器主机定义的host_name值需要和分布服务器主机定义的host_name值一致。

3、中心服务器服务定义的service_description值需要和分布服务器服务定义的service_description 值一致。

一、分布服务器

分布服务器的配置增加和主动监控一样,先添加host,然后添加server即可。

二、中心服务器

根据以上提到的注意事项,原则是中心服务器需要和分布服务器的host_name和service_description一样。这样数据才可以在主的nagios中显示。

1、增加passive模式的主机和服务模板

修改templates.cfg 文件,增加类似如下内容:

# vi /usr/local/nagios/etc/objects/templates.cfg
define host{
        name                            passive-host
        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           60
        notification_options            d,u,r
        contact_groups                  sysmaint
        register                        0
        check_freshness                 1		;定义强制刷新检测
        freshness_threshold             600		;指定服务检测结果应该在何时间内刷新,单位是s
        passive_checks_enabled          1		;打开被动检测
        active_checks_enabled           0		;关闭主动监测
}
define service{
        name                            passive-service
        use                             generic-service
        active_checks_enabled           0		;关闭主动监测
        passive_checks_enabled          1		;打开被动检测
        flap_detection_enabled          0		;关闭状态抖动检测
        check_freshness                 1		;定义强制刷新检测
        freshness_threshold             600		;指定服务检测结果应该在何时间内刷新,单位是s
        max_check_attempts              4
        normal_check_interval           5
        retry_check_interval            1
        register                        0
        check_command                   service-is-stale	;定义强制检测的执行命令
}

2、增加强制检测命令

添加脚本

# vi /usr/local/nagios/libexec/staleservice.sh
#!/bin/bash

/bin/echo "CRITICAL: Service results are stale!"
exit 2
# chmod +x /usr/local/nagios/libexec/staleservice.sh

添加命令

# vi /usr/local/nagios/etc/objects/commands.cfg
define command{
        command_name    service-is-stale
        command_line    $USER1$/staleservice.sh
}

3、添加主机和服务

复制分布服务器中的hosts和servers到nagios中心服务器中,修改定义主机中的use模板为定义的passive-host,之前默认一般为linux-server,修改定义服务器中的use模板为定义的passive-service,取消check_command值的定义。类似如下:

define host{
        use             passive-host
        host_name       10.22.127.100
        alias           10.22.127.100
        address         10.22.127.100
}
define service{
        use                     passive-service,srv-pnp
        host_name               10.22.127.100
        service_description     check ssh login
}

4、检查重启

添加完成后检查nagios配置是否正确,然后重启。

5、日志

日志一般是在/usr/local/nagios/var/nagios.log中,正常的话显示如下,如果配置有问题也可以通过日志查找原因。

nagios-passive-log

总结

nagios分布式监控服务可以把不同网络环境的主机添加到一个主的监控平台。使用主动监控模式,随着监控主机的增加,服务器对性能的要求会越来越高,分布式可以有效降低服务器压力。不过nagios+nsca分布式模式维护比较麻烦,需要维护多个nagios配置文件。

参考连接:

http://5122542.blog.51cto.com/5112542/1036064

https://docs.pnp4nagios.org/pnp-0.6/advanced

评论列表(0条)

  • 成都卫校 2016-06-02 10:23

    谢谢博主分享。看见代码就头疼,

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code