Категории

Сбор и анализ логов с Grafana Loki: простой старт без лишнего

2025-11-01 11:40:33 | Статья из категории: Linux

Установка и настройкап Grafana Loki для сбора и анализа логов linux

Привет! Сегодня поговорим о том, как собирать логи с серверов и приложений, не утонув в гигабайтах текста и не сжигая деньги на индексацию всего подряд. Рассмотрим современное open-source решение — Grafana Loki.

Зачем вообще собирать логи?

Логи — это "чёрный ящик" твоей системы. Без них:

Раньше все ставили ELK (Elasticsearch + Logstash + Kibana). Но Elasticsearch жрёт память, индексирует всё подряд и быстро становится дорогим. Loki же — лёгкий, дешёвый и отлично дружит с Grafana.

Что такое Grafana Loki и чем он хорош?

Loki — это система сбора логов от создателей Prometheus. Основные идеи:

Это значит: меньше ресурсов, проще масштабировать, дешевле хранить. Идеально для хобби-проектов, малого бизнеса и даже продакшена.

Как Loki помогает искать проблемы?

Loki сам по себе не "ищет" проблемы — он хранит и отдаёт логи по запросу. Но ты можешь:

  1. Вручную искать по ключевым словам: error, timeout, 500 и т.д.
  2. Создавать дашборды в Grafana с графиками ошибок во времени.
  3. Настраивать алерты через Grafana: если за 5 минут появилось больше 10 ошибок — приходит уведомление в Telegram или email.

Таким образом, Loki + Grafana = мощный, но простой инструмент для мониторинга состояния системы.

Установка Loki на Linux (через Docker)

Предположим, у тебя уже стоит Docker и Docker Compose. Если нет — поставь их, это быстро.

Создай папку, например /opt/loki, и внутри файл docker-compose.yml:

version: '3'

services:
  loki:
    image: grafana/loki:latest
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml

  promtail:
    image: grafana/promtail:latest
    volumes:
      - /var/log:/var/log:ro
      - /opt/loki/promtail-config.yml:/etc/promtail/config.yml:ro
    command: -config.file=/etc/promtail/config.yml

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

volumes:
  grafana_

Теперь создай файл конфигурации для Promtail — /opt/loki/promtail-config.yml:

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log

Запускай:

cd /opt/loki
docker-compose up -d

Через минуту:

Установка Grafana Loki «по-старинке» — без Docker

Если ты, как и я, не хочешь тащить Docker ради одного сервиса — отлично! Loki прекрасно работает как обычное приложение под systemd. Разберём установку на Ubuntu/Debian (но подойдёт и для CentOS/Rocky с минимальными правками).

Шаг 1. Скачиваем бинарники Loki и Promtail

Заходим на официальную страницу релизов: github.com/grafana/loki/releases. Берём последние версии для Linux AMD64.

# Устанавливаем зависимости
sudo apt update
sudo apt install -y wget unzip

# Скачиваем Loki
wget https://github.com/grafana/loki/releases/latest/download/loki-linux-amd64.zip
unzip loki-linux-amd64.zip
sudo mv loki-linux-amd64 /usr/local/bin/loki
sudo chmod +x /usr/local/bin/loki

# Скачиваем Promtail (агент для отправки логов)
wget https://github.com/grafana/loki/releases/latest/download/promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip
sudo mv promtail-linux-amd64 /usr/local/bin/promtail
sudo chmod +x /usr/local/bin/promtail

Шаг 2. Создаём пользователей и директории

Для безопасности запускаем сервисы от отдельных системных пользователей:

sudo useradd --system --no-create-home --shell /bin/false loki
sudo useradd --system --no-create-home --shell /bin/false promtail

sudo mkdir -p /var/lib/loki /etc/loki
sudo chown -R loki:loki /var/lib/loki /etc/loki

Шаг 3. Конфигурация Loki

Создаём файл /etc/loki/loki-config.yaml:

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /var/lib/loki
  storage:
    filesystem:
      directory: /var/lib/loki/chunks
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-01-01
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h

Шаг 4. Запуск Loki через systemd

Создаём юнит /etc/systemd/system/loki.service:

[Unit]
Description=Loki log aggregation server
After=network.target

[Service]
Type=notify
User=loki
Group=loki
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/loki-config.yaml
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Запускаем:

sudo systemctl daemon-reload
sudo systemctl start loki
sudo systemctl enable loki
sudo systemctl status loki  # проверяем, что всё зелёное

Шаг 5. Настраиваем Promtail

Создаём конфиг /etc/promtail/promtail-config.yaml:

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/promtail-position.yaml

clients:
  - url: http://127.0.0.1:3100/loki/api/v1/push

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log

  - job_name: nginx
    static_configs:
      - targets:
          - localhost
        labels:
          job: nginx
          __path__: /var/log/nginx/*.log

Создаём systemd-юнит для Promtail — /etc/systemd/system/promtail.service:

[Unit]
Description=Promtail log shipper for Loki
After=network.target

[Service]
Type=notify
User=promtail
Group=promtail
ExecStart=/usr/local/bin/promtail -config.file=/etc/promtail/promtail-config.yaml
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Запускаем:

sudo systemctl daemon-reload
sudo systemctl start promtail
sudo systemctl enable promtail

Шаг 6. Устанавливаем Grafana (если ещё не стоит)

Grafana можно поставить из официального репозитория:

sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana

sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Теперь Grafana доступна по адресу: http://ваш_сервер:3000 (логин/пароль по умолчанию — admin/admin).

Шаг 7. Подключаем Loki в Grafana

  1. В интерфейсе Grafana: ⚙️ Configuration → Data Sources → Add data source.
  2. Выбираем Loki.
  3. В поле URL пишем: http://127.0.0.1:3100
  4. Нажимаем Save & Test — должно быть зелёное "Data source is working".

Готово! Теперь заходи в Explore, выбирай Loki и пиши запросы вроде:

{job="varlogs"} |= "error"

— и смотри, что ломается в реальном времени.

Пара советов

Вот и всё. Никаких контейнеров, никакой магии — только бинарники, конфиги и systemd. Как в старые добрые времена!

Ещё примеры LogQL:

Алерты: как Loki помогает не пропустить проблему?

В Grafana можно создать правило:

  1. Открой Alerting → Alert rules → New alert rule.
  2. Выбери Loki как источник.
  3. Напиши запрос: count_over_time({job="varlogs"} |= "Segmentation fault"[1m]) > 0
  4. Укажи, куда слать уведомление (Telegram, email, webhook и т.д.).

Теперь, если твоя программа упадёт с segfault — ты узнаешь об этом сразу.

Заключение

Grafana Loki — это современный, экономичный и простой способ собирать и анализировать логи. Он не заменит тебе мозги, но даст глаза. Особенно удобен, если ты уже используешь Prometheus и Grafana для метрик.

Попробуй развернуть его у себя — даже на старом Raspberry Pi. А если захочешь масштабировать на десятки серверов, Loki легко перейдёт в кластерный режим с S3 или MinIO для хранения.

Пишите в комменты, если хотите статью про Loki + systemd-журналы или как отправлять логи с ESP32 через HTTP (да, такое тоже можно!).

Удачи в автоматизации!

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA