无意间看到ssd寿命查询参数,由于我们ssd大部分应用于公司ceph集群,所以对其寿命监控是非常有意义的。
安装步骤
1 --- 安装 zabbix
2 --- 安装 MegaCli,smart工具
3 --- 编写脚本
4 --- 配置zabbix-server 自动发现规则,添加相应的主机。
详细步骤。
1 --- zabbix安装,这个我会在发个详细文章,此处略过。
2.1 安装MegaCli
去lsi官网https://www.broadcom.com/support/download-search/?pg=&pf=&pn=&pa=&po=&dk=MegaCli
选择版本下载2.1.1 安装 rpm -ivh MegaCli-8.07.14-1.noarch.rpm
2.1.2 测试指令/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL
可以看到raid卡下的所有磁盘。
2.2 安装smartctl
2.2.1 yum install -y smartmontools.x86_64
2.2.2 测试指令smartctl -a -d megaraid,4 /dev/sda
得到寿命参数3 编写脚本
3.1 编写自动发现ssd设备脚本
export PATH="${PATH}:/usr/local/bin:/usr/bin:/bin:/usr/libexec"
export PATH="${PATH}:/usr/local/sbin:/usr/sbin:/sbin"
export PATH="${PATH}:/opt/MegaRAID/MegaCli/"
PID=$$
restr="{\"data\":[ "
if MegaCli64 -PDList -aALL >/tmp/isl 2>/dev/null; then
for dev in $(awk '/Device Id/{print $3}' /tmp/isl); do
idev="$(sed -e '/./{H;$!d;}' -e "x;/Device Id: ${dev}/!d;" /tmp/isl\
|awk '
/Device Id/ {d=$3}
/Inquiry Data/ {if ($0 ~ /INTEL/) {printf("%d\n", d)}}
')"
if [ -n "${idev}" ]; then
restr=$restr"{\"{#SSDNAME}\" : ${idev}},"
fi
done
if ! ps -p ${PID} >/dev/null 2>&1; then
break;
fi
fi
length=${#restr}
l=$[length-1]
substr=${restr:0:l}
echo $substr"]}"
运行此脚本得到所有intel ssd的deviceID
3.2 编写获取ssd寿命信息
smartctl -a -d megaraid,$1 /dev/sda |grep "Media_Wearout_Indicator" | awk -F ' ' '{print $4}'
比较简单需要传deviceID
4.开始配置zabbix-server
4.1 添加模板
点击创建模板 填写模板名称描述 点击创建发现规则。 输入键值 设定过滤器 设定监控项原型 添加个图形方便查看主机添加相应的模板。
4.2 agent配置。
在/etc/zabbix/zabbix_agentd.d/ 下添加userparameter_ssd.conf
上面的两个脚本名称设定zabbix用户免密root执行
echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix
重启服务
systemctl restart zabbix-agent
查看最新数据
成功
网友评论