В 19:40 UTC поддержка приносит первую жалобу на оплату. В Discover есть тысячи строк, но дежурному нужны три ответа: когда началось, сколько клиентов затронуто и какой сервис тормозит. Панель приборов автомобиля не показывает каждое сгорание топлива. Она собирает события в скорость, температуру и запас хода. С логами поступим так же.
График начинается с вопроса
Дашборд
собирает обзор инцидента. Для «Гонца» выберем панели:
| Вопрос | Панель | Поле |
|---|---|---|
| Когда началось? | ошибки по минутам | @timestamp |
| Где сломалось? | ошибки по сервисам | service.name |
| Насколько медленно? | p95 задержки | duration_ms |
| Какой запрос страдает? | топ путей nginx | url.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 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.