Добавление данных SMART жесткого диска в Zabbix
smartmontools
1. Установим скрипт для сбора SMART-данных на Proxmox
Создаём скрипт:
sudo nano /usr/local/bin/check_smart.sh
Вставь содержимое:
#!/bin/bash
# check_smart.sh - сбор SMART-данных для Zabbix
DISK=$1
CMD=$2
if [ -z "$DISK" ] || [ -z "$CMD" ]; then
echo "Usage: $0 <disk> <temp|reallocated|pending|offline|health>"
exit 1
fi
# Проверяем, существует ли диск
if ! lsblk | grep -q "^$DISK"; then
echo 0
exit 1
fi
case "$CMD" in
temp)
sudo /usr/sbin/smartctl -A /dev/$DISK | grep Temperature_Celsius | awk '{print $10}'
;;
reallocated)
sudo /usr/sbin/smartctl -A /dev/$DISK | grep Reallocated_Sector_Ct | awk '{print $10}' || echo 0
;;
pending)
sudo /usr/sbin/smartctl -A /dev/$DISK | grep Current_Pending_Sector | awk '{print $10}' || echo 0
;;
offline)
sudo /usr/sbin/smartctl -A /dev/$DISK | grep Offline_Uncorrectable | awk '{print $10}' || echo 0
;;
health)
sudo /usr/sbin/smartctl -H /dev/$DISK | grep "PASSED" > /dev/null && echo 1 || echo 0
;;
*)
echo 0
;;
esac
Сохрани → Ctrl+O, Enter, Ctrl+X
Сделай исполняемым:
chmod +x /usr/local/bin/check_smart.sh
2. Установи smartctl (если нет)
apt install smartmontools -y
nano /etc/zabbix/zabbix_agentd.conf
nano /etc/zabbix/zabbix_agentd.conf
3. Добавь пользовательские параметры в Zabbix-агент
nano /etc/zabbix/zabbix_agentd.conf
Добавь в конец:
# SMART Monitoring
UserParameter=smart.temp[*],/usr/local/bin/check_smart.sh $1 temp
UserParameter=smart.reallocated[*],/usr/local/bin/check_smart.sh $1 reallocated
UserParameter=smart.pending[*],/usr/local/bin/check_smart.sh $1 pending
UserParameter=smart.offline[*],/usr/local/bin/check_smart.sh $1 offline
UserParameter=smart.health[*],/usr/local/bin/check_smart.sh $1 health
Перезапусти агент:
systemctl restart zabbix-agent
установка smartmontools
apt install smartmontools -y
тест
sudo -u zabbix /usr/local/bin/check_smart.sh sda temp
🛠 Причины и как починить
1. Пользователь zabbix не может запустить smartctl
🔐 Проблема: smartctl требует root-прав, а zabbix — обычный пользователь
Когда запускаешь:
sudo -u zabbix /usr/local/bin/check_smart.sh sda temp
smartctl -A /dev/sda
✅ Решение: дать пользователю zabbix право запускать smartctl
🧩 Вариант 1: Через sudo без пароля (рекомендую)
Открыть
sudo visudo
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/smartctl
Тест
sudo -u zabbix /usr/local/bin/check_smart.sh sda temp
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!