需求背景:有个游戏项目在softlayer达拉斯机房有一批机器,间隔几个月就会有单台服务器出现磁盘不能写入的问题,而服务器本身的进程端口,没有down,多次联系机房,采用的解决方式是重启服务器,并无其他的解决方法。
尝试联系过游戏的合作方,迁移机房重新部署,无奈对方没有排期,暂时的方法,就是在没有迁移的情况下,发现问题,并尽快解决。
思路:查看dmesg,查找grep是否有报错'error count since last fsck',没有则打印1,有则打印0,通过zabbix agent执行脚本,并传输给zabbix server。
实现:
[root@localhost script]# cat check_disk_error.sh
#!/bin/bash
#authon:qinliang
#date:4/2/2020
tail /var/log/dmesg |grep "error count since last fsck" >/dev/null
if [ $? -eq 0 ]; then
echo "0"
else
echo "1"
fi
----
[root@localhost zabbix_agentd.d]# cat check_disk_error.conf
UserParameter=check.disk.error[*],bash /etc/zabbix/script/check_disk_error.sh
模板部分展示:
END