• nagios-调用脚本


    在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解

    Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。

    启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列。

    所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。

    Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件

    如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。基本上每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。

    Nagios可以识别4种状态返回信息: 

    0(OK)表示状态正常/绿色、

    1(WARNING)表示出现警告/黄色

    2(CRITICAL)表示出现非常严重的错误/红色

    3(UNKNOWN)表示未知错误/深黄色。

    Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。四种监控状态如下图所示:

    当我们知道了nagios是通过命令返回值来判断状态,在shell中也即是通过命令的退出状态码来判断,这样我们可以自已编写一个监控脚本

    第一步:编写脚本

    vim  /usr/lib/nagios/plugins/check_disk.sh 写入如下内容: //这是一个disk脚本样例,你也可以写自己的监控脚本
    #!/bin/bash
    row=`df -h |wc -l`
    for i in `seq 2 $row`
    do
            ava=`df -h |sed -n "$i"p|awk ‘{print $4}‘`
            u_per=`df -h |sed -n "$i"p|sed -n "s/\%//"p|awk ‘{print $5}‘`
            p_p=`df -h |sed -n "$i"p|awk ‘{print $6}‘`
            if [ "$u_per" -gt "95"  ];then           //百分比可以自定义
                    echo -n "$p_p CRITICAL $u_per% $ava  "
                    sta[$i]=2
            elif [ "$u_per" -gt "90" ];then
                    echo -n "$p_p WARNING! $u_per% $ava  "
                    sta[$i]=1
            else
                    echo -n "$p_p OK $u_per% $ava  "
                    sta[$i]=0
            fi
    done
    n=0
    for j in `seq 2 $row`
    do
            if [ "${sta[$j]}" -gt $n  ];then
                    n=${sta[$j]}
            fi
    done
    exit $n   //该循环是为了找出所有磁盘分区的sta[]最大值

    2. 保存后,修改该脚本的权限
    chmod +x  /usr/lib/nagios/plugins//check_disk.sh (client上)
    3. 然后编辑/etc/nagios/nrpe.cfg文件
    vim /etc/nagios/nrpe.cfg  # 加入一行:(client上)
    command[check_disk]=/usr/lib/nagios/plugins/check_disk.sh
    保存,重启nrpe服务
    /etc/init.d/nrpe restart (client上)、

    第二步:添加服务

    cd /etc/nagios/conf.d/
    vim IP.cfg     # 文件名可以自定义,我这里用客户端IP做文件名,也可以用主机名,目的是为了方便区分
    define service{
            use     generic-service
            host_name       IP
            service_description     check_disk
            check_command           check_nrpe!check_disk
            max_check_attempts 5
            normal_check_interval 1
    }
    6. 重启nagios服务
    /etc/init.d/nagios restart   (server上)

    第三步:修改nagios.conf

    添加配置文件

  • 相关阅读:
    一周之内了解一个行业的方法
    du命令 实现Linux 某个文件夹下的文件按大小排序
    蝴蝶效应、青蛙现象、鳄鱼法则、鲇鱼效应.......
    MYSQ提高L查询效率的策略总结
    12个高矮不同的人,排成两排(catalan数)
    四人过桥、三盏灯 三个开关 的答案
    给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
    一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
    二分检索(查找)的各种变种
    排序算法稳定性
  • 原文地址:https://www.cnblogs.com/xuefy/p/11753019.html
Copyright © 2020-2023  润新知