Grafana Loki — это система сбора и просмотра логов, созданная командой Grafana Labs. Она используется совместно с Grafana для удобной визуализации логов.
В отличие от ELK-стека, Loki не индексирует содержимое логов, а хранит их вместе с метаданными (например, имя пода или namespace). Это делает систему более быстрой и менее требовательной к ресурсам.
Чаще всего Loki используется в связке с Promtail — агентом, который собирает логи с нод и отправляет их в Loki. Затем вы можете просматривать эти логи прямо в Grafana с помощью запросов на языке LogQL.
Установка
Для установки перейдите в раздел «Дополнения» в панели управления кластера.

После выбора дополнения «Grafana Loki» в панели управления вы увидите YAML-конфигурацию с параметрами по умолчанию.

Кратко опишем, за что отвечает каждый блок.
Запускает тестовый под с утилитой bats, которая проверяет, что Loki доступен и принимает логи. Используется только для автоматической валидации после установки.
Основной компонент — Loki, который принимает и хранит логи.
Здесь можно настроить:
-
url— внутренний адрес сервиса Loki (используется другими компонентами). -
readinessProbeиlivenessProbe— проверки состояния сервиса. -
datasource— настройки подключения к Loki как к источнику данных в Grafana.
Если вы используете Grafana, datasource.uid может быть задан для явного подключения источника.
Promtail — агент, который собирает логи с узлов кластера (из /var/log/containers/*.log) и отправляет их в Loki.
Используется по умолчанию. Если вы планируете использовать альтернативные сборщики логов, например, Filebeat или Fluent Bit — можно отключить.
Альтернативные агенты для сбора логов. Их можно включить, если Promtail не подходит для вашего случая (например, вы уже используете Fluent Operator).
По умолчанию они отключены.
Отвечает за установку Grafana. Если вы хотите просматривать логи через веб-интерфейс — укажите значение enabled: true.
Если в кластере уже установлена Grafana, можно оставить выключенным и подключить Loki вручную как источник данных.
Позволяет подключить Prometheus как источник метрик в Grafana. Сам Prometheus при этом не устанавливается — этот блок лишь добавляет его как datasource.
Можно включить, если у вас уже настроен Prometheus в кластере и вы хотите использовать его в Grafana вместе с Loki.
Настройки прокси, которые могут быть нужны при подключении к внешним сервисам.
Пример использования
В качестве примера рассмотрим работу дополнения в связке с Promtail. В роли источника логов запустим под, который будет писать сообщения в стандартный вывод. Kubelet сохраняет эти сообщения в файл в директории /var/log/containers/. Promtail, установленный как DaemonSet, считывает эти файлы и отправляет содержимое в Loki. Loki сохраняет логи, а Grafana позволяет их просматривать через веб-интерфейс.
Установите дополнение в панели управления. В окне конфигурации оставьте все параметры по умолчанию, изменив только:
на:
Это позволит развернуть Grafana, через которую потом будем смотреть логи.
Также установите дополнение Nginx Ingress — оно нужно для доступа к интерфейсу Grafana по доменному имени.
Проверьте, что все поды запущены:
Вы должны увидеть примерно следующее:
Проверьте, что ingress-контроллер работает:
Также проверьте сервисы Grafana Loki:
Пример вывода:
После этого настроим nginx ingress для работы с Grafana по домену. Для этого создадим балансировщик. Создайте манифест loadbalancer.yaml:
Примените манифест:
Создайте правило Ingress в файле grafana-ingress.yaml:
Измените host: grafana.example.com, указав домен, по которому вы хотите, чтобы открывался веб-интерфейс Grafana. В качестве A-записи для этого домена укажите IP созданного балансировщика.
Примените манифест:
Теперь создадим под logger, который будет записывать сообщения, эмулируя логи:
Проверьте, что под запустился:
У пода logger должен быть статус Running.
Теперь обратимся к веб-интерфейсу графаны. Откройте домен, указанный ранее в Ingress. При переходе вас встретит окно авторизации Grafana.
В качестве логина укажите:
Пароль для авторизации хранится в секрете. Получите его командой:
В интерфейсе Grafana перейдите в раздел «Explore».

Выберите источник данных «Loki». В поле «Label filters» укажите pod=logger и запустите запрос, нажав на кнопку «Run query»

После этого пролистайте страницу вниз. Вы увидите записи в логе «hello from logger»
