Настройка мониторинга и алертов Elasticsearch (Kibana)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка мониторинга и алертов Elasticsearch (Kibana)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1217
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1046
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Настройка мониторинга и алертов Elasticsearch (Kibana)

Elasticsearch не будет сообщать о проблемах сам — нужно настроить мониторинг заранее. Наиболее частые сценарии: диск заполнился, кластер ушёл в red статус из-за нераспределённых шардов, heap достиг 95% и включился GC storm. Без алертов вы узнаёте об этом от пользователей.

Stack Monitoring в Kibana

Kibana Stack Monitoring — встроенный дашборд для мониторинга Elasticsearch, Logstash, Kibana, Beats. Данные мониторинга собираются через Metricbeat или через встроенный механизм (устаревший, не рекомендуется).

Настройка 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 — все шарды (primary + replica) назначены
  • yellow — primary шарды OK, часть replica не назначена (нормально для одного узла, проблема для продакшена)
  • red — часть primary шардов не назначена, данные недоступны

JVM Heap Used % — критический показатель:

  • < 75% — нормально
  • 75–85% — мониторить, возможен частый GC
  • 85% — опасная зона, производительность деградирует

  • 95% — JVM замирает на GC, кластер перестаёт отвечать

Disk usage per node — ES блокирует индексацию при заполнении диска:

  • Порог flood_stage (по умолчанию 95%) — индекс переходит в read-only
  • Порог high_watermark (90%) — начинается перебалансировка шардов
  • Порог low_watermark (85%) — перебалансировка завершается, норма

Search latency — время выполнения запросов. p50, p95, p99. Смотреть на p95 — всплески на 1–2% запросов сигнализируют о проблемах.

Indexing rate — документов/сек. Резкое падение — проблемы с ресурсами.

Watcher — алерты в Elasticsearch

Elastic 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

Ключевые лог-файлы на каждом узле:

/var/log/elasticsearch/myapp-prod.log     — основной лог
/var/log/elasticsearch/myapp-prod_gc.log  — GC лог (анализировать при heap проблемах)
/var/log/elasticsearch/myapp-prod_server.log — системные события

Запросы медленного поиска логируются через slow log:

PUT /products/_settings
{
  "index.search.slowlog.threshold.query.warn": "5s",
  "index.search.slowlog.threshold.query.info": "2s",
  "index.search.slowlog.threshold.fetch.warn": "1s",
  "index.indexing.slowlog.threshold.index.warn": "5s"
}

Сроки

Базовый мониторинг через Kibana Stack Monitoring с Metricbeat — 1 рабочий день. Настройка алертов через Watcher или Kibana Rules с уведомлениями в Telegram/Slack — ещё 1 день. Grafana-дашборд с Prometheus — 1 день при наличии готовой инфраструктуры Prometheus.