使用Zabbix监控硬盘S.M.A.R.T.信息

Zabbix官方方案

https://www.zabbix.com/cn/integrations/smart

1. 使用Zabbix Agent 2,Windows可以直接下载使用,Linux需要通过参数-enable-agent2编译安装

2. 安装Smartmontools,版本要求7.1+

3. Windows平台zabbix_agentd.conf需要增加配置,定义smartctl的路径

Plugins.Smart.Path="C:\Program Files\smartmontools\bin\smartctl.exe"

4. 从上面的官方链接下载模板并导入

缺点:官方方案对RAID控制器支持不是很好,存在RAID控制器不识别导致无法监控硬盘的情况

第三方方案

https://github.com/nikimaxim/zbx-smartmonitor

Windows

1. 下载安装Smartmontools,要求版本7.1+,https://builds.smartmontools.org/

2. 检查PowerShell版本,要求版本5.1+,Get-Host|Select-Object Version

3. 下载硬盘发现脚本smartctl-storage-discovery.ps1,保存到C:\

4. 在zabbix_agentd.conf添加自定义监控项

UserParameter=storage.discovery[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\smartctl-storage-discovery.ps1"
UserParameter=storage.get[*],powershell -NoProfile -ExecutionPolicy Bypass -Command "if (\"$1\") {& 'C:\Program Files\smartmontools\bin\smartctl.exe' -i -H -A -l error -l background $1}"
UserParameter=smartctl.version,powershell -NoProfile -ExecutionPolicy Bypass -Command "((& 'C:\Program Files\smartmontools\bin\smartctl.exe' --version | Where-Object {$_ -match '^smartctl\s\d'}) -ireplace 'smartctl\s' -ireplace '\s\[.+$').Trim()"

5. 下载监控模板Template smartmonitor.xml并导入

Linux

1. 下载安装Smartmontools,要求版本7.1+,https://builds.smartmontools.org/

2. 下载硬盘发现脚本smartctl-storage-discovery.sh,保存到/usr/local/sbin/

3. 在zabbix_agentd.conf添加自定义监控项

UserParameter=storage.discovery[*],sudo /usr/local/sbin/smartctl-storage-discovery.sh
UserParameter=storage.get[*],if [ -n "$1" ]; then sudo /usr/sbin/smartctl -i -H -A -l error -l background $1; fi
UserParameter=smartctl.version,/usr/sbin/smartctl --version | grep -Eo "^smartctl\s[0-9\.[:space:]\r-]+" | sed -e 's/^smartctl.//'

4. 如果Zabbix Agent不是以root身份运行,则需要visudo添加以下内容

Defaults:zabbix !requiretty
zabbix ALL=(root) NOPASSWD: /usr/sbin/smartctl
zabbix ALL=(root) NOPASSWD: /usr/local/sbin/smartctl-storage-discovery.sh

5. 下载监控模板Template smartmonitor.xml并导入