之前写了一篇文章主要介绍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增加了一台
Services显示监控磁盘状态