JavaRush /Курсы /Модуль 2: Fullstack /Визуализация логов в Kibana

Визуализация логов в Kibana

Модуль 2: Fullstack
17 уровень , 7 лекция
Открыта

8.1 Настройка индекса для логов Docker

Для демонстрации я создал Docker-образ с ELK и Filebeat, который включает в себя тестовую программу для генерации логов. В этом примере мы сосредоточимся на настройке индекса для логов Docker в Kibana.

Шаг 1: Клонирование репозитория и запуск ELK-стека

Скачайте репозиторий с настройками Docker Compose для ELK-стека и запустите его:

Terminal

git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker compose up

Для удобства ключ -d опущен, чтобы можно было видеть процесс запуска ELK-стека. Запуск может занять несколько минут. После успешного старта в логах должна появиться запись:

Terminal

{"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. Теперь мы видим оба наших созданных отображения.

Готовый Dashboard с таблицей и графиком
3
Задача
Модуль 2: Fullstack, 17 уровень, 7 лекция
Недоступна
Создание индекса для логов Docker
Создание индекса для логов Docker
3
Задача
Модуль 2: Fullstack, 17 уровень, 7 лекция
Недоступна
Визуализация логов с помощью гистограммы
Визуализация логов с помощью гистограммы
3
Задача
Модуль 2: Fullstack, 17 уровень, 7 лекция
Недоступна
Табличное отображение запросов
Табличное отображение запросов
3
Задача
Модуль 2: Fullstack, 17 уровень, 7 лекция
Недоступна
Настройка цветов гистограммы
Настройка цветов гистограммы
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 59
14 октября 2025
Короче час провозился с этой херней, ничего не работало. Оказалось, оно не работало из-за того что порты уже были заняты, так как в ПРОШЛОЙ версии, уже были установлены хостовые версии эластика и кибаны.... Спасибо Javarush за последовательность лекций...
15 июня 2025
Для тех у кого как у меня, filebeat выдает ошибку: Exiting: error loading config file: config file ("filebeat.yml") can only be writable by the owner but the permissions are "-rwxrwxrwx" (to fix the permissions use: 'chmod go-w /usr/share/filebeat/filebeat.yml') Добавьте строчку в docker-compose.yml: command: filebeat -e -strict.perms=false вот тут: filebeat: image: elastic/filebeat:7.9.1 command: filebeat -e -strict.perms=false restart: unless-stopped depends_on: - elasticsearch volumes: - ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml - ./logs/:/logs/ networks: - elk-network