1. Описание поиска логов на базе Grafana и Loki Logs
Loki Grafana — это система сбора и хранения логов, разработанная компанией Grafana Labs. Она оптимизирована для интеграции с Grafana и предназначена для эффективного поиска, просмотра и анализа логов. В отличие от традиционных систем, Loki индексирует только метаданные логов, а не их содержимое, что делает его масштабируемым и экономит ресурсы.
В Cloudlink система Loki интегрирована с логами всех микросервисов а так же логами Kubernetes. В этой статье описан способ поиска и сбора логов микросервисов в системе Loki
2. Просмотр логов
В инфраструктуре Cloudlink в каждой среде развернута своя Grafana. Чтобы проверить логи в определенной среде, используйте следующий формат запроса:
https://grafana.{DOMAIN_INT}
2.1. Просмотр логов на Loki Dashboard
-
Войдите в веб-интерфейс Grafana под своей учётной записью.
-
Нажмите на логотип Grafana для перехода в меню и выберите Dashboards.
-
В списке дашбордов нажмите на Loki Logs. Для удобства поиска Loki Logs воспользуйтесь поисковой строкой.
Откроется панель логов. Отфильтруйте логи по Namespace, Service, и Search.
3. Сценарии логирования
3.1. Сценарий 1: Поиск ошибок с кодом 500 или Error в Loki Grafana
В этом сценарии описан способ, как определить сервис, в котором произошёл сбой, в логах Loki Grafana и получить стек-трейс.
Шаги:
-
Перейдите в Grafana → Menu и выберите DrillDown → Logs.
-
В правой части экрана выберите:
-
Data source — Loki.
-
Time range — выберите время, за которое нужно просмотреть логи.
-
-
В левой части экрана выберите сервис или сервисы для поиска логов и критерий поиска:
-
Labels — выберите
service_name =и выберите название вашего сервиса. -
Fields — выберите
log-level = ERRORилиlog-level = 500
-
В результате отобразятся все ошибки, которые были выявлены в работе сервиса за указанное время.
Для поиска по специфическим ошибкам:
-
Раскройте запись лога и скопируйте нужную строку или слово.
-
Вставьте эту информацию в строку Search in log lines.
Так во всех логах будет найдена искомая строка или слово.
3.2. Сценарий 2: Поиск информации по заказу на портале в логах микросервисов
В этом сценарии описан способ просмотра информации по процессу развертывания заказа в логах микросервисов c помощью x-request-id заказа. Этот сценарий подходит для случаев, когда есть проблема c созданием заказа на портале и появилась ошибка.
-
Начните создание заказа на портале Cloudlink: заполните необходимые поля и перед нажатием кнопки "Заказать" откройте панель разработчика — клавиша F12 или правая кнопка мыши → Исследовать элемент:
-
В панели разработчика перейдите на вкладку Network.
-
Не закрывая панель разработчика, нажмите в вашем заказе кнопку Заказать.
-
В панели разработчика в колонке Name нажмите на появившуюся строку orders.
-
В колонке напротив — в Headers пролистайте до идентификатора X-Request-ID и скопируйте его значение.
X-Request-ID — уникальный идентификатор запроса, который используется для трассировки всех операций, связанных с этим запросом. Он необходим для поиска логов в Grafana Loki по заказу, находящемуся в процессе разворачивания на портале.
-
-
Откройте Grafana и перейдите в Dashboards → Loki Logs.
-
Укажите следующие параметры фильтрации:
-
Namespace — выберите сервис. Например, "portal".
-
Service — укажите "all".
-
Value — введите скопированное ранее значение X-Request-ID.
-
-
Нажмите Search.
В логах по этому запросу доступна следующая информация:
-
зарезервированные GPU;
-
выделенные ресурсы;
-
отправленные сообщения в оркестратор;
-
отклики других сервисов и прочее.
3.3. Сценарий 3: Просмотр логов сервиса
В этом сценарии описан пример поиска логов конкретного сервиса в Loki Grafana на примере сервиса State Service.
Шаги:
-
Перейдите в Grafana → Menu и выберите DrillDown → Logs.
-
В левой части экрана введите в поле Service название сервиса и нажмите на него. После этого откроется дашборд и логи этого сервиса за выбранный период.
Для просмотра подробного отчета, раскройте логи.
3.4. Сценарий 4: Просмотр логов событий в Kubernetes
В Grafana доступен дашборд Kubernetes Event Exporter. Он предназначен для визуализации и анализа событий, поступающих из кластера Kubernetes. На панели отображаются ключевые метрики и события (создание и удаление подов, ошибки, изменения статусов ресурсов), что помогает оперативно отслеживать состояние инфраструктуры и быстро выявлять проблемы в работе кластера. Подробности просмотра логов в этом дашборде описаны ниже.
Шаги:
-
Перейдите в Grafana → Menu и выберите дашборд Dashboards → Infrastructure → Kubernetes Event Exporter.
-
В правой части экрана выберите:
-
Time range — выберите время, за которое нужно просмотреть логи.
-
datasourse — по умолчанию источником данных является Loki.
-
namespace — выберите сервис. Например, "portal".
-
Value — введите значение для поиска. Например, "Warning" — позволит найти все события с этим типом состояния.
-
-
Нажмите Search.
В дашборде Kubernetes Events - Details — просмотрите события микросервисов в Kubernetes. Детали события отображены в колонке Message.
Если нужно увидеть состояние конкретного объекта, то выберите этот объект в колонке Involved Object. Отобразятся только события этого объекта.
Также статистика по событиям Kubernetes отображается на графиках Kubernetes Events - Distribution.
3.5. Сценарий 5. Анализ времени отклика микросервисов в Loki Grafana
В этом сценарии рассматривается способ выявления в логах Loki Grafana снижения производительности микросервисов.
Шаги:
-
Перейдите в Grafana → Menu и выберите Dashboards → Loki Logs.
-
В правой части экрана выберите:
-
Time range — выберите время, за которое нужно просмотреть логи.
-
-
В левой части экрана выберите сервис или сервисы для поиска логов и критерий поиска:
-
Namespace — выберите сервис. Например, "portal".
-
Service — выберите микросервис, в котором нужно просмотреть логи. Например, "account-manager".
-
Value — введите значение для поиска. В этом примере поиск происходит по слову "Connection", чтобы найти все логи, связанные с временем отклика микросервиса.
-
-
Нажмите Search.
4. Архитектура логирования
Для записи логов в Loki Grafana используется агент сбора логов — Vector со следующими компонентами:
-
vector — сборщик логов на сервере.
-
vector-aggregator — агрегатор логов, полученных от vector.
Запись логов:
-
Vector (на каждом узле):
-
Собирает логи из файлов и логи Kubernetes.
-
Добавляет метки (labels), которые используются в запросах.
-
Отправляет логи на vector-aggregator.
-
-
Vector-aggregator
-
Получает логи от всех серверов Vector.
-
Отправляет логи через HTTP-запрос в Gateway.
-
-
Gateway (reverse proxy)
-
Получает запрос и направляет его внутрь системы Loki по запросу write.
-
-
Loki (write)
-
Принимает поток логов.
-
Отдаёт их в объектное хранилище MinIO.
-
-
MinIO
-
Сохраняет логи.
-
Чтение логов:
-
Grafana
-
В интерфейсе Grafana пользователь делает запрос данных к Loki.
-
Запрос уходит в gateway.
-
-
Gateway
-
Получает LogQL-запрос от Grafana.
-
Перенаправляет его в компонент Loki — read.
-
-
Loki (read)
-
Анализирует логи.
-
Ищет их в MinIO.
-
-
MinIO
-
Передает логи по запросу из хранилища в Grafana.
-
