参考地址:
https://yq.aliyun.com/articles/457140
https://www.cnblogs.com/zhangxinglong/p/5983376.html
下载地址:https://www.broadcom.com/site-search?q=LSIUtil_1.62
lsiutil -p 1 -a 21,2,0,0,0 — 查看物理硬盘状态
我们遍历所有硬盘的online信息,如果每块硬盘的状态如果是online的话,就是数字0,如果不是online就是数字1,我们把所有硬盘放到一个python列表里面,算总和,如果等于0,就说明所有硬盘都是online,如果有一块有问题,那就是1,两块有问题就是2,这些值可以在每台机器上单独设置触发器。
代码如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import json import os import time disk_all_info = [] def disk_list_info(): info_all = os.popen("sudo /opt/MegaRAID/MegaCli/lsiutil -p 1 -a 21,2,0,0") for i in info_all.readlines(): disk_all_info.append(i.strip()) return True def pydisk_info(): total = 0 disk_status = [] for i in disk_all_info[13:-3]: if i.startswith("PhysDisk State"): status = i.strip() if status[15:].strip() != "online": disk_status.append(1) else: disk_status.append(0) for j in disk_status: total += j print(total) if __name__ == ‘__main__‘: if disk_list_info(): pydisk_info()
disk-smart-health.py
安装方式
1、首先我们要下载lsiutil工具,放到自己喜欢的位置,然后修改脚本中的执行的绝对路径。
2、给脚本755执行权限。
3、部署zabbix监控环境(Linux)
3.1修改zabbix_agentd的配置文件,开启自定义脚本监控开关。
vim /etc/zabbix/zabbix_agentd.conf
增加下面两项,开启自定义脚本开关,并制定脚本位置。
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf UnsafeUserParameters=1
cd /etc/zabbix/zabbix_agentd.conf.d
vim disk-smart-health.conf
增加下面一行内容
UserParameter=disk.status,/etc/zabbix/scripts/disk-smart-health.py
mkdir -p /etc/zabbix/scripts/
cd /etc/zabbix/scripts/
vim disk-smart-health.py
将前面的代码复制粘贴进去保存退出。
4、设置sudo权限,设定zabbix用户免密以sudo权限执行:
echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix
5、重启zabbix,理论只需重启agent端即可:
service zabbix_agentd restart
6、我这里用的是zabbix分布式监控,所以我在代理的服务器上用zabbix_get检测,对不对。
/usr/local/zabbix-3.2.6/bin/zabbix_get -s 172.16.200.101 -p 10050 -k "disk.status"
能够正常获取到值,代表正常。
7、zabbix添加监控项和触发器。
触发器这里我们设置,只要它返回的值不等于0就说明它故障了。
原文地址:https://www.cnblogs.com/lei0213/p/11969162.html