用zabbix_sender监控磁盘是否只读

zabbix_sender是一个能够在客户端主动把数据发给zabbix server的工具,zabbix server无需去客户端进行获取,只需要接收客户端提交过来的数据即可。使用zabbix_sender,zabbix server的监控项目的配置的类型就要配置zabbix捉捕器(zabbix trapper),另外需要注意触发器需要在一定时间内没接收到数据触发告警。

监控磁盘只读是比较头疼的事,说一下以下方案:

1: 每个分区给zabbix权限,然后每个分区都探测下,这个部署起来比较麻烦。

2: 用root用户每分钟去探测每个分区,然后写入一个文件,最后再部署一个UserParameter,重启agent。听起来也比较麻烦。

3: 使用zabbix_sender,root用户探测到哪个分区有异常时,直接跟zabbix server汇报,这个部署起来比较方便点。

先看下使用zabbix_sender客户端向zabbix server端汇报过来的截图如下,截图都没有问题,如果有问题,会汇报 分区名 read only:

 

使用zabbix_sender实现磁盘只读监控,首先,在客户端的crontab放一个脚本,每两分钟去探测下磁盘是否异常,过滤掉nfs和tmpfs不去探测,脚本就echo一下,如果echo有问题就进行汇报,如下:

#!/bin/sh
ZabbixHost=`hostname`
Check_Desc="Check Disk Read Only"
houzhui=`date "+%Y%m%d"`
df -Th |egrep -v -i 'tmpfs|nfs'|awk '$(NF-1)~/%/{print $NF}'|grep '^/'|sort -u|while read line;do
    echo "zabbix_test" > ${line}/zabbix_test_${houzhui}
    if [ $? -ne 0 ];then
	    /usr/local/zabbix/bin/zabbix_sender -z xxx.xxx.xxx.xxx -s "${ZabbixHost}" -k "is_read_only" -o "${line} read only"
        exit 1
    fi  
    \rm ${line}/zabbix_test_${houzhui}
done
if [ $? -eq 0 ];then
    /usr/local/zabbix/bin/zabbix_sender -z xxx.xxx.xxx.xxx -s "${ZabbixHost}" -k "is_read_only" -o "all disk is ok!"
fi

注意:hostname是zabbix server监控上写的主机名,-z后面跟的zabbix server的地址, -k是zabbix server监控项目配置的key,监控项目配置如下(截图有可以改善的地方,应用集可以就用filesystems,然后保留的天数改为1天即可,数据没保留的必要,有问题告警即可):

 

触发器的定义如下:

posted @ 2017-09-27 23:56  努力哥  阅读(716)  评论(0编辑  收藏  举报