如何通过Zabbix脚本类型Item获取ESXi磁盘SMART数据?
如何通过Zabbix收集ESXi磁盘SMART信息
1. 编写SSH执行脚本
Zabbix的「Script」类型Item是在Zabbix Server/Proxy端执行,因此需要编写脚本通过SSH远程连接ESXi,执行SMART查询命令。
创建脚本文件(示例路径:/usr/local/bin/esxi_get_smart.sh),内容如下:
#!/bin/bash # 配置ESXi连接信息 ESXI_HOST="你的ESXi主机IP/域名" ESXI_USER="root" # 从脚本参数接收磁盘设备ID DEVICE_ID=$1 # 通过SSH免密执行ESXi命令 ssh -i /var/lib/zabbix/.ssh/id_rsa ${ESXI_USER}@${ESXI_HOST} "esxcli storage core device smart get -d=${DEVICE_ID}"
给脚本添加执行权限:
chmod +x /usr/local/bin/esxi_get_smart.sh
注意:必须给Zabbix运行用户(通常是
zabbix)配置到ESXi的免密SSH登录。可通过ssh-keygen生成密钥对,将公钥上传至ESXi的/root/.ssh/authorized_keys文件中,避免脚本执行时需要输入密码。
2. 配置Zabbix Item
- 打开Zabbix控制台,进入已关联ESXi主机的目标模板
- 创建新Item:
- 类型选择 Script
- 脚本字段填入脚本绝对路径,若要动态传入磁盘ID,格式为:
/usr/local/bin/esxi_get_smart.sh {$ESXI_DISK_ID} - 键值设置为
esxi.disk.smart[{$ESXI_DISK_ID}] - 类型信息选择 文本(若只需提取单个指标如磁盘温度,可修改脚本过滤输出后选择数值类型)
- 在对应ESXi主机的宏配置中添加
{$ESXI_DISK_ID},值设为目标磁盘ID(如t10.ATA_INTEL_SSDSC2BB080G4__PHSL4)
3. 多磁盘监控优化
若需监控多个磁盘,无需创建多个脚本,只需保留支持参数传入的脚本,为每个磁盘单独创建Item,在宏中配置对应磁盘ID即可。
内容的提问来源于stack exchange,提问作者Tonik
相关产品推荐
相关产品推荐

