Настройка мониторинга и алертов 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