• Add Performance Data Output For PNP - [技术笔记]

    2009-04-09

    分类: 技术笔记

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://iyubo.blogbus.com/logs/37667505.html

    上篇日志中提到过有三种监控方式获取数据,有些严谨的SA出于安全原因可能不太愿意在服务器上安装服务。那么,我们可以走SNMP协议通过编写脚本进行抓取服务器上 的数据。这种方式SA唯一需要做的就是在目标服务器上安装SNMP协议(还是得安装,嘿嘿,怎么安装SNMP这个就不说了,不会的自己Google)。安 装完成以后设置只允许监控服务器的IP访问和Community,权限给只读就行了。

    为什么要添加Performance Data的输出?

    PNP是根据Performance Data进行绘图的。所以如果你需要PNP配合Nagios使用进行绘图,那么你就必须要收集这个Performance Data。

    解析Performance Data

    拿check_icmp的结果来举例:

    OK - 127.0.0.1: rta 2.687ms, lost 0% | rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;;

    管道符(|)左边的是命令执行得到的结果:

     OK - 127.0.0.1: rta 2.687ms, lost 0%

    右边就是我们需要的Performance Data了:

      rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;;

    Performance data是为自动处理设计的。格式的定义参考Developer Guidelines,下面是举例:

      rta=2.687ms;3000.000;5000.000;0;
    | | | | | | |
    |----|--|----|---------|-----|-|----- 标签(即你想定义的名称)
    |--|----|---------|-----|-|----- 当前值
    |----|---------|-----|-|----- 单位
    |---------|-----|-|----- warning阀值
    |-----|-|----- critical阀值
    |-|----- 此标签的最小值
    |----- 此标签的最大值

    了解了Performance Data的格式以后,我们自然就可以在脚本里面对它进行自定义并输出,这里用Perl举例。
    首先定义$perfdata_output,按照上面的格式。
    然后在输出里面加上管道符(|)及$perfdata_output本身。举例:
    print "OK : CPU load $use%"."|".$perfdata_output."\n";."|".$perfdata_output

    全部修改好以后运行Perl监控脚本来核查结果。如果你看到的运行结果已经完全符合上面举例的格式,那么恭喜你,
    等着PNP画图吧:)

    最后,放上我修改好的监测CPU/MEM/DISK的Perl程序(通用Windows和Linux目标服务器)

    参考文档
    http://www.pnp4nagios.org/pnp/doc_complete

    收藏到:Del.icio.us