需求背景:有個游戲項目在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