Promtail¶
Ныне практически сдохший агент для сбора логов, разработанный как часть экосистемы Loki от Grafana. У него очень простой принцип работы (этим он мне и нравился) - собирает логи с файлов/журнал систем, добавляет метки и отправляет в Loki.
Но злая Grafana решила, что Grafana Alloy выйдет намного пизже, и сделала EOL до 2 марта 2026 года. Rest in peace.
А вообще нахер их, юзайте Vector.
Скачивание и установка¶
- Скачиваем бинарь с Github (последняя версия на момент проверки - 3.5.0, будем юзать её):
- Разархивируем:
- Выдаем права на выполнения:
- Перемещаем в /usr/local/bin:
Настройка systemd сервиса и запуск¶
- Создаем юзера специально под promtail
- Создаем каталог под конфиг, скачиваем конфиг, выдаем права:
-
Настраиваем конфиг:
server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://localhost:3100/loki/api/v1/push external_labels: host: my-hostname # вот сюда укажите лейбл, который будет указываться на всех логах с этого сервера scrape_configs: # cбор системных логов - job_name: system_logs_scrape static_configs: - labels: job: var_logs __path__: /var/log/*.log # для сбора логов с докера, если не нужно - уберите # если добавили, дайте доступ к докер sock # usermod -a -G docker promtail - job_name: scraper docker_sd_configs: - host: unix:///var/run/docker.sock refresh_interval: 5s relabel_configs: - source_labels: ["__meta_docker_container_name"] regex: "/(.*)" target_label: "container" - source_labels: ["__meta_docker_container_log_stream"] target_label: "logstream"
-
Создаем файл systemd сервиса и заполняем его (я использую vi):
- Так как мы запускаемся от юзера
promtail
, у нас скорее всего не будет прав на логи, поэтому добавляем в группу adm: - Включаем сервис и стартуем:
Траблшутинг¶
Error creating promtail - Permission Denied¶
Если в логах видим вот такую ошибку:
То скорее всего у вас нет прав на указанный файл или нет прав на директорию tmp.
Можно выдать права на файл: