Раздел 40 · Elasticsearch и ELK

Дашборды и агрегации логов

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В 19:40 UTC поддержка приносит первую жалобу на оплату. В Discover есть тысячи строк, но дежурному нужны три ответа: когда началось, сколько клиентов затронуто и какой сервис тормозит. Панель приборов автомобиля не показывает каждое сгорание топлива. Она собирает события в скорость, температуру и запас хода. С логами поступим так же.

График начинается с вопроса

Дашборд

собирает обзор инцидента. Для «Гонца» выберем панели:

ВопросПанельПоле
Когда началось?ошибки по минутам@timestamp
Где сломалось?ошибки по сервисамservice.name
Насколько медленно?p95 задержкиduration_ms
Какой запрос страдает?топ путей nginxurl.original

Сначала задай период и источник, затем фильтр, после него агрегации. Это те же агрегации Elasticsearch, а не отдельное хранилище внутри Kibana.

Как Lens собирает панель

В настоящей Kibana открой Lens, выбери data view логов, перенеси @timestamp на горизонтальную ось и число записей на вертикальную. Фильтр service.name : payments and log.level : ERROR оставит ошибки платежей. Сохрани панель в дашборд.

Под капотом date_histogram разбивает время на корзины. fixed_interval: "1m" означает отрезки ровно по минуте; calendar_interval: "1d" календарные дни, которые при смене часового пояса не всегда длятся 24 часа. size: 0 отключает выдачу отдельных документов, но не агрегации.

Считаем основу дашборда

Учебная консоль не рисует Lens и не сохраняет панели. Она исполняет реальные запросы агрегаций: ты можешь увидеть числа, из которых строится график.

В errors_by_minute.buckets найди первый непустой интервал. Поменяй шаг на 5m: корзин станет меньше, короткий всплеск смешается с соседними минутами. Убери фильтр уровня: теперь график покажет и успешные платежи, и повторные попытки. Это уже другой вопрос, а не другая картинка того же ответа.

Среднее скрывает хвост

Из десяти запросов девять длились 100 мс, один 30 000 мс. Среднее равно 3 090 мс и не похоже ни на обычный запрос, ни на проблемный. p95 показывает медленный хвост. Elasticsearch обычно оценивает перцентили приближённо; учебный набор мал и движок считает их по отсортированным значениям. Не переноси точность этой модели на миллион записей.

Сохраняй единицы в названии панели: duration_ms в миллисекундах, event.duration_s у nginx в секундах. ECS event.duration использует наносекунды. Смешать эти поля без пересчёта значит получить бессмысленный график.

урок из курса

Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.