דיסקים מתריעים על מותם מראש. אבל כברירת מחדל, אף אחד לא קורא את הנתונים האלה.
בפרויקט אחד, תיעדנו עלייה שקטה ב-Reallocated Sectors בכל אשכול Ceph. מערכת הניטור הגיבה רק כאשר שני OSDs קרסו בו-זמנית — ליל שחזור וכמה שעות של השבתת ייצור. לאחר הטמעת ניטור SMART עם התראות טלגרם, מצב כזה לא חזר על עצמו. תוך 1-2 ימים, הקמנו ניטור SMART מוכן לשימוש המשולב עם מערכת ההתראות שלך. הניסיון שלנו — מעל 7 שנים ו-50+ פרויקטים, המבטיח גילוי בעיות בזמן. החיסכון מהחלפת דיסק בזמן יכול להגיע ל-90% מעלויות שחזור נתונים.
מה זה SMART ואילו מאפיינים חשובים
SMART (Self-Monitoring, Analysis and Reporting Technology) הוא אבחון מובנה עבור HDD ו-SSD. כל כונן שומר סטטיסטיקות, חלקן מנבאות תקלות אמינות. לפי ויקיפדיה, מאפייני SMART יכולים לחזות עד 60% מהתקלות.
| מאפיין | מזהה | מה הוא מצביע | תקין | פעולה |
|---|---|---|---|---|
| Reallocated Sectors Count | 5 | מספר הסקטורים שהוקצו מחדש | 0 | כל ערך שאינו אפס דורש תשומת לב; גידול פירושו החלפת דיסק |
| Reported Uncorrectable Errors | 187 | שגיאות שהכונן לא יכול היה לתקן | 0 | מעל 0 זו בעיה |
| Current Pending Sector Count | 197 | סקטורים הממתינים להקצאה מחדש | 0 | גידול מצביע על חוסר יציבות |
| Offline Uncorrectable Sector Count | 198 | שגיאות במהלך בדיקות לא מקוונות | 0 | מעל 0 זה קריטי |
| Percentage Used (NVMe) | – | בלאי תאים | < 100% | קרוב ל-100% פירושו החלפה |
| Available Spare (NVMe) | – | בלוקים רזרביים | > 10% | מתחת ל-10% מצביע על סיכון |
איך להבחין בין ערכים תקינים לקריטיים?
תקין הוא 0 או קרוב ל-0 עבור מאפייני שגיאה, למעט Percentage Used של NVMe (צריך להיות < 100%). גידול של כל מאפיין במהלך יום הוא אות להחלפה. לדוגמה, עלייה של 5% ב-Raw_Read_Error_Rate ביום אחד היא סיבה להקדים את ההחלפה. עבור NVMe, עקוב אחר Available Spare: אם הוא יורד מתחת ל-10%, הדיסק עלול להיכשל תוך שבועות. עבור HDD, גידול של 10 או יותר ב-Reallocated Sectors Count בפרק זמן קצר כמעט מבטיח כשל תוך חודש.
למה smartctl_exporter טוב פי 5 מ-smartd
| קריטריון | smartd | smartctl_exporter |
|---|---|---|
| מדרגיות | עד 10 שרתים | 100+ שרתים ללא אובדן ביצועים |
| ויזואליזציה | אימייל בלבד | לוחות מחוונים מלאים של Grafana עם מגמות |
| גמישות התראות | תנאים פשוטים | כללים מורכבים (עלייה, מגמות, חיזוי) |
| אמינות | אין היסטוריה | נתונים היסטוריים והשוואה שבועית |
| אינטגרציה | אימייל/סקריפט | Prometheus + Alertmanager + Telegram/Slack/PagerDuty |
אנו ממליצים על smartctl_exporter עבור תשתיות עם 5+ שרתים — הוא יעיל פי 5 לניטור מרכזי. עבור מכונות בודדות, smartd עם התראות אימייל מספיק.
כלים: smartmontools + smartctl_exporter
ב-Linux, הכלי הבסיסי הוא smartmontools. לניטור דרך Prometheus, אנו משתמשים ב-smartctl_exporter:
# Установка smartmontools
apt install smartmontools -y
# Ручная проверка диска
smartctl -a /dev/sda
# Запустить extended self-test (занимает часы, не прерывает работу)
smartctl -t long /dev/sda# Установка smartmontools apt install smartmontools -y # Ручная проверка диска smartctl -a /dev/sda # Запустить extended self-test (занимает часы, не прерывает работу) smartctl -t long /dev/sda סוקר מעת לעת את כל הדיסקים ומייצא מדדים בפורמט Prometheus:
---
# docker-compose.yml services: smartctl-exporter: image: prometheuscommunity/smartctl-exporter:latest privileged: true volumes: - /dev:/dev:ro ports: - "9633:9633" restart: unless-stopped
הדגל smartctl_exporter או # docker-compose.yml services: smartctl-exporter: image: prometheuscommunity/smartctl-exporter:latest privileged: true volumes: - /dev:/dev:ro ports: - "9633:9633" restart: unless-stopped הוא חובה — smartctl דורש גישה ישירה למכשיר.
כללי התראות
---
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 }})"
---
privileged: true עבור מאפיינים קריטיים — אנו מודיעים מיד ללא המתנה. זה לא מועמד לתנודות.
smartd כחלופה ללא Prometheus
אם Prometheus אינו בפרויקט, אנו מגדירים את cap_add: [SYS_RAWIO] (הדמון מחבילת smartmontools). הוא עוקב אחר הדיסקים בעצמו ושולח אימייל על בעיות:
# /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-runnergroups: - 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 }})" — התראה בטמפרטורה מעל 45°C (אזהרה) ו-55°C (קריטי). for: 0m — בדיקה קצרה בלילה בשעה 2:00, smartd — בדיקה ארוכה בכל שבת בשעה 3:00.
תהליך ההתקנה
אנו מיישמים ניטור SMART במספר שלבים:
- ניתוח צי הדיסקים הנוכחי — HDD, SSD, NVMe, כמותם ומיקומם.
- בחירת גישה: smartctl_exporter (אם Prometheus קיים) או smartd (אם לא).
- התקנה והגדרה: הגדרת הדמון, הוספה להגדרות ה-scrape של Prometheus.
- יצירת לוחות מחוונים של Grafana עם מדדים ומגמות מרכזיים.
- הגדרת כללי התראות ב-Alertmanager עם אינטגרציה ל-Telegram/Slack.
- תיעוד והדרכה לצוות שלך.
לוח זמנים: התקנה על שרת אחד — 2-3 שעות; על צי של 20 שרתים דרך Ansible — יום עסקים אחד עם בדיקות.
מה כלול בעבודה
אנו מספקים:
- התקנת
# /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לתרחיש שלך. - אינטגרציה עם Prometheus ו-Alertmanager, לוחות מחוונים של Grafana.
- תיעוד על מאפיינים וכללי התראות.
- הדרכה למהנדסים שלך על תגובה להתראות.
- חודש תמיכה לאחר היישום.
צור קשר לייעוץ — אנו יכולים לעזור להקים ניטור דיסקים מוכן לשימוש ולהימנע מתקלות פתאומיות.







