Налаштування моніторингу та алертів Elasticsearch (Kibana)

Коли Elasticsearch-кластер мовчки переходить у red, а диск заповнюється до межі, команда дізнається про проблему від користувачів. Ми налаштовуємо моніторинг та алерти в Kibana, щоб ви бачили стан кластера в реальному часі. Наша команда реалізує проєкт під ключ — від аудиту до налаштування сповіщень у Telegram та Slack, забезпечуючи стабільну роботу та подальшу підтримку.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Налаштування моніторингу та алертів Elasticsearch (Kibana)

Бекенд-розробка: Laravel, Node.js, Django, Rails, GoСередній~2-3 дні
Часті запитання

Налаштування моніторингу та алертів Elasticsearch (Kibana)

Ми часто стикаємося з ситуацією: Elasticsearch-кластер мовчки переходить у red, диск заповнюється до 95%, а команда дізнається про це від користувачів. Без алертів інцидент перетворюється на аварію. Наш досвід показує, що налаштування моніторингу — ключовий етап, який запобігає простоям і втраті даних. У цій статті розберемо, як через Kibana налаштувати повноцінний моніторинг та алерти, використовуючи Metricbeat, Watcher та Prometheus. Нижче — перевірені конфіги та поради для продакшену.

Чому моніторинг Elasticsearch критично важливий?

Elasticsearch — основа пошуку та аналітики в багатьох проектах. Якщо кластер падає, бізнес-процеси зупиняються. Моніторинг дозволяє помітити degradation заздалегідь: зростання JVM heap, заповнення диска, зростання latency пошуку. Без нього ви дізнаєтеся про проблему від користувачів. Ми пропонуємо готову схему моніторингу з алертами в Telegram/Slack, щоб ви завжди були в курсі стану кластера.

Який інструмент моніторингу обрати?

Інструмент Джерело метрик Складність Алерти Візуалізація
Stack Monitoring (Kibana) Metricbeat або вбудований колектор Низька Watcher Дашборди в Kibana
Metricbeat + Watcher Elasticsearch, системні метрики Середня Watcher (JSON/UI) Дашборди 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 для збору метрик ES:

---
# 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}"

Ключові метрики: на що дивитися

Метрика Норма Попередження Критично
Cluster health green yellow red
JVM heap used <75% 75-85% >85% (небезпечно), >95% (GC storm)
Disk usage <85% 85-90% >90% (перебалансування), >95% (read-only)
Search latency (p95) <50ms 50-200ms >200ms
Indexing rate стабільний падіння >20% різке падіння

Cluster health — перше, на що дивитися: green — усі шарди призначено, yellow — replica не призначено (нормально для одного вузла, проблема для продакшену), red — дані недоступні.

JVM heap usage — критичний показник: менше 75% нормально, 75–85% моніторити, >85% деградація, >95% JVM завмирає на GC і кластер перестає відповідати.

Disk usage per node — ES блокує індексацію при заповненні диска. Поріг flood_stage (95%) — індекс переходить у read-only; high_watermark (90%) — перебалансування шардів; low_watermark (85%) — норма.

Налаштування алертів через Watcher

Watcher — вбудована система сповіщень X-Pack. Налаштовується через API або Kibana UI. Наведемо приклад алерту на red статус кластера:

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 UI?

У Kibana 8.x є розділ Alerts & Actions (Stack Management > Rules). Візуальний конструктор правил без написання JSON вручну. Готові шаблони: Elasticsearch cluster health, nodes changed, version mismatch, CPU usage, JVM memory. Канали сповіщень: Email, Slack, PagerDuty, Webhook (Telegram, Teams).

Моніторинг через Prometheus та Grafana

Якщо інфраструктура вже використовує Prometheus, підключіть elasticsearch_exporter:

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 scrape_config:

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

Імпорт Grafana дашборда ID 6483 (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 — 1 день. Алерти — 1 день. Просунутий моніторинг з Prometheus+Grafana — 1-2 дні. Разом від 2 до 4 днів. Вартість розраховується індивідуально.

Замовте консультацію — ми оцінимо ваш кластер і запропонуємо оптимальне рішення. Зв'яжіться з нами, щоб обговорити деталі.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1395
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060