Nagios+NSCA分布式监控的部署步骤
最近项目中有多个nat环境,如果在每个nat中部署一套完整的nagios(nagios-core+apache+php+pnp4nagios)总感觉不是很理想,通知联系人的管理也不是很方便,那么接下来就一起开始部署nagios分布式监控。
主Nagios中心服务部署
一、安装nagios
这一步略过,具体不清楚的可以参考一键脚本:https://zhangnq.com/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分布式监控服务可以把不同网络环境的主机添加到一个主的监控平台。使用主动监控模式,随着监控主机的增加,服务器对性能的要求会越来越高,分布式可以有效降低服务器压力。不过nagios+nsca分布式模式维护比较麻烦,需要维护多个nagios配置文件。
参考连接:
http://5122542.blog.51cto.com/5112542/1036064
https://docs.pnp4nagios.org/pnp-0.6/advanced
-
还没有Trackbacks
谢谢博主分享。看见代码就头疼,