首页 > 代码库 > nagios/passive_check
nagios/passive_check
layout: post
title: “nagios/passive_check”
术语
- 监控机 (MS:Monitor Server)
- 被监控机(MC:Monitor Client)
注意:(本文是ubuntu14.04为基础环境,创建被动模式的配置,以下分别用术语中定义的简称 MS,MC)
被动模式工作原理:
在MC上面,使用nagios-plugins提供的插件,得出监数据,将数据发送到MS端,MS上面运行一个daemon用来接收这些数据(常见的是nsca,或 nrdp),将接受到的数据转换成预定义的格式,发送给发给nagios的“外部命令文件”(ubuntu14.04 nagios 默认配置是 “/var/lib/nagios3/rw/nagios.cmd”在nagios.cfg中定义的)该文件是一个管道文件,也是nagios主程序的一个接口(用来接收监控数据),nagios主程序将会对数据进行处理(前台展示,警报)。
优缺点
优点:相比与主动模式中服务器主动去被监控机上轮询获取监控数据的方式,被动模式则是在被监控机上面通过插件获取监控数据,然后将数据发往监控机,最后监控机对监控数据处理。这样做的一个很大的优势就是将除了处理数据的其他工作都放在了被监控机上面(包括了数据的传输),这样就避免了被监控机数量大时,一次轮询时间过长而导致监控反应延迟,这也是被动模式能承担更大监控量的关键。
缺点:当监控的主机规模进一步扩大,会被"外部命令文件"I/O局限所拖累
nagios 配置
- 开启被动监控
/etc/nagios3/nagios.cfg
check_external_commands = 1 (enable commands file) command_check_interval = -1 (check the external command file as often as possible )
- 定被模板
添加模板,修改配置文件 template.cfg,添加如下内容:
define service{ name passive_service use generic-service max_check_attempts 1 active_checks_enabled 0 #(关闭主动检测) passive_checks_enabled 1 #(开启被动检测) normal_check_interval 5 retry_check_interval 1 check_freshness 1 # 开启强制刷新 notifications_enabled 1 notification_interval 5 notification_period 24x7 contact_groups admins register 0 # (必须) }
- 定义被动监控指令
/etc/nagios3/commands.cfg
define command { command_name check_dummy command_line /usr/lib/nagios/plugins/check_dummy $ARG1$ $ARG2$ }
check_dummy指令实际上不检查任何东西,指定两个参数,一个是状态,一个是输出,始终返回这两个参数。
# /usr/lib/nagios/plugins/check_dummy 0 successful OK: successful # /usr/lib/nagios/plugins/check_dummy 1 failed WARNING: failed # /usr/lib/nagios/plugins/check_dummy 2 failed CRITICAL: failed # /usr/lib/nagios/plugins/check_dummy 3 failed UNKNOWN: failed
- 定义要被动监控的主机
define service { use passive_service host_name localhost service_description check_disk_passive freshness_threshold 86400 # 主服务端强制刷新的时间(s) check_command check_dummy!1!"Check failed No return data for 24 hours" }
外部应用程序如何提交主机检查结果
外部应用程序可以通过编写一个PROCESS_HOST_CHECK_RESULT外部命令外部命令文件提交主机检查结果给Nagios 。命令的格式如下:
[ ] PROCESS_HOST_CHECK_RESULT; ; ; timestamp: unix时间戳 host_name: 监控的主机地址 host_status: 主机的状态( 0 = OK,1 = WARNING,2 =CRITICAL,3 = UNKNOWN) plugin_output: 主机检查的文本输出 如: # echo "[`date +%s`] PROCESS_HOST_CHECK_RESULT;nagios-server;0;ping is ok" >> /var/lib/nagios3/rw/nagios.cmd [ ] PROCESS_SERVICE_CHECK_RESULT; ; ; ; timestamp: unix时间戳 host_name: 监控的主机地址 svc_description:服务的名称(与nagios服务端配置定义的必须一致) return_code: 服务的状态( 0 = OK,1 = WARNING,2 =CRITICAL,3 = UNKNOWN) plugin_output: 主机检查的文本输出 如: # echo "[`date +%s`] PROCESS_SERVICE_CHECK_RESULT;10.2.0.145;check_ssh_passive;0;test is ok " >> /var/lib/nagios3/rw/nagios.cmd
参考
- http://nagios.sourceforge.net/docs/3_0/passivechecks.html
- https://nagios-plugins.org/doc/guidelines.html#PLUGOUTPUT
- http://www.tektea.com/archives/3006.html
nagios/passive_check