Гид по технологиям

Elasticsearch и Kibana на AWS — настройка логов

• 7 min read • DevOps • Обновлено 23 Nov 2025
Elasticsearch и Kibana на AWS — настройка логов
Elasticsearch и Kibana на AWS — настройка логов

Панель Kibana с графиками и фильтрами

Почему логи важны

Логи — это источник фактов о поведении системы. В Linux почти всё логируется. Системные события попадают в:

/var/log/syslog

А многие приложения сами создают лог-файлы. Веб-серверы особенно полезны для аналитики — они фиксируют каждое обращение. Nginx, например, логирует:

  • IP-адрес клиента
  • Имя пользователя при базовой аутентификации (чаще пусто)
  • Время запроса
  • Сам запрос, например:
GET /index.php?url=abc
  • Код ответа
  • Число байт в теле ответа (без HTTP-заголовков)
  • HTTP referer — откуда пришёл пользователь
  • User-Agent браузера

Собранные логи позволяют быстро отвечать на вопросы: какие страницы генерируют ошибки, откуда приходят медленные запросы, какие клиенты загружают наибольшие объёмы трафика.

Краткая архитектура и зачем Elasticsearch

Elasticsearch (ES) — распределённый поисковый движок. Он позволяет выполнять сложные запросы и агрегации по большим объёмам логов. Kibana — веб-интерфейс для визуализации и исследования данных в ES. На AWS эти компоненты доступны как управляемая служба AWS Elasticsearch Service.

Типичный поток данных:

  1. Приложение или Nginx пишет логи на сервере.
  2. Агент CloudWatch Logs (или Fluentd/Logstash) отправляет логи в CloudWatch.
  3. Из CloudWatch настраивается поток в AWS Elasticsearch (через Lambda или встроенный коннектор).
  4. ES хранит, индексирует и делает доступными данные для Kibana.

Требования перед началом

  • Аккаунт AWS с правами на создание доменов Elasticsearch, ролей IAM и Lambda.
  • Логи уже должны попадать в CloudWatch (установите CloudWatch Logs Agent или используйте встроенный агент встроенных AMI).
  • Решите ожидаемый объём данных и период хранения — это важный фактор расчёта стоимости.

Важно: для теста используйте небольшие инстансы, например t2.small. Для продакшена подберите экземпляры серии r5 или аналогичные по требованиям CPU/памяти.

Вкладка Insights в CloudWatch Logs с примером визуализации

Пошаговая настройка на AWS

1. Создание домена Elasticsearch

  1. Перейдите в консоль Elasticsearch и создайте новый домен.
  2. Укажите имя домена и тип инстанса. По умолчанию может стоять r5.large; для теста возьмите t2.small.
  3. Задайте размер диска (по умолчанию 10 ГБ) с запасом под рост логов.
  4. Создайте домен и дождитесь инициализации (обычно ~10 минут).

Создание нового домена Elasticsearch в консоли AWS

2. Настройка стрима из CloudWatch в Elasticsearch

  1. Откройте CloudWatch и выберите нужную группу логов (Log Group).
  2. Под Actions выберите действие Stream to Amazon Elasticsearch Service.

Консоль CloudWatch — пункт 'Stream to Amazon Elasticsearch Service'

  1. Выберите ранее созданный домен ES.
  2. Создайте новую роль IAM для Lambda-функции, которая будет выполнять стриминг. Политика должна давать доступ к ES и разрешать запись в CloudWatch Logs (пример политики ниже).
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "es:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:es:region:account-id:domain/target-domain-name/*"
    }
  ]
}
  1. На шаге формата выберите Common Log Format или укажите собственный формат, соответствующий вашим логам.

Выбор формата логов: Common Log Format

  1. Запустите стрим. Через несколько секунд данные начинают поступать в ES.

3. Создание индекса в Kibana

  1. Откройте Kibana по endpoint из панели домена ES.
  2. В Discover создайте новый индекс на основе шаблона, соответствующего имени индексируемых логов.
  3. Проверьте, что данные парсятся корректно: поля timestamp, status, request, bytes и т. п. распознаются и индексируются.

Интерфейс Kibana — вкладка Discover с индексом логов

4. Визуализация и дашборды

  1. Перейдите в Visualize для создания графиков: гистограммы по времени, топ-URI, распределение кодов ответа.
  2. Объедините визуализации в дашборды.

Визуализации в Kibana, организованные на дашборде

5. Мониторинг и обслуживание

В панели домена можно отслеживать здоровье кластера и показатели нагрузки.

Панель информации о состоянии домена Elasticsearch

Elasticsearch потребляет ресурсы при агрегациях и сложных запросах. Включите логирование медленных запросов ES в CloudWatch (Logs) для анализа производительных узких мест.

Практические рекомендации по производительности и стоимости

  • Используйте t2.small для тестов. Для постоянной нагрузки выбирайте инстансы с большим объёмом памяти и CPU (r5, m5).
  • Для снижения затрат рассмотрите Reserved Instances при долгосрочном использовании.
  • Настраивайте lifecycle policies: храните горячие индексы короткое время, затем переводите в холодное хранилище или удаляйте.
  • Делайте регулярные snapshot’ы в S3 для резервного копирования.

Важно: индексирование большого количества полей без шаблонов типов может привести к «mapping explosion». Определяйте шаблоны индексов заранее.

Безопасность и соответствие требованиям конфиденциальности

  • Закройте доступ к домену ES через VPC или IAM-политику. Не оставляйте публичный доступ.
  • Ограничьте права ролей Lambda и агентов только необходимыми действиями.
  • Для персональных данных применяйте маскирование или удаление персональных идентификаторов до отправки логов в ES.
  • Для GDPR/локальных регуляций реализуйте политики хранения и удаления данных.

Когда Elasticsearch не подходит

  • У вас один-два сервера и небольшой объем логов — используйте CloudWatch Logs Insights вместо полного ES+Kibana.
  • Нужна простая временная аналитика без сложных агрегаций — встроенные инструменты CloudWatch или внешние SaaS-решения могут быть дешевле.

Альтернативные подходы

  • CloudWatch Logs Insights — быстрый поиск и простая визуализация в CloudWatch.
  • OpenSearch — форк Elasticsearch с открытой лицензией; доступен как управляемая служба AWS (OpenSearch Service).
  • Собрать стек ELK (Elasticsearch + Logstash + Kibana) на EC2 с Fluentd/Logstash для парсинга — даёт гибкость, но требует управления.
  • SaaS-решения (Datadog, Splunk, Sumo Logic) для готовых интеграций и сопровождения.

Ментальные модели и эвристики

  • «Hot/Warm/Cold» — горячие индексы для недавних данных, тёплые для архивации, холодные для долгого хранения.
  • «Shift-left» — маскируйте чувствительные данные как можно раньше, лучше на источнике, чем в ES.
  • «One index per day» — часто применяемая стратегия для веб-логов: упрощает управление retention и ротацию.

Чек-листы

Чек-лист инженера перед запуском в продакшн:

  • Логи поступают в CloudWatch.
  • Создан домен ES с подходящими экземплярами.
  • Настроен стрим из CloudWatch с корректным форматом.
  • Созданы роли IAM с минимальными привилегиями.
  • Индексы в Kibana проверены на соответствие схемы.
  • Настроен lifecycle policy и snapshot на S3.
  • Ограничен сетевой доступ к домену ES.

Роль разработчика:

  • Провести тестовые запросы, проверить parsing и поля.
  • Составить шаблон индекса для полей приложения.

Роль DevOps:

  • Планировать кластер ресурсов и резервное копирование.
  • Настроить мониторинг и тревоги на потребление CPU/heap/disk.

Плейбук при инциденте: запросы падают или медленные

  1. Проверьте статус кластера в панели домена.
  2. Откройте лог медленных запросов ES в CloudWatch.
  3. Определите самые тяжёлые запросы (по времени и ресурсам).
  4. Если задержка из-за агрегаций, уменьшите окно времени в запросе или добавьте кеширование.
  5. При перегрузке — вертикальное масштабирование или добавление нод данных.
  6. Если диск заполнен — освободите старые индексы или увеличьте хранилище.
  7. Откат: направьте стрим в временное S3 хранилище и остановите тяжёлые запросы.

Критерии приёмки

  • Новые логи появляются в Kibana в течение ожидаемого окна (обычно < 60 с).
  • Ключевые поля (timestamp, request, status, bytes) корректно распознаются.
  • Запросы Discover выполняются быстро для последних N часов (зависит от инстанса).
  • Snapshot настроен и успешно выполняется по расписанию.

Факто-бокс

  • Типичный тестовый инстанс: t2.small.
  • Начальный размер диска: 10 ГБ (настройка по умолчанию).
  • Инициализация домена: ~10 минут.

Мини-методология парсинга логов

  1. Определите формат логов (Common Log Format, JSON, custom).
  2. Создайте шаблон индекса в ES с определёнными типами полей.
  3. Запустите поток и проверяйте в Kibana первые 100 записей.
  4. Корректируйте парсинг и шаблон до стабильного состояния.

Пример дерева решений для выбора решения

flowchart TD
  A[Нужна аналитика логов?] --> B{Количество серверов}
  B -->|1-2| C[Использовать CloudWatch Logs Insights]
  B -->|3-10| D[Оценить ES vs OpenSearch]
  B -->|>10| E[Использовать ES/OpenSearch на AWS]
  D --> F{Требуется управляемый сервис}
  F -->|Да| E
  F -->|Нет| G[Развернуть ELK на EC2]

Краткий словарь терминов

  • Elasticsearch — поисковый движок и движок для агрегаций по JSON-документам.
  • Kibana — веб-интерфейс для поиска, визуализации и создания дашбордов поверх ES.
  • Index — набор документов в ES, аналог таблицы в БД.
  • CloudWatch Logs — сервис AWS для сбора и хранения логов.

Заключение

Elasticsearch и Kibana на AWS дают гибкий инструмент для глубокой аналитики логов. Для небольших развертываний подойдёт CloudWatch Insights. Для средних и больших — ES/OpenSearch предоставляет масштабируемую платформу. Обязательно продумывайте безопасность, управление жизненным циклом индексов и резервное копирование.

Важно: начните с тестового домена, отработайте парсинг и шаблоны индексов, затем масштабируйте под реальные нагрузки.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро