shell编程之【nagios自定义监控系统磁盘脚本】


之前写了一篇文章主要介绍nagios的搭建使用 http://msiyuetian.blog.51cto.com/8637744/1704346

下面这篇文章主要介绍nagios自定义监控系统磁盘的脚本实现。


    Nagios可以识别4种状态返回信息,即 0 表示状态正常(OK)、1 表示出现警告(WARNING)、2 表示出现非常严重的错误(CRITICAL),3 表示未知错误(UNKNOWN)。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来。我们就可以利用上面这个特性来实现监控磁盘的状态:

a、当磁盘使用率大于97%则表示出现非常严重的错误(CRITICAL),返回值为2;

b、当磁盘使用率大于95%则表示出现警告(WARNING),返回值为1;

c、当磁盘使用率小于95%则表示状态正常(OK),返回值为0;


说明:

server ip :192.168.0.114

client ip :192.168.0.115


1、客户端配置

1)编写脚本

[root@client ~]# vim /usr/lib/nagios/plugins/check_disk.sh

#!/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 -P|sed -n "$i"p|awk '{print $6}'`
        if [ "$u_per" -gt "97"  ];then
                echo -n "$p_p CRITICAL $u_per% $ava  "
                sta[$i]=2
        elif [ "$u_per" -gt "95" ];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

脚本说明

我们利用df -h命令可以查看磁盘的使用状态

[root@client ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  2.6G   15G  16% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

脚本中 for i in `seq 2 $row` :表示从df -h命令输出的第二行开始进行循环。

参数ava、u_per、p_p分别定义为剩余空间(Avail)、使用率(Use%)、挂载点(Mounted on)

数组sta[$i],输出的是返回值,当返回0表示OK,返回1表示WARNING!,返回2表示CRITICAL。

最后我们利用输出数组的最大值来判断,只要有一个挂载点的使用率达到97%以上,在nagios网页上都会显示CRITICAL。

2)修改脚本权限

[root@client ~]# chmod +x /usr/lib/nagios/plugins/check_disk.sh

3)编辑配置文件

[root@client ~]# vim /etc/nagios/nrpe.cfg       //增加一行

command[check_disk]=/usr/lib/nagios/plugins/check_disk.sh

4)重启nrpe服务

[root@client ~]# /etc/init.d/nrpe restart


2、服务端配置

1)检查刚才客户端上的脚本是否正常运行

[root@server ~]# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.115 -c check_disk

/ OK 16% 15G  /dev/shm OK 0% 504M  /boot OK 29% 67M

注意

若报错:CHECK_NRPE: Error - Could not complete SSL handshake.

则说明在客户端没有添加允许server主机的ip,修改客户端nrpe配置文件,添加server的ip

[root@client ~]# vim /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,192.168.0.114

[root@client ~]# /etc/init.d/nrpe restart

2)添加服务

[root@server ~]# cd /etc/nagios/conf.d/

[root@server conf.d]# vim 192.168.0.115.cfg

define host{

        use                     linux-server

        host_name           192.168.0.115

        alias                       0.115

        address                 192.168.0.115

        }


define service{

        use     generic-service

        host_name       192.168.0.115

        service_description     check_disk

        check_command           check_nrpe!check_disk

        max_check_attempts 5

        normal_check_interval 1

}

3)编辑commands.cfg配置文件

[root@server conf.d]# vim /etc/nagios/objects/commands.cfg     //末尾添加如下内容

define command{ 

        command_name    check_nrpe 

        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 

        } 

4)重启nagios服务

[root@server conf.d]# service nagios restart


3、查看效果

浏览器输入:192.168.0.114/nagios,验证账号密码进入后可看到下图效果:

Hosts增加了一台

wKiom1ZNzGOgPfyiAAOOsFBcWsg032.jpg


Services显示监控磁盘状态

wKioL1ZNzL2CmHv8AAX-K6P5OnE262.jpg




你可能感兴趣的:(shell,nagios,监控磁盘)