הגדרת ניטור והתראות של Elasticsearch (Kibana)

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

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת ניטור והתראות של Elasticsearch (Kibana)
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

לעתים קרובות אנו נתקלים במצב הבא: קלאסטר Elasticsearch עובר למצב אדום בשקט, הדיסק מתמלא ל-95%, והצוות שומע על כך מהמשתמשים. ללא התראות, תקרית הופכת להשבתה. הניסיון שלנו מראה שהגדרת ניטור היא שלב מפתח שמונע השבתות ואובדן נתונים. במאמר זה נסקור כיצד להגדיר ניטור והתראות מלאים דרך Kibana באמצעות Metricbeat, Watcher ו-Prometheus. להלן תצורות שנבדקו בשטח וטיפים לסביבת ייצור.

מדוע ניטור Elasticsearch הוא קריטי?

Elasticsearch מפעיל חיפוש ואנליטיקה בפרויקטים רבים. אם הקלאסטר נופל, תהליכים עסקיים נעצרים. ניטור מאפשר לזהות הידרדרות מוקדם: עלייה ב-JVM heap, מילוי דיסק, עלייה בזמן תגובה של חיפוש. ללא ניטור, שומעים על בעיות מהמשתמשים. אנו מציעים תוכנית ניטור מוכנה עם התראות ל-Telegram/Slack כך שתמיד תדעו את מצב הקלאסטר שלכם.

באיזה כלי ניטור לבחור?

כלי מקור מדדים מורכבות התראות ויזואליזציה
Stack Monitoring (Kibana) Metricbeat או אספן מובנה נמוכה Watcher לוחות מחוונים של Kibana
Metricbeat + Watcher Elasticsearch, מדדי מערכת בינונית Watcher (JSON/ממשק משתמש) לוחות מחוונים של Kibana
Prometheus + Grafana elasticsearch_exporter גבוהה Alertmanager, Grafana לוחות מחוונים של Grafana
Elastic Cloud מובנה נמוכה מובנה Kibana

לסביבת ייצור, אנו ממליצים על Metricbeat + Stack Monitoring למדדים בסיסיים ו-Watcher להתראות. אם אתם כבר משתמשים ב-Prometheus, שלבו את elasticsearch_exporter.

כיצד עובד Stack Monitoring ב-Kibana?

Kibana Stack Monitoring הוא כלי מובנה לאיסוף מדדים מ-Elasticsearch, Logstash ו-Kibana. ניתן לאסוף נתונים דרך Metricbeat (מומלץ) או הסוכן המובנה (לא מומלץ). אנו ממליצים בחום לשלוח מדדים לקלאסטר ניטור נפרד — אחרת כשל בקלאסטר הראשי פירושו אובדן הניטור. אנו משתמשים ב-Metricbeat עם X-Pack מופעל.

תצורת Metricbeat למדדי Elasticsearch:

---
# metricbeat.yml
metricbeat.modules:
  - module: elasticsearch
    xpack.enabled: true
    period: 10s
    hosts: ["https://localhost:9200"]
    username: "remote_monitoring_user"
    password: "${ES_MONITOR_PASSWORD}"
    ssl.certificate_authorities: ["/etc/elasticsearch/certs/ca.crt"]
    scope: cluster
    metricsets:
      - ccr
      - cluster_stats
      - enrich
      - index
      - index_recovery
      - index_summary
      - ml_job
      - node
      - node_stats
      - pending_tasks
      - shard
output.elasticsearch:
  hosts: ["https://monitoring-es:9200"]
  username: "metricbeat_writer"
  password: "${MONITOR_WRITER_PASSWORD}"

מדדים מרכזיים: מה לעקוב

מדד תקין אזהרה קריטי
בריאות הקלאסטר ירוק צהוב אדום
שימוש ב-JVM heap <75% 75-85% >85% (מסוכן), >95% (סערת GC)
שימוש בדיסק <85% 85-90% >90% (איזון מחדש), >95% (קריאה בלבד)
זמן תגובת חיפוש (p95) <50ms 50-200ms >200ms
קצב אינדוקס יציב ירידה >20% ירידה חדה

בריאות הקלאסטר — הדבר הראשון לבדוק: ירוק פירושו שכל השארדים מוקצים, צהוב פירושו ש-replicas לא מוקצים (תקין לצומת יחיד, בעיה לייצור), אדום פירושו שנתונים לא זמינים.

שימוש ב-JVM heap — קריטי: מתחת ל-75% תקין, 75–85% יש לנטר, >85% הידרדרות, >95% JVM קופא על GC והקלאסטר מפסיק להגיב.

שימוש בדיסק לפי צומת — Elasticsearch חוסם אינדוקס כשהדיסק מתמלא. סף flood_stage (95%) הופך אינדקסים לקריאה בלבד; high_watermark (90%) מפעיל איזון מחדש של שארדים; low_watermark (85%) תקין.

הגדרת התראות דרך Watcher

Watcher היא מערכת ההתראות המובנית של X-Pack. מוגדרת דרך API או ממשק המשתמש של Kibana. הנה דוגמה להתראה על מצב קלאסטר אדום:

PUT _watcher/watch/cluster_status_red
{
  "trigger": {
    "schedule": {
      "interval": "1m"
    }
  },
  "input": {
    "http": {
      "request": {
        "host": "localhost",
        "port": 9200,
        "path": "/_cluster/health",
        "auth": {
          "basic": {
            "username": "elastic",
            "password": "{{ctx.metadata.es_password}}"
          }
        }
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.status": {
        "eq": "red"
      }
    }
  },
  "actions": {
    "send_telegram": {
      "webhook": {
        "scheme": "https",
        "host": "api.telegram.org",
        "port": 443,
        "method": "post",
        "path": "/bot{{ctx.metadata.telegram_token}}/sendMessage",
        "params": {
          "chat_id": "{{ctx.metadata.telegram_chat_id}}",
          "text": "ALERT: Elasticsearch cluster status is RED! Time: {{ctx.execution_time}}"
        }
      }
    }
  }
}

