Devtoid

Grafana Loki

Описание установки Loki через Docker Compose, а так-же Promtail на примере CentOS

Grafana Loki — это система для сбора, хранения и анализа логов, c визуализацией через веб-интерфейс Grafana.

Promtail — агент для сборки журналов и отправки их в Loki.

Установка Loki через Docker Compose

Официальный мануал по установке здесь.

Пример docker-compose.yaml с volumes для сохранения данных при удалении контейнеров.

version: "3.3"

networks:
  loki:

volumes:
  loki-data:
  promtail-data:
  grafana-data:

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

  promtail:
    image: grafana/promtail:latest
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki
    volumes:
      - promtail-data:/var/promtail
    security_opt:
      - seccomp:unconfined
      
  grafana:
    environment:
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
      - GF_AUTH_ANONYMOUS_ENABLED=false
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      - GF_FEATURE_TOGGLES_ENABLE=alertingSimplifiedRouting,alertingQueryAndExpressionsStepMode
      - TZ=${SYSTEM_TIMEZONE:-Europe/Moscow}
    entrypoint:
      - sh
      - -euc
      - |
        mkdir -p /etc/grafana/provisioning/datasources
        cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
        apiVersion: 1
        datasources:
        - name: Loki
          type: loki
          access: proxy 
          orgId: 1
          url: http://loki:3100
          basicAuth: false
          isDefault: true
          version: 1
          editable: false
        EOF
        /run.sh
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    networks:
      - loki
    volumes:
      - grafana-data:/var/lib/grafana
      - grafana-data:/etc/grafana/provisioning/datasources

Кладем файл docker-compose.yaml в нужную директорию и запускаем командой

docker-compose up -d

Проверяем, что все контейнеры запустились

docker-compose ps

После этого Grafana доступна по адресу http://hostname:3000. Пароль поумолчанию admin/admin.

Loki соответственно http://hostname:3100. Можно посмотреть статус http://hostname:3100/ready, и метрики http://hostname:3100/metrics.

Loki запущен и работает, теперь нужно настроить отправку логов с другого сервера.

Установка Promtail (на примере Centos)

Добавляем пользователя, от которого будет работать Promtail

sudo useradd -r -M -s /bin/false promtail

Скачиваем и распаковываем Promtail

cd /usr/local/bin
sudo curl -O -L https://github.com/grafana/loki/releases/latest/download/promtail-linux-amd64.zip
sudo unzip promtail-linux-amd64.zip
sudo rm promtail-linux-amd64.zip

Делаем файл исполняемым и меняем владельца

sudo chmod a+x "promtail-linux-amd64"
sudo chown promtail:promtail promtail-linux-amd64

Скачиваем конфиг и редактируем под свои нужды

wget https://raw.githubusercontent.com/grafana/loki/refs/tags/v3.3.0/clients/cmd/promtail/promtail-local-config.yaml
sudo chown promtail:promtail promtail-local-config.yaml

В секции clients - url нужно указать адрес вашего сервера Loki. Описание структуры конфига в официальном мануале.

 

Регистрируем сервис

sudo nano /etc/systemd/system/promtail.service

[Unit]
Description=Promtail service
After=network.target

[Service]
Type=simple
User=promtail
ExecStart=/usr/local/bin/promtail-linux-amd64 -config.file /usr/local/bin/promtail-local-config.yaml

[Install]
WantedBy=multi-user.target

Добавляем сервис в автозагрузку и стартуем

sudo systemctl daemon-reload
sudo systemctl enable --now promtail
systemctl status promtail

У Promtail есть свой простенький веб-клиент, по умолчанию на порту 9080. Соответственно проверяем порт и открываем наружу

ss -nltup | grep 9080
sudo firewall-cmd --add-port=9080/tcp  --permanent
sudo firewall-cmd --reload

Чтобы дать возможность Promtail читать системные журналы, добавляем пользователя в группу systemd-journal и перезапускаем службу

sudo usermod -aG systemd-journal promtail
sudo systemctl restart promtail

Для доступа к директориям

sudo setfacl -m u:promtail:x /var
sudo setfacl -R -m u:promtail:rX /var/log
sudo setfacl -R -m d:u:promtail:rX /var.log
sudo -u promtail ls -l /var/log  # Проверка

Так-же для проверки работы Promtail можно использовать команду

promtail-linux-amd64 --dry-run --inspect --config.file=promtail-local-config.yaml

--dry-run - без отправки в Loki

--inspect - отладочная информация в консоль

После запуска Promtail, если все сделано правильно, логи должны появиться в Grafana. В разделе Explore должны быть доступны джобы указанные в promtail-local-config.yaml

 

Источники:

  • https://itdraft.ru/2021/02/26/ustanavlivaem-promtail-v-centos-debian/
  • https://iu5edu.ru/wiki/devops/docs/labs/observability/loki/
  • https://habr.com/ru/articles/772702/
  • https://habr.com/ru/companies/badoo/articles/507718/
  • https://temofeev.ru/info/articles/delaem-dashbord-dlya-logov-ispolzuya-promtail-loki-grafana/