Grafana Loki#

Grafana Loki (Loki) - это горизонтально масштабируемая, высокодоступная, многопользовательская система агрегирования журналов. Инструмент спроектирован с учетом экономии использования ресурсов и простоты эксплуатации.

В процессе работы индексируется не содержимое журналов, а набор меток для каждого потока журналов.

По сравнению с другими системами агрегирования журналов Loki:

  • не выполняет полнотекстовую индексацию журналов. Благодаря хранению сжатых неструктурированных журналов и индексированию только метаданных Loki проще и дешевле в эксплуатации;

  • использует индексы и группы, которые записывают потоки журналов с помощью меток, использующихся в Prometheus. Это позволяет плавно переключаться между метриками и журналами;

  • подходит для хранения журналов DropApp Pod. Метаданные, такие как метки модулей, автоматически очищаются и индексируются;

  • имеет встроенную поддержку в Grafana.

Стек журналирования на основе Loki состоит из трех компонентов:

  • promtail — агент, ответственный за сбор журналов и отправку их Loki;

  • loki — основной сервер, отвечающий за хранение логов и обработку запросов;

  • Grafana - инструмент для запроса и отображения журналов.

Loki похож на Prometheus, но в отношении журналов применен многомерный подход к индексированию на основе меток и представляет собой простую в использовании систему без зависимостей. Loki отличается от Prometheus тем, что фокусируется на журналах, а не на метриках, и доставляет журналы посредством push, а не pull.

Особенности Loki:

  • масштабируемость. Loki спроектирован с учетом масштабируемости и может масштабироваться от простого запуска на Raspberry Pi до потребления петабайтов в день. В наиболее распространенном развертывании, «простом масштабируемом режиме», Loki разделяет запросы на отдельные пути чтения и записи для независимого масштабирования, что приводит к гибким крупномасштабным установкам, которые могут быстро адаптироваться к рабочей нагрузке в любой момент времени. При необходимости каждый из компонентов Loki также можно запускать как микросервисы, предназначенные для работы в DropApp;

  • мультитенантность Loki позволяет нескольким арендаторам совместно использовать один экземпляр Loki. При мультитенантности данные и запросы каждого арендатора полностью изолированы. Мультитенантность настраивается ../operations/multi-tenancy путем назначения идентификатора арендатора в агенте;

  • сторонние интеграции. Некоторые сторонние агенты (клиенты) поддерживают Loki через плагины. Это позволяет сохранить существующие настройки наблюдения, а также отправлять журналы в Loki;

  • эффективное хранилище. Loki хранит данные журналов в сильно сжатых фрагментах. Аналогично индекс Loki, поскольку он индексирует только набор меток, значительно меньше, чем другие инструменты агрегирования журналов. Сжатые фрагменты, меньший индекс и использование недорогого объектного хранилища делают эксплуатацию Loki менее затратной;

  • LogQL, язык запросов Loki;

  • оповещение. Loki включает в себя компонент под названием «линейка», который может постоянно оценивать запросы по журналам и выполнять действия на основе результата. Это позволяет отслеживать журналы на предмет аномалий или событий. Loki интегрируется с Prometheus Alertmanager или менеджером оповещений в Grafana;

  • интеграция с Grafana. Loki интегрируется с Grafana, Mimir и Tempo, обеспечивая полный стек наблюдаемости и плавную корреляцию между журналами, метриками и трассировками.

Отправка данных журнала в Loki#

Для отправки данных журнала в Loki доступно несколько различных клиентов. Все клиенты могут использоваться одновременно для нескольких вариантов использования.

Клиенты Grafana#

Следующие клиенты созданы для отправки журналов в Loki:

  • Grafana Agent - собирает телеметрические данные для метрик, журналов, трассировок и непрерывных профилей и полностью совместим с экосистемами с открытым исходным кодом Prometheus, OpenTelemetry и Grafana;

  • Promtail - является предпочтительным клиентом при запуске DropApp, поскольку можно настроить его на автоматическую очистку журналов из pods, запущенных на том же node, на котором запущен Promtail. Совместная работа Prometheus и Promtail в DropApp обеспечивает эффективную отладку: если Prometheus и Promtail используют одинаковые метки, можно использовать такие инструменты, как Grafana, для переключения между метриками и журналами на основе набора меток;

  • Promtail также является предпочтительным клиентом на bare-metal, поскольку его можно настроить для отслеживания журналов из всех файлов, которым задан путь к хосту. Это самый простой способ отправлять логи в Loki из обычных текстовых файлов;

  • Promtail хорошо работает для извлечения показателей из логов, например, подсчета количество появлений определенного сообщения;

  • Расширение xk6-loki позволяет выполнять нагрузочное тестирование Loki.

OpenTelemetry Collector#

Loki поддерживает загрузку журналов OpenTelemetry по протоколу HTTP.