התראה על שימוש בדיסק >85%:

PUT _watcher/watch/disk_usage_high
{
  "trigger": {
    "schedule": {
      "interval": "5m"
    }
  },
  "input": {
    "http": {
      "request": {
        "path": "/_nodes/stats/fs",
        "auth": {
          "basic": {
            "username": "elastic",
            "password": "changeme"
          }
        }
      }
    }
  },
  "condition": {
    "script": {
      "source": """
        for (node in ctx.payload.nodes.values()) {
          def total = node.fs.total.total_in_bytes;
          def free = node.fs.total.free_in_bytes;
          def used_pct = (total - free) / total * 100;
          if (used_pct > 85) return true;
        }
        return false;
      """
    }
  },
  "actions": {
    "log": {
      "logging": {
        "level": "warn",
        "text": "High disk usage detected on Elasticsearch node"
      }
    }
  }
}

כיצד להגדיר התראות דרך ממשק המשתמש של Kibana?

ב-Kibana 8.x, השתמשו ב-Alerts & Actions (Stack Management > Rules). בונה חוקים ויזואלי ללא כתיבת JSON ידנית. תבניות מוכנות: בריאות קלאסטר Elasticsearch, שינוי בצמתים, אי-התאמת גרסאות, שימוש במעבד, זיכרון JVM. ערוצי התראה: אימייל, Slack, PagerDuty, Webhook (Telegram, Teams).

ניטור דרך Prometheus ו-Grafana

אם התשתית שלכם כבר משתמשת ב-Prometheus, חברו את # metricbeat.yml metricbeat.modules: - module: elasticsearch xpack.enabled: true period: 10s hosts: ["https://localhost:9200"] username: "remote_monitoring_user" password: "${ES_MONITOR_PASSWORD}" ssl.certificate_authorities: ["/etc/elasticsearch/certs/ca.crt"] scope: cluster metricsets: - ccr - cluster_stats - enrich - index - index_recovery - index_summary - ml_job - node - node_stats - pending_tasks - shard output.elasticsearch: hosts: ["https://monitoring-es:9200"] username: "metricbeat_writer" password: "${MONITOR_WRITER_PASSWORD}" :

docker run -d \
 --name elasticsearch_exporter \
 -p 9114:9114 \
 prometheuscommunity/elasticsearch-exporter:latest \
 --es.uri=https://elastic:changeme@localhost:9200 \
 --es.ssl-skip-verify \
 --es.all \
 --es.indices \
 --es.shards

Prometheus PUT _watcher/watch/cluster_status_red { "trigger": { "schedule": { "interval": "1m" } }, "input": { "http": { "request": { "host": "localhost", "port": 9200, "path": "/_cluster/health", "auth": { "basic": { "username": "elastic", "password": "{{ctx.metadata.es_password}}" } } } } }, "condition": { "compare": { "ctx.payload.status": { "eq": "red" } } }, "actions": { "send_telegram": { "webhook": { "scheme": "https", "host": "api.telegram.org", "port": 443, "method": "post", "path": "/bot{{ctx.metadata.telegram_token}}/sendMessage", "params": { "chat_id": "{{ctx.metadata.telegram_chat_id}}", "text": "ALERT: Elasticsearch cluster status is RED! Time: {{ctx.execution_time}}" } } } } } :

- job_name: 'elasticsearch' static_configs: - targets: ['localhost:9114'] scrape_interval: 30s 

ייבאו את מזהה לוח המחוונים של Grafana PUT _watcher/watch/disk_usage_high { "trigger": { "schedule": { "interval": "5m" } }, "input": { "http": { "request": { "path": "/_nodes/stats/fs", "auth": { "basic": { "username": "elastic", "password": "changeme" } } } } }, "condition": { "script": { "source": """ for (node in ctx.payload.nodes.values()) { def total = node.fs.total.total_in_bytes; def free = node.fs.total.free_in_bytes; def used_pct = (total - free) / total * 100; if (used_pct > 85) return true; } return false; """ } }, "actions": { "log": { "logging": { "level": "warn", "text": "High disk usage detected on Elasticsearch node" } } } } (Elasticsearch Overview) — לוח מחוונים מוכן עם מדדים מרכזיים. כפי שצוין בתיעוד של Elasticsearch, זה מפשט את הוויזואליזציה.

מה כלול בעבודה שלנו

אנו מספקים: פריסת Metricbeat ולוחות מחוונים של Stack Monitoring; הגדרת התראות דרך Watcher או Kibana Rules עם ערוצי Telegram/Slack/PagerDuty; אינטגרציה עם Prometheus ו-Grafana (אם קיימת תשתית); תיעוד והדרכה לצוות שלכם; 3 חודשי תמיכה והתאמת ספים. הניסיון שלנו — 5 שנים בניהול Elasticsearch, מעל 20 פרויקטים. אנו מבטיחים SLA על זמן תגובה. המהנדסים שלנו מחזיקים בהסמכות Elastic Certified Engineer.

לוחות זמנים

ניטור בסיסי דרך Metricbeat ו-Stack Monitoring — יום אחד. התראות — יום אחד. ניטור מתקדם עם Prometheus+Grafana — 1–2 ימים. סה"כ בין 2 ל-4 ימים. העלות מחושבת באופן פרטני.

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