הגדרת ניטור SMART לחיזוי כשלי דיסקים

דיסקים נכשלים לעיתים קרובות באופן בלתי צפוי, אך ניתן לחזות זאת מראש. אנו מגדירים ניטור SMART העוקב אחר בריאות הכונן ומתריע על סיכוני כשל. הצוות שלנו מספק פרויקט סוהר—מביקורת ועד הגדרת התראות—ובכך מבטיח פעילות יציבה וגילוי תקלות בזמן.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

דיסקים מתריעים על מותם מראש. אבל כברירת מחדל, אף אחד לא קורא את הנתונים האלה.

בפרויקט אחד, תיעדנו עלייה שקטה ב-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-runner

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 }})" — התראה בטמפרטורה מעל 45°C (אזהרה) ו-55°C (קריטי). for: 0m — בדיקה קצרה בלילה בשעה 2:00, smartd — בדיקה ארוכה בכל שבת בשעה 3:00.

תהליך ההתקנה

אנו מיישמים ניטור SMART במספר שלבים:

  1. ניתוח צי הדיסקים הנוכחי — HDD, SSD, NVMe, כמותם ומיקומם.
  2. בחירת גישה: smartctl_exporter (אם Prometheus קיים) או smartd (אם לא).
  3. התקנה והגדרה: הגדרת הדמון, הוספה להגדרות ה-scrape של Prometheus.
  4. יצירת לוחות מחוונים של Grafana עם מדדים ומגמות מרכזיים.
  5. הגדרת כללי התראות ב-Alertmanager עם אינטגרציה ל-Telegram/Slack.
  6. תיעוד והדרכה לצוות שלך.

לוח זמנים: התקנה על שרת אחד — 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.
  • תיעוד על מאפיינים וכללי התראות.
  • הדרכה למהנדסים שלך על תגובה להתראות.
  • חודש תמיכה לאחר היישום.

צור קשר לייעוץ — אנו יכולים לעזור להקים ניטור דיסקים מוכן לשימוש ולהימנע מתקלות פתאומיות.