Grafana Loki: Легкий старт логування та моніторингу за 10 хвилин | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Grafana Loki для логування: З чого почати?

Grafana Loki для логування: З чого почати?

Легкий старт з логування за 10 хвилин

У світі розробки без логування — нікуди. Саме воно допомагає ловити баги, розуміти, що відбувається всередині системи, і вчасно реагувати на збої. Але класичні рішення на кшталт ELK (Elasticsearch, Logstash, Kibana) бувають важкими у налаштуванні, масштабуванні та вимагають багато ресурсів.

Тому дедалі більше DevOps’ів і розробників переходять на Grafana Loki — легку, гнучку й економну альтернативу агрегації логів. Це продукт моніторингу від Grafana Labs, який працює за схожим принципом, як Prometheus, тільки замість метрик — із логами.

Фішка Loki в тому, що вона не індексує повністю весь текст логів. Замість цього зберігає логи разом із метаданими (labels), що суттєво зменшує навантаження на систему і спрощує масштабування. Тож дані зберігаються економніше, а шукати потрібне — досі легко й швидко.

Що потрібно для старту?

Щоб почати працювати з Grafana Loki, не треба будувати складну інфраструктуру. Для базового запуску системи логування знадобиться мінімальний набір інструментів. 

1. Docker або Kubernetes

Найшвидший спосіб розгорнути Grafana Loki — за допомогою Docker-контейнерів. Вони дають змогу запускати Loki, Promtail і Grafana окремо, у контрольованому середовищі. 

У продакшн-середовищах найчастіше працюють із Kubernetes — і не просто так. Його головна перевага — підтримка Helm Charts. Це своєрідні «пакети встановлення» для Kubernetes: вони містять усі необхідні налаштування, опис і залежності застосунку. Завдяки Helm розгортати й оновлювати застосунки стає набагато простіше — усе запаковано, автоматизовано й готове до запуску всього в кілька команд.

2. Grafana

Grafana — це вебінтерфейс, у якому можна візуалізувати логи, створювати запити, додавати дашборди й будувати алерти. Loki інтегрується з Grafana як джерело даних, тож саме через нього ви переглядатимете й аналізуватимете логи.

3. Promtail або інший лог-агент

Promtail — офіційний агент збору логів для Loki. Він читає логи з вашої файлової системи (наприклад, з /var/log), додає до них метадані й передає їх у Loki. Якщо вам потрібно збирати логи з контейнерів, системних служб або застосунків — Promtail стане найпростішим рішенням.

Розгортання Grafana Loki

Для локального тестування найзручніше буде розгорнути Grafana Loki за допомогою Docker. Цей процес дуже прямолінійний і доволі простий як для Windows, так і для Linux. 

Розгортання на базі Linux

1. Створіть папку loki та зробіть її основною робочою:

mkdir loki
cd loki

2. Далі потрібно завантажити loki-local-config.yaml і promtail-docker-config.yaml. Для цього скопіюйте і вставте такі команди в папку loki:

wget https://raw.githubusercontent.com/grafana/loki/v3.4.1/cmd/loki/loki-local-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/v3.4.1/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

3. Скопіюйте і вставте вказані команди в командний рядок, щоб запустити контейнери Docker за допомогою файлів конфігурації, які ви завантажили в попередньому кроці:

docker run --name loki -d -v $(pwd):/mnt/config -p 3100:3100 grafana/loki:3.4.1 -config.file=/mnt/config/loki-config.yaml
docker run --name promtail -d -v $(pwd):/mnt/config -v /var/log:/var/log --link loki grafana/promtail:3.4.1 -config.file=/mnt/config/promtail-config.yaml

4. Далі потрібно пересвідчитися, що контейнери працюють:

docker container ls

У результаті ви маєте побачити щось подібне:

5. Все, що залишилося, — пересвідчитися, що Loki активний і працює. 

Розгортання на базі Windows

1. Скопіюйте і вставте вказані команди у командний рядок, щоб завантажити loki-local-config.yaml та promtail-docker-config.yaml до вашого каталогу loki. Зверніть увагу, що вам потрібно буде замінити <local-path> у командах на свій локальний шлях.

cd "<local-path>"
wget https://raw.githubusercontent.com/grafana/loki/v3.4.1/cmd/loki/loki-local-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/v3.4.1/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

2. Скопіюйте і вставте зазначені команди в командний рядок, щоб запустити контейнери Docker, використовуючи файли конфігурації, які ви завантажили на попередньому кроці. 

docker run --name loki -v <local-path>:/mnt/config -p 3100:3100 grafana/loki:3.4.1 --config.file=/mnt/config/loki-config.yaml
docker run -v <local-path>:/mnt/config -v /var/log:/var/log --link loki grafana/promtail:3.4.1 --config.file=/mnt/config/promtail-config.yaml

3. Перевірте, чи Loki активний та працює. 

Збір логів за допомогою Promtail

