Мониторинг железа сервера: температура, диски, питание
Железо ломается предсказуемо: диск за недели до отказа копит переназначенные секторы, память сыпет исправленными ошибками 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 секунд, иначе контроллер зависает.