小洪維尼 发表于 2019-1-15 06:50:29

nagios插件编写和使用pnp4nagios出图

nagios插件编写和使用pnp4nagios出图
    其实在nagios官方网站上也有很多插件,足够让我们使用,但是也不排除不能满足公司的需求,这时,得运维工程师或者程序员自己去编写脚本,网上也有很多教程,但是看了感觉都是讲的不够清楚,所以自己写了一份记录,希望可以帮得到网友们,同时,有哪里讲错的地方希望你们指出来,免得误人子弟。
   一 、写nagios插件,可以使用shell、perl、python等脚本语言,不管什么语言来写原理是一样的。那么先来认识下4种状态返回信息:
      0(OK)表示状态正常/绿色
      1(WARNING)表示出现警告/黄色
      2(CRITICAL)表示出现非常严重的错误/红色
      3(UNKNOWN)表示未知错误/深黄色。
   图解:
   http://blog.运维网.com/attachment/201303/091723546.jpg
    原理: Nagios根据插件返回来的值,来判断监控对象的状态,通过web显示出来,并通过邮件或者是短信方式(其他方式也可以)给管理员报警,及时处理故障.

    二、脚本编写教程
      1 编写脚本


[*]# cat /usr/local/nagios/libexec/check_disk_used
[*]#!/bin/bash
[*]#############返回状态码################
[*]STATE_OK=0
[*]STATE_WARNING=1
[*]STATE_CRITICAL=2
[*]STATE_UNKNOWN=3
[*]#############参数提示帮助###############
[*]help(){
[*]echo "Usage:$0 -h to help"
[*]}
[*]#############参数使用教程###############
[*]full_help(){
[*]echo "Usage:"
[*]echo "linux disk used"
[*]echo "example:$0 -w 80 -c 100"
[*]}
[*]#############以下是作判断和返回的结果,这里注意的函数getopts,非常好用##############
[*]if [ $# -lt 1 ];then
[*]   help
[*]   exit 0
[*]else
[*]while getopts :w:c:h OPTION
[*]do
[*]case $OPTION
[*]    in
[*]    w)
[*]    WARNING=$OPTARG
[*]    ;;
[*]    c)
[*]    CRITICAL=$OPTARG
[*]    ;;
[*]    h)
[*]    full_help
[*]    exit 0
[*]    ;;
[*]    *)
[*]    echo "Error option"
[*]    help
[*]    exit 0
[*]    ;;
[*]esac
[*] done
[*]fi
[*]
[*]############拿出磁盘的used,以下那个乘以1024,单位的转换#############
[*]used_one=`df -l|sed -n '2p'|awk '{print $3}'`
[*]used=`expr $used_one \* 1024`
[*] ############拿出磁盘的total,以下那个乘以1024,单位的转换#############
[*]total_one=`df -l|sed -n '2p'|awk '{print $2}'`
[*]total=`expr $total_one \* 1024`
[*]
[*]###############判断大于给出的参数-C -w 的结果,如果没问题,就显示OK#################
[*]if [ "$used" -ge "$CRITICAL" ] && [ "$CRITICAL" -ne "0" ];then
[*]   state="$STATE_CRITICAL"
[*]   state_used="CRITICAL"
[*]
[*]elif [ "$used" -ge "$WARNING" ] && [ "$WARNING" -ne"0" ];then
[*]   state="$STATE_WARNING"
[*]   state_used="WARNING"
[*]
[*]else
[*]   state="$STATE_ok"
[*]   state_used="ok"
[*]
[*]fi
[*]echo ""The server disk_tatal=$total,the disk_used is "$state_used",disk_used="$used""|disk_used="$used";3387649424;3587635328;0;"$total""
[*]exit $state ############这个就是返回的状态码,在注意这里#############


      2 在被监控的客户端/usr/local/nagios/etc/nrpe.cfg加上以下语句,添加完后要记得重启nrpe服务,一般使用/etc/rc.d/init.d/xinetd restart



[*]command=/usr/local/nagios/libexec/check_disk_used -w 3387649424 -c 3587635328

      3 在nagios服务器端,主机配置文件添加服务和重启nagios(service nagios restart):



[*]# cat/usr/local/nagios/etc/servers/192.168.250.40.cfg
[*]define service{
[*]use             generic-service,service-pnp   
[*]host_name       web1
[*]service_description   check_disk_used
[*]check_command   check_nrpe!check_disk_used
[*]}


      4 web查看

http://blog.运维网.com/attachment/201303/095516504.jpg
      这样,自己编写的插件就可以正常使用了,运维工程师或者程序员就可以根据自己本身的   业务和需求去编写脚本。
    三、 pnp4nagios出图
         细心的网友们应该会看到旁边有一个图形http://blog.运维网.com/attachment/201303/095847575.jpg,这个就是pnp插件,在这里pnp4nagios配置      我就不写出来了,如果哪位网友需要交流的话就联系我或者在后面回复。
         1 首先出图的话需要服务需要加入PNP4nagios插件(在配置好pnp4nagios基础上)


[*]# cat /usr/local/nagios/etc/servers/192.168.250.40.cfg
[*]define service{
[*]use             generic-service,service-pnp
[*]host_name       web1
[*]service_description   check_disk_used
[*]check_command   check_nrpe!check_disk_used
[*]}

          通过以上的配置,图标就会出现

          2绘图
         绘图是使用rrdtool,安装pnp4nagios的时候需要安装的依赖包。首先大家要明白,生成       图像,需要的是什么?---->当然是数据。但数据从哪里来呢?请看看被监控的客户端脚本:


[*]# cat /usr/local/nagios/libexec/check_disk_used
[*]#!/bin/bash
[*]STATE_OK=0
[*]STATE_WARNING=1
[*]STATE_CRITICAL=2
[*]STATE_UNKNOWN=3
[*].........
[*].........
[*]echo ""The server disk_tatal=$total,the disk_used is "$state_used",disk_used="$used""|disk_used="$used";3387649424;3587635328;0;"$total""
[*]exit $state

      |disk_used="$used";3387649424;3587635328;0;"$total"大家有没有留意到,这里就是数据,那么是怎么样定义的呢?
      | 当前值;警告值;临界值;最小值;最大值
      | ---->是用来区别输出的数据的,|之前输出的数据是显示在web上面,后面则是绘图的数据
      当前值:这个要定义一个名字,例如:disk_used=
      警告值: 这个就是 - w参数的值
      临界值:这个就是 - c参数的值
      最小值:0
      最大值:这个根据自己本身监控去定义拿取

   3 最后,在使用这个脚本的时候也需要加上参数
       # vi /usr/local/nagios/etc/nrpe.cfg


[*]command=/usr/local/nagios/libexec/check_disk_used -w 3387649424 -c 3587635328

       这样的话就可以有数据绘图了,我们验证下结果:

http://blog.运维网.com/attachment/201303/102741435.jpg
http://blog.运维网.com/attachment/201303/102758136.jpg
    希望简单的教程能帮助到大家,谢谢!!!




页: [1]
查看完整版本: nagios插件编写和使用pnp4nagios出图