Promtail — це офіційний агент збору логів для Grafana Loki. Він працює схожим чином до Filebeat для Elasticsearch: читає лог-файли з файлової системи, додає до них метадані (labels) і надсилає їх у Loki через HTTP API.

Promtail запускається на тій самій машині, де розташовані лог-файли. Він:

  • відстежує зміни у файлах логів (наприклад, /var/log/syslog або *.log);
  • додає до кожного запису мітки (наприклад, job, host, filename);
  • надсилає логи в Loki для подальшого збереження й обробки.

Promtail не обробляє логи глибоко — він передає їх у «сирому» вигляді, що робить його легким і швидким рішенням.

Як налаштувати Promtail

Для роботи Promtail потрібен YAML-файл конфігурації, в якому вказують:

  • які лог-файли збирати;
  • які мітки до них додавати;
  • куди саме надсилати логи (URL Loki).

Далі базова конфігурація доволі зрозуміла:

server:
  http_listen_port: 9080
  grpc_listen_port: 0
positions:
  filename: /tmp/positions.yaml  #Зберігає, на якій позиції Promtail зупинився у файлі
clients:
  - url: http://loki:3100/loki/api/v1/push  #Адреса Loki (в Docker — назва сервісу)
scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log  #Усі .log-файли в /var/log

Promtail можна запустити як окремий Docker-контейнер (як ми зробили в попередньому розділі) або як двійковий файл напряму на сервері. Його легко масштабувати, налаштовувати під різні типи логів (зокрема контейнерні) та об’єднувати з іншими агентами.

Візуалізація логів у Grafana

Після того як Promtail почав надсилати логи до Loki, їх можна переглянути в зручному інтерфейсі — Grafana Explore. Для цього потрібно лише кілька кроків.

  • Увійдіть до Grafana (http://localhost:3000).
  • Перейдіть до Configuration → Data Sources.
  • Натисніть кнопку Add data source.
  • Оберіть Loki зі списку.
  • У полі URL введіть http://loki:3100.
  • Натисніть Save & Test, щоб перевірити з’єднання.

Щоб знайти логи в Explore, потрібно перейти в меню сервісу та обрати джерело даних Loki. Також виберіть мітку (наприклад, {job="varlogs"}) та натисніть Run Query. У результаті ви побачите останні логи з файлів, які збирає Promtail.

Джерело: Grafana

Хоча Grafana традиційно використовують для графіків і метрик, ви також можете:

  • створювати панелі логів, які показують останні записи з фільтрами;
  • комбінувати логи з метриками (наприклад, CPU + лог помилки);
  • додавати алерти на основі кількості логів за певний період.

Завдяки інтеграції з Grafana ви отримуєте гнучкий інтерфейс для пошуку, аналізу й моніторингу логів у реальному часі. Далі залишається лише оптимізація логування та створення алертів.

Поради для ефективного логування

Щоб застосовувати Grafana Loki максимально ефективно, важливо правильно організувати логування ще на етапі налаштування. Існує кілька загальних порад, які допомагають зменшити навантаження, полегшити пошук логів і покращити загальну структуру лог-системи.

Розумний підхід до використання міток (labels)

Loki працює на основі labels — це ключі, за якими агрегуються та індексуються логи. Наприклад:

labels:
  job: nginx
  host: server-1
  filename: /var/log/nginx/access.log

Під час роботи з ними важливо не використовувати динамічні або унікальні значення (наприклад, request_id, user_id) як мітки — це може сильно вплинути на продуктивність.

Натомість залишайте змінні частини в самому тексті логів, а для міток застосовуйте стабільні характеристики: тип сервісу, ім’я файлу, середовище (env=prod, env=dev).

Мінімізація обсягу логів

Навіть якщо Loki не індексує вміст логів, велика кількість даних уповільнює пошук і збільшує витрати на зберігання. Що можна зробити:

  • Не логувати зайве. Увімкніть лише потрібні рівні (info, error), а не debug у продакшн-середовищі.
  • Використовуйте ротацію логів. Створюйте обмеження на розмір або час життя файлів.
  • Стиснення логів. Застосовуйте Gzip або інші методи, якщо зберігаєте логи локально довше.

Налаштування алертів на основі логів

Loki підтримує створення alert rule через Grafana Alerting. Це дає змогу:

  • сповіщати, якщо певний тип помилки з’явився занадто часто;
  • виявляти незвичну активність (наприклад, багато 5xx-відповідей);
  • реагувати на збої у роботі мікросервісів.

Інтеграція з іншими системами

Loki добре інтегрується з:

  • Prometheus — для поєднання метрик і логів;
  • Alertmanager/Slack/Email-сервісами — для сповіщень;
  • Tempo — для трасування логів.

Це дає змогу створити єдину платформу для нагляду за всіма процесами без зайвої складності. Зрештою ефективне логування — це не лише збирання даних, а й їх організація. 

Ще статті
Порівнюємо швидкість, якість і відповідальність за результат