环境准备:这里假设zabbix服务端和客户端都已安装,并且在被监控主机添加zabbix用户到信任用户
在被监控主机执行下面命令
echo "zabbix ALL=(root) NOPASSWD:ALL" >> /etc/sudoers
1、接下来安装磁盘工具
wget https://raw.githubusercontent.com/crazy-zhangcong/tools/master/MegaCli8.07.10.tar.gz
tar -zxf MegaCli8.07.10.tar.gz
tree MegaCli8.07.10
cd MegaCli8.07.10/Linux/
rpm -ivh Lib_Utils-1.00-09.noarch.rpm
rpm -ivh MegaCli-8.02.21-1.noarch.rpm
ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/local/bin/megaCli
megaCli -v
2、编写python检测脚本,检测磁盘状态
#!/usr/bin/python
import os
def raid_check():
# megacli执行路径以安装的目录为准
cmd = "/usr/local/bin/megacli -PDList -aAll -NoLog"
res = os.popen(cmd)
status = 0
for i in res:
# 过滤硬盘状态信息行
if i.startswith('Media Error Count'):
# 获取磁盘状态行的状态码,0表示正常,非0表示异常
if int(i[-2]) != 0:
status = 1
print(status)
raid_check()
3、设置zabbix代理默认执行脚本的路径, cat /etc/zabbix/zabbix-agent.conf
UnsafeUserParameters=1
UserParameter=check_raid,sudo /etc/zabbix/Raid_Check.py
UnsafeUserParameters默认为0,修改为1,表示允许执行自定义脚本
check_raid表示zabbix server监控的键值,可以在zabbix-server执行 zabbix_get -s clientip -k check_raid获取磁盘状态信息,后面的选项表示执行脚本的位置
执行下面的命令获取的磁盘状态为0表示正常
zabbix_get -s 192.168.1.1 -k 'check_raid'
0
4、在zabbix server添加监控项
image.png
网友评论