Dans cet exemple les composants Loki, Promtail et Grafana sont déployés à l’aide de Docker Compose. Voici la définition du fichier :

docker-compose.yaml ouvrir

version: "3.8"

networks:
  loki:

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

  promtail:
    image: grafana/promtail:2.0.0
    volumes:
      - /var/log:/var/log
      - /tmp/log:/tmp/log
    configs:
      - source: promtailconfig
        target: /etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki

  grafana:
    image: grafana/grafana:8.1.1
    ports:
      - "3000:3000"
    networks:
      - loki

configs:
  promtailconfig:
    file: ./promtail_config.yml

Promtail est configuré de manière à agréger les logs présents dans /var/log/*log et dans le fichier /tmp/log/date.log. Les logs des deux sources seront présentés comme provenant de deux machines différentes :

promtail_config.yml ouvrir

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
      host: my-host-1
      env: dev
      __path__: /var/log/*log

- job_name: tmp
  static_configs:
  - targets:
      - localhost
    labels:
      job: tmplogs
      host: my-host-2
      env: dev
      __path__: /tmp/log/date.log