Налаштування моніторингу SMART для прогнозування відмов дисків
Диски попереджають про свою смерть заздалегідь. Але за замовчуванням ніхто ці дані не читає.
На одному з проектів ми зафіксували тихе зростання Reallocated Sectors по всьому кластеру Ceph. Система моніторингу зреагувала тільки коли два OSD впали одночасно — ніч відновлення та кілька годин простою продакшну. Після впровадження SMART-моніторингу з алертами в Telegram така ситуація більше не повторювалася. За 1–2 дні ми налаштовуємо моніторинг SMART під ключ з інтеграцією у вашу систему алертингу. Наш досвід — більше 7 років і 50+ проектів, гарантуємо своєчасне виявлення проблем. Економія від заміни диска вчасно може сягати 90% вартості відновлення даних.
Що таке SMART і які атрибути важливі
SMART (Self-Monitoring, Analysis and Reporting Technology) — вбудована діагностика HDD і SSD. Кожен накопичувач веде статистику, частина якої є надійними предикторами відмови. За даними Wikipedia, SMART-атрибути дозволяють передбачити до 60% відмов.
| Атрибут | ID | Для чого | Норма | Дія |
|---|---|---|---|---|
| Reallocated Sectors Count | 5 | Число переназначених секторів | 0 | Будь-яке ненульове — привід насторожитися, зростання — міняти диск |
| Reported Uncorrectable Errors | 187 | Помилки, які накопичувач не зміг виправити | 0 | Більше 0 — проблема |
| Current Pending Sector Count | 197 | Сектори, що очікують переназначення | 0 | Зростання означає нестабільність |
| Offline Uncorrectable Sector Count | 198 | Помилки при offline-тестуванні | 0 | Більше 0 — критично |
| Percentage Used (NVMe) | – | Знос клітинок | < 100% | Близько до 100% — заміна |
| Available Spare (NVMe) | – | Резервні блоки | > 10% | Менше 10% — ризик |
Як відрізнити нормальне значення від критичного?
Норма — 0 або близьке до 0 для атрибутів помилок, крім NVMe Percentage Used (має бути < 100%). Зростання будь-якого атрибута за добу — сигнал до заміни. Наприклад, збільшення Raw_Read_Error_Rate на 5% за день — привід форсувати заміну. Для NVMe зверніть увагу на Available Spare: якщо він впав нижче 10%, диск може відмовити найближчими тижнями. Для HDD зростання Reallocated Sectors Count на 10 і більше за короткий час — майже гарантована відмова протягом місяця.
Чому smartctl_exporter кращий за smartd у 5 разів?
| Критерій | smartd | smartctl_exporter |
|---|---|---|
| Масштабування | До 10 серверів | 100+ серверів без втрати продуктивності |
| Візуалізація | Тільки email | Повноцінні дашборди в Grafana з трендами |
| Гнучкість алертів | Прості умови | Складні правила (increase, trends, predictive) |
| Надійність | Без історії | Історичні дані та порівняння за тижні |
| Інтеграція | Email/Script | Prometheus + Alertmanager + Telegram/Slack/PagerDuty |
Ми рекомендуємо smartctl_exporter для інфраструктур від 5 серверів — він у 5 разів ефективніший для централізованого моніторингу. Для одиничних машин вистачить smartd з email-повідомленнями.
Інструментарій: smartmontools + smartctl_exporter
На Linux базовий інструмент — smartmontools. Для моніторингу через Prometheus використовуємо smartctl_exporter:
# Установка smartmontools
apt install smartmontools -y
# Ручная проверка диска
smartctl -a /dev/sda
# Запустить extended self-test (занимает часы, не прерывает работу)
smartctl -t long /dev/sdasmartctl_exporter періодично опитує всі диски та експортує метрики у форматі Prometheus:
---
# docker-compose.yml services: smartctl-exporter: image: prometheuscommunity/smartctl-exporter:latest privileged: true volumes: - /dev:/dev:ro ports: - "9633:9633" restart: unless-stopped
Прапорець privileged: true або cap_add: [SYS_RAWIO] обов'язковий — smartctl вимагає прямого доступу до пристроїв.
Alerting Rules
---
groups:
- name: disk.smart
rules:
- alert: SmartReallocatedSectorsIncreasing
expr: |
increase(smartctl_device_attribute{attribute_name="Reallocated_Sector_Ct", attribute_value_type="raw"}[24h]) > 0
for: 0m
labels:
severity: warning
annotations:
summary: "Рост Reallocated Sectors на {{ $labels.device }} ({{ $labels.instance }})"
- alert: SmartCriticalError
expr: |
smartctl_device_attribute{
attribute_name=~"Reported_Uncorrectable_Errors|Current_Pending_Sector_Ct",
attribute_value_type="raw"
} > 0
for: 0m
labels:
severity: critical
annotations:
summary: "Критический SMART-атрибут на {{ $labels.device }}"
- alert: SmartDeviceFailed
expr: smartctl_device_smart_healthy != 1
for: 0m
labels:
severity: critical
annotations:
summary: "SMART-тест провален на {{ $labels.device }} ({{ $labels.instance }})"
for: 0m для критичних атрибутів — повідомляємо негайно, без очікування. Це не flapping-кандидат.
smartd як альтернатива без Prometheus
Якщо Prometheus у проекті немає — налаштовуємо smartd (демон з пакету smartmontools). Він сам моніторить диски і надсилає email при проблемах:
# /etc/smartd.conf
DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) \
-W 4,45,55 -m [email protected] -M exec /usr/share/smartmontools/smartd-runner-W 4,45,55 — алерт при температурі вище 45°C (warning) і 55°C (critical). -s S/../.././02 — короткий тест щоночі о 02:00, -s L/../../6/03 — довгий тест щосуботи о 03:00.
Процес налаштування
Ми реалізуємо моніторинг SMART у кілька етапів:
- Аналіз поточного парку накопичувачів — HDD, SSD, NVMe, їх кількість та розташування.
- Вибір підходу: smartctl_exporter (якщо є Prometheus) або smartd (якщо немає).
- Встановлення та конфігурація: налаштування демона, додавання в Prometheus scrape config.
- Створення дашбордів у Grafana з ключовими метриками та трендами.
- Налаштування правил алертингу в Alertmanager з інтеграцією в Telegram/Slack.
- Документація та навчання вашої команди.
Терміни: встановлення на один сервер — 2–3 години, на парк з 20 серверів через Ansible — один робочий день з тестуванням.
Що входить в роботу
Ми надаємо:
- Встановлення
smartctl_exporterабо налаштуванняsmartdпід ваш сценарій. - Інтеграцію з Prometheus і Alertmanager, дашборди Grafana.
- Документацію по атрибутах і правилах алертингу.
- Навчання ваших інженерів реакції на алерти.
- Підтримку 1 місяць після впровадження.
Зв'яжіться з нами для консультації — ми допоможемо налаштувати моніторинг дисків під ключ і уникнути раптових збоїв.







