Centraliser vos logs avec Grafana Loki, Promtail et Docker

Publié le 20/05/2025

Monitoring
Docker
Logs

Une stack de journalisation centralisée est essentielle pour diagnostiquer les problèmes, assurer la traçabilité et améliorer l’observabilité de vos systèmes. Dans ce guide, nous allons déployer une stack complète composée de Grafana Loki (stockage des logs), Promtail (collecteur) et Grafana (visualisation), le tout en Docker.

Pourquoi utiliser Grafana Loki ?

Grafana Loki est une alternative légère et performante à la stack ELK (Elasticsearch, Logstash, Kibana) :

  • 📦 Intégration native avec Grafana
  • ⚡ Stockage optimisé pour la performance
  • 📈 Requêtes similaires à Prometheus (LogQL)
  • 🔧 Déploiement simple via Docker ou Kubernetes

Prérequis

  • Serveur Debian 11/12
  • Docker + Docker Compose
  • Accès sudo
  • Quelques services générant des logs

Structure du projet

mkdir -p ~/loki-stack && cd ~/loki-stack

Fichier docker-compose.yml

version: '3.8'

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

  promtail:
    image: grafana/promtail:2.9.0
    container_name: promtail
    volumes:
      - /var/log:/var/log
      - ./promtail-config.yaml:/etc/promtail/config.yaml
    command: -config.file=/etc/promtail/config.yaml

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

volumes:
  grafana-storage:

Configuration de Loki

Créez un fichier loki-config.yaml :

auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
  chunk_idle_period: 5m
  chunk_retain_period: 30s

schema_config:
  configs:
    - from: 2022-01-01
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb_shipper:
    active_index_directory: /tmp/loki/index
    cache_location: /tmp/loki/boltdb-cache
    shared_store: filesystem
  filesystem:
    directory: /tmp/loki/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h

chunk_store_config:
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: true
  retention_period: 168h

Configuration de Promtail

Créez un fichier promtail-config.yaml :

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

Démarrage de la stack

docker compose up -d

Configuration de Grafana

  1. Accédez à : http://localhost:3000 (admin / admin)
  2. Ajoutez une source de données Loki :
    • Type : Loki
    • URL : http://loki:3100
  3. Créez un dashboard ou utilisez un modèle existant
  4. Requêtes LogQL possibles :
{job="varlogs"} |= "error"
{job="varlogs"} |~ "timeout|fail|denied"

Exemple d’usage

  • Analyse des erreurs d’Apache/Nginx
  • Centralisation des logs de plusieurs serveurs via Promtail distant
  • Suivi d’événements système (/var/log/syslog, auth.log)
  • Supervision de conteneurs via Docker Logging Driver

Comparatif avec d'autres solutions

StackVisualisationPoidsMaintenanceCoût
Loki + Promtail✅ Grafana🟢 Léger🟢 FaibleGratuit
ELK Stack✅ Kibana🔴 Lourd🔴 ÉlevéeGratuit*
Graylog✅ Graylog UI🟠 Moyen🟠 ModéréeGratuit*
Fluentd + InfluxDB✅ Variable🟠 Moyen🟠 VariableGratuit

Bonnes pratiques

  • Utilisez des labels pertinents (app, env, host)
  • Activez la rétention automatique (retention_period)
  • Sécurisez l’accès Grafana (HTTPS, alerting, auth SSO)
  • Intégrez avec Prometheus pour une observabilité complète

Conclusion

La stack Loki + Promtail + Grafana est une solution moderne, légère et puissante pour centraliser les logs. Facile à déployer avec Docker, elle offre une alternative crédible aux solutions plus lourdes tout en restant compatible avec les standards du monitoring moderne.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser