8.1 Настройка индекса для логов Docker
Для демонстрации я создал Docker-образ с ELK и Filebeat, который включает в себя тестовую программу для генерации логов. В этом примере мы сосредоточимся на настройке индекса для логов Docker в Kibana.
Шаг 1: Клонирование репозитория и запуск ELK-стека
Скачайте репозиторий с настройками Docker Compose для ELK-стека и запустите его:
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker compose up
Для удобства ключ -d опущен, чтобы можно было видеть процесс запуска ELK-стека. Запуск может занять несколько минут. После успешного старта в логах должна появиться запись:
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],
"pid":6,"message":"http server running at http://0:5601"}
Шаг 2: Доступ к Kibana
Откройте веб-браузер и перейдите по адресу http://localhost:5601.
Шаг 3: Настройка индекса для логов
Выберите в левом меню Kibana раздел Discover, чтобы перейти на страницу создания индекса.
Шаг 4: Создание нового индекса
Нажмите на кнопку Create index pattern, чтобы открыть форму настройки. В поле Index pattern name введите logstash-*. Если настройка выполнена правильно, Kibana покажет индексы, соответствующие правилу.
Шаг 5: Выбор временного поля
На следующей странице выберите ключевое поле с временной отметкой — @timestamp.
Шаг 6: Проверка индекса
После завершения настройки вы увидите страницу настроек индекса. Сейчас дополнительных действий не требуется.
Шаг 7: Просмотр логов
Перейдите обратно в раздел Discover, где будут отображены записи логов из Docker-контейнеров.
8.2 Создание дашбордов для визуализации логов
Шаг 1. Создайте дашборды для визуализации логов
В левом меню жмём на раздел "Dashboard" — это нас и выведет на страницу, где создаются дашборды.
Шаг 2. Тапаем на «Create new dashboard», и нас отправляют на экран, где уже добавляются объекты в этот самый Dashboard.
Шаг 3. Жмём на кнопку «Create new», и Kibana предложит выбрать, как отображать данные. Вариантов там полно, но для примера разберём два — графики в стиле «Vertical Bar» и табличное представление «Data Table». Всё остальное настраивается похоже.
8.3 Гистограмма логов
Давайте для примера «Vertical Bar» сделаем гистограмму, которая покажет соотношение успешных и неуспешных запросов сервиса. После настройки у нас получится что-то такое:
К успешным относятся запросы с кодом ответа < 400, а все >= 400 мы считаем проблемными.
Сначала нужно выбрать источник данных для графика. Берём Index Pattern, который создали ранее.
После выбора источника по умолчанию появится один общий график. Давайте его настроим.
В разделе «Buckets» нажимаем «Add», выбираем «X-axis» и настраиваем ось Х. По ней будут откладываться временные метки. В поле «Aggregation» выбираем «Date Histogram», а в «Field» указываем «@timestamp». Поле «Minimum interval» можно оставить в «Auto».
Жмём «Update», и на графике отобразится количество запросов каждые 30 секунд.
Теперь займёмся настройкой столбцов по оси Y. Сейчас отображается общее количество запросов за интервал времени. Изменим агрегацию на «Sum Bucket», чтобы добавить успешные и проблемные запросы. В разделе Bucket → Aggregation выбираем «Filters» и задаём фильтр: «statusCode >= 400». В поле «Custom label» пишем понятное название для метрики.
Нажимаем «Update», и график будет показывать только проблемные запросы.
Хотите изменить цвет столбцов? Нажмите на круг в легенде графика, и появится окно для выбора цвета.
Теперь добавим данные об успешных запросах. В разделе «Metrics» нажимаем «Add» и выбираем «Y-axis». Настраиваем аналогично, но для фильтра указываем «statusCode < 400».
Изменяем цвет для нового столбца, и у нас получится визуализация соотношения успешных и проблемных запросов.
Не забудьте сохранить график, нажав «Save» в верхней части экрана. Укажите название, и он появится на Dashboard.
8.4 Таблица логов
Давайте создадим таблицу «Data Table», чтобы видеть список всех URL, к которым были запросы, и их количество. Начнем, как и в случае с Vertical Bar, с выбора источника данных.
После выбора источника на экране появится таблица с одной колонкой, где показано общее число запросов за выбранный интервал времени.
Теперь настроим таблицу. Переходим в блок «Buckets», нажимаем «Add» и выбираем «Split rows».
В появившемся поле «Aggregation» выбираем «Terms», а в «Field» указываем «url.keyword».
В поле «Custom label» вводим понятное название, например «Url». Затем нажимаем «Update» — и наша таблица готова. В ней отображается количество запросов к каждому URL за выбранный интервал времени.
Чтобы сохранить таблицу, нажимаем «Save» в верхней части экрана, указываем название (например, «Urls»), и возвращаемся на Dashboard. Теперь мы видим оба наших созданных отображения.

ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