Моніторинг заліза сервера: температура, диски, живлення
Залізо ламається передбачувано: диск за тижні до відмови накопичує перепризначені сектори, пам'ять сипле виправленими помилками ECC, вентилятор знижує оберти, а блок живлення пише події в журнал SEL. Усі чотири сигнали читаються штатними утилітами і збираються у звичайний Prometheus. Завдання моніторингу заліза — помітити їх до того, як сервер стане.
- Чотири джерела закривають майже все: датчики IPMI та SEL, SMART дисків, лічильники EDAC для пам'яті, стан RAID.
- На ZevsHost доступ KVM/IPMI коштує $5 на місяць і входить у Dedicated Enterprise US; без нього лишаються SMART, EDAC та lm-sensors зсередини ОС.
- Опитувати BMC частіше ніж раз на хвилину не потрібно і шкідливо: контролер слабкий.
Чотири джерела даних
| Що дивимося | Джерело | Команда | Тривожна ознака |
|---|---|---|---|
| Температура CPU і плати | IPMI, lm-sensors | ipmitool sdr type temperature | зростання за тієї самої навантаги |
| Блоки живлення | IPMI, SEL | ipmitool sdr type 'Power Supply' | подія PS Redundancy Lost |
| Диски | SMART | smartctl -A /dev/sda | зростання Reallocated_Sector_Ct |
| Пам'ять | EDAC, SEL | ras-mc-ctl --summary | лічильник CE зростає день у день |
| RAID | mdadm або утиліта контролера | cat /proc/mdstat | стан degraded, [U_] |
IPMI: датчики та журнал подій
Датчики читаються і локально через драйвер ядра, і мережею. Локальний доступ не потребує пароля і не навантажує мережу керування, тож для регулярного опитування зручніший він. Як отримати мережевий доступ, описано у статті про IPMI та KVM-over-IP.
# встановлення
apt install -y ipmitool freeipmi-tools # Debian/Ubuntu
dnf install -y ipmitool freeipmi # RHEL, AlmaLinux, Rocky
# лише те, що вийшло за межі норми
ipmitool -I open sdr elist all | grep -v ' ok '
# журнал подій заліза
ipmitool -I open sel elist | tail -n 30
# раз на добу: зберегти й очистити
ipmitool -I open sel save /var/log/ipmi-sel-$(date +%F).log && ipmitool -I open sel clear
SEL — кільцевий журнал обмеженого обсягу. Коли він заповнюється, частина плат перестає записувати нові події, і ви втрачаєте саме ті рядки, заради яких усе робилося.
Диски і пам'ять
SMART
apt install -y smartmontools
smartctl -a /dev/sda | grep -E 'Reallocated|Pending|Power_On_Hours'
# у NVMe свій набір лічильників
smartctl -A /dev/nvme0n1 | grep -E 'Percentage|Media|Unsafe'
Ключові атрибути розібрані у статті про SMART-діагностику дисків сервера. Демон smartd уміє надсилати пошту сам, але врахуйте обмеження майданчиків: вихідний SMTP на портах 25, 465 і 587 типово закритий і відкривається на запит перевіреним клієнтам. Надійніше віддавати події в загальний моніторинг.
Пам'ять
apt install -y rasdaemon
systemctl enable --now rasdaemon
ras-mc-ctl --summary
# сирі лічильники з ядра
grep -H . /sys/devices/system/edac/mc/mc*/ce_count 2>/dev/null
Виправлені помилки (CE) самі собою не ламають систему: ECC для того й потрібна. Небезпечне зростання. Якщо лічильник на одному модулі додає десятки одиниць на добу, плануйте заміну і перевірте планку за методикою зі статті про перевірку оперативної пам'яті.
Виведення метрик у Prometheus
Найпростіший шлях без зайвих сервісів — textfile collector у node_exporter: скрипт за cron пише файл, експортер віддає його разом зі своїми метриками.
cat << 'EOF' > /usr/local/bin/ipmi-textfile.sh
#!/bin/bash
set -euo pipefail
out=/var/lib/node_exporter/textfile_collector/ipmi.prom
ipmitool -I open sensor \
| awk -F'|' '$2 ~ /[0-9]/ { gsub(/^ +| +$/,"",$1); gsub(/ /,"",$2);
printf "ipmi_sensor{name=\"%s\"} %s\n", $1, $2 }' > "$out.tmp"
mv "$out.tmp" "$out"
EOF
chmod +x /usr/local/bin/ipmi-textfile.sh
Запис у тимчасовий файл із подальшим mv обов'язковий: інакше експортер іноді читає наполовину записаний файл і руйнує весь scrape. Якщо серверів більше трьох, замість скрипта ставте ipmi_exporter, який опитує BMC мережею. Збір і панелі розібрані в матеріалі про Grafana та Prometheus, а легка альтернатива для одиночного сервера — у статті про Netdata.
Не опитуйте BMC кожні 5 секунд. Контролер керування — слабкий процесор із кількома десятками мегабайтів пам'яті. Часте мережеве опитування призводить до того, що BMC перестає відповідати: вебконсоль не відкривається, ipmitool висить на таймауті, а разом із ними зникає віддалене керування живленням — рівно тоді, коли воно потрібне. Тримайте інтервал 60 секунд і більше; перевірити запас можна так: time ipmitool -I open sensor list > /dev/null має відпрацьовувати помітно швидше за інтервал опитування.
Які сповіщення справді потрібні
- Масив перейшов у degraded — сповіщення негайно, це єдиний захист даних.
- Нові перепризначені або очікувальні сектори на будь-якому диску — протягом години.
- Подія в SEL про втрату резервування живлення — негайно.
Зніміть еталонний знімок датчиків у перший день роботи машини: без нього ви не відрізните «завжди так було» від «почало зростати минулого тижня». Конфігурації та опції перелічені на сторінці виділених серверів.
Коротко
- Моніторте чотири джерела: датчики IPMI із SEL, SMART, EDAC і стан RAID.
- Опція KVM/IPMI на ZevsHost коштує $5 на місяць і входить у Dedicated Enterprise US.
- Локальний інтерфейс
-I openзручніший за мережевий для регулярного опитування. - SEL переповнюється: вивантажуйте й очищайте його за розкладом.
- Інтервал опитування BMC — від 60 секунд, інакше контролер зависає.