Поиск ошибок в логах с использованием Grafana Loki
Основной инструмент, который используется для диагностики и исправления ошибок ESB в Grafana – это интерфейс Explore. Он предназначен для интерактивного исследования данных без привязки к дашбордам. В отличие от дашбордов, которые показывают готовые метрики, Explore даёт гибкую среду для:
- написания и выполнения разовых запросов (ad hoc queries)
- быстрой визуализации метрик
- корреляции данных из разных источников
- отладки проблем в стеке мониторинга
- исследования аномалий без изменения дашбордов.
Ключевые возможности Explore
- Редактор запросов
- Для каждого источника данных есть свой редактор.
- Интерфейс адаптируется под выбранный источник (Loki, Tempo, и т. д.).
- Управление временным диапазоном
- Выбор абсолютного или относительного диапазона времени.
- Настройка пользовательских диапазонов.
- Разделенное представление Split View
- Позволяет сравнивать запросы рядом. Нажмите кнопку Split в правом верхнем углу.
- Запускайте разные запросы в каждой панели.
- Сравнивайте результаты по временным диапазонам или источникам данных.
- Пользуйтесь представлением для корреляции метрик с логами.
- Интеграция с источниками данных. Работает со всеми источниками Grafana. Особенно эффективен с:
- Loki — исследование логов
- Tempo — исследование трейсов
- Prometheus — исследование метрик
- Elastic — поиск документов и логов.
- История запросов
- Сохраняет историю выполненных запросов. Нажмите Query history в верхней панели. Найдите и выберите предыдущий запрос — он загрузится в редактор.
- Инспектор запросов Query inspector показывает, как запрос обрабатывается.
- Экспорт в дашборд.
- Готовый запрос можно экспортировать в дашборд для постоянного мониторинга.
- Ad-hoc фильтры
- Добавляйте фильтры для уточнения запросов без изменения текста запроса. Нажмите Add query под редактором запросов. Выберите ключ, оператор и значение.
Вход в Explore
Вы можете войти интерфейс Explore одним из двух способов: из левой вертикальной панели инструментов Grafana, нажав на Explore, или же из панели дашборда, выбрав в контекстном меню Explore.

Вход в Explore из панели инструментов

Вход в Explore из дашборда
Просмотр логов ESB потока
Диагностика ошибок выполнения конкретного потока осуществляется посредством запроса с ID потока в качестве параметра, по которому выводятся детальные логи выполнения потока с информацией об ошибках в процессе выполнения.
- В интерфейсе Explorer, из выпадающего списка источников данных выберите Loki.
Примечание: Grafana Loki — это система агрегации логов из нескольких источников.

Выбор Loki в качестве источника данных
- В списке Label Filters выберите "service" и в Select value установите среду исполнения ESB Core.

Создание фильтра
Далее следует из интерфейса ESB взять ID потока и вставить его в критерий поиска Line contains.
ID потока в ESB – это часть URL адреса в редакторе потоков, идущая после «designer/» при выбранном потоке и не выбранных в нем компонентов. Например в адресе https://server_name /designer/7748a1f0-2b61-47bc-bb3c-99033d9c8b11 ID потока – это 7748a1f0-2b61-47bc-bb3c-99033d9c8b11. Если выбрать определенный блок потока в редакторе, то ID блока будет дописан в URL адрес после ID потока и разделителя ?componentId=.

Настройки фильтра
- Задайте для Logfmt значение "Strict".
После того как фильтр настроен, слева от кнопки Run Query выберите из списка диапазон времени, когда были собраны логи, требующие анализа.
Нажмите Run Query и на экране под фильтром отобразится информация о том, когда поток выполнялся. Если при выполнении потока возникали ошибки, их можно отследить на панели с логом.
Информацию по конкретной строке лога можно отобразить, кликнув по ней мышью в логе. Справа от всего лога отобразится вторая панель с информацией об отдельной записи.

Лог потока
Вы можете настраивать запросы в соответствии с вашими задачами, задавая параметры и временные диапазоны запроса.
Пример поиска и анализа ошибки выполнения потока
Рассмотрим пример того, как можно найти в логе запись об ошибке, содержащую текст "ERROR".
-
Откройте интерфейс Explorer.
-
Из выпадающего списка источников данных выберите Loki.
-
В параметре Label filters задайте источник данных
service, оператор=и значениеCore. -
В поле Line contains введите текст
ERROR. -
Добавьте в запрос Logfmt
- Нажмите + Operations
- Выберите Formats
- Выберите Logfmt
- Задайте значение "Strict".
-
Добавьте в запрос Label filter expression
- Нажмите + Operations
- Выберите Label filters
- Выберите Label filter expression
- В поле Label введите
route_id - Operator
= - В интерфейсе ESB скопируйте из URL адреса ID потока и вставьте в значение критерия Value
-
Выберите временной диапазон из списка слева от кнопки Run query
-
Нажмите Run query.

Поиск записи об ошибке выполнения потока
Результатом поиска будут записи с уровнем логирования ERROR.
В разделе Source видно, что ошибка была выброшена на втором блоке вследствие некорректного синтаксиса SQL (не указано имя таблицы) и, следовательно, чтобы исключить эту ошибку, необходимо откорректировать SQL выражение на блоке.

Запись лога с ошибкой