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.