潇湘夜雨移动版

主页 > 系统 >

nagios监控部署(一)(12)

PERFDATA LINE 3   
...   
PERFDATA LINE N  
性能数据(用下划线示意的部分)是可选的,如果插件输出文本里有性能数据,必须用管道符(|)把性能数据与其他数据分开,额外的大段输出行(用文字删除符示意的部分)同样也是可选的。
 
四、插件输出样例
 
下面看一下插件输出的样例...
 
案例1:只有一行文本输出(不带性能数据)
 
假定插件的输出文本是这样:
 
DISK OK - free space: / 3326 MB (56%);  
 
如果插件执行的是一个服务检测,整行输出都会保存在$SERVICEOUTPUT$宏里。
 
案例2:一行输出带性能数据
 
插件的输出文本中带有性能数据可给外部应用来处理。性能数据要用管道符(|)分隔开,象是这样:
 
DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968  
 
如果插件执行的是一个服务检测,分隔符左侧的部分将保存在$SERVICEOUTPUT$宏里并且右侧(用下划线示意)的部分将保存在$SERVICEPERFDATA$宏里面。
 
案例3:多行输出(正文和性能数据都有)
 
插件可以输出多行文本,并且带有正文输出和性能数据,象是这样:
 
DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968  
 
/ 15272 MB (77%);  
 
/boot 68 MB (69%);  
 
/home 69357 MB (27%);  
 
/var/log 819 MB (84%); | /boot=68MB;88;93;0;98  
 
/home=69357MB;253404;253409;0;253414  
 
/var/log=818MB;970;975;0;980  
 
如果插件执行的是一个服务检测,第一行分隔符左侧的部分将保存在$SERVICEOUTPUT$宏里,带有下划线标识的部分(带空格)将保存在$SERVICEPERFDATA$宏里,带删除符标识的部分(不带换行符)的部分将保存在$LONGSERVICEOUTPUT$宏里(以上的下划线和删除符只是为标记文本段而用的,实际文本中不带有符号格式--译者注)。
 
每个宏的最终结果是这样的:
 
内容
$SERVICEOUTPUT$ DISK OK - free space: / 3326 MB (56%);
$SERVICEPERFDATA$ /=2643MB;5948;5958;0;5968./boot=68MB;88;93;0;98./home=69357MB;253404;253409;0;253414./var/log=818MB;970;975;0;980
$LONGSERVICEOUTPUT$ / 15272 MB (77%);\n/boot 68 MB (69%);\n/var/log 819 MB (84%);
利用多行输出结果的机制,可以采取多种方式来返回性能数据:
 
无论什么情况都没有性能数据;
 
只返回一行性能数据;
 
只是在后序的行内返回性能数据(第一行不用的管道分隔符右侧不填内容);
 
利用全部的输出位置来带出性能数据。
 
(看起来第一行右侧部分有点"多余",真的可以不用,但其实这是作者为软件向下兼容低版本使用的插件而特意这么做的,很有必要这么做,看一下源程序就明白了。)
 
五、插件输出长度限制
 
Nagios只处理插件返回的前4KB数据内容。这样是为了防止插件返回一个上兆或上千兆的数据块给Nagios处理。这个4K的限制很容易修改,如果你想改,可以编辑一下源代码里的MAX_PLUGIN_OUTPUT_LENGTH宏定义,在源程序包的include/nagios.h.in文件里,重编译一下Nagios就可以了,其他地方不用动!
 
六、例子
 
如果想找点例子来学习开发插件,推荐去下载Nagios插件项目官方的软件包,插件代码使用多种语言(象C、Perl和SHELL脚本等)写成插件。
 
 
 
 
 
 
 
 
 
 
 
 
 
  (责任编辑:liangzh)