Déployer Loki avec Docker Compose en 2 minutes !

Loki 29 juin 2026

Vous souhaitez centraliser les logs de vos applications ou de vos conteneurs Docker ? Le tout avec une solution Open Source, qui s'intègre très bien à l'écosystème de Prometheus et Grafana ? Loki est la solution que vous devez déployer !

Développé par Grafana Labs, Loki est un système d’agrégation de logs inspiré de Prometheus. Contrairement à d’autres solutions de logs, Loki n’indexe pas le contenu complet des logs, mais principalement des labels, ce qui le rend plus léger et économique à exploiter.

Regardons dans cet article comment déployer Loki avec Docker Compose en 2 minutes.

Présentation

Loki permet de stocker et de rechercher des logs à l’aide de LogQL, un langage de requête inspiré de PromQL. Il s’intègre très bien avec Grafana pour visualiser les logs, filtrer par labels, rechercher des erreurs ou suivre le comportement d’une application.

Il fait office de SIEM (Security Information and Event Management) et est souvent comparé à un ELK (Elasticsearch, Logstash, Kibana) "light" si on le couple avec Grafana.

Installation

Pour cette installation, nous allons créer deux fichiers docker-compose.yml et loki-config.yml.

Commençons par créer un dossier dédié au déploiement de Loki :

mkdir loki
cd loki

Créez ensuite le fichier docker-compose.yml :

---
services:
  loki:
    image: grafana/loki
    container_name: loki
    restart: unless-stopped
    ports:
      - 3100:3100
    volumes:
      - ./loki-config.yml:/etc/loki/local-config.yaml:ro
      - loki-data:/loki
    command:
      - "-config.file=/etc/loki/local-config.yaml"

volumes:
  loki-data:

Dans ce fichier, nous déclarons un service loki.

Le port 3100 du conteneur est exposé sur le port 3100 de l’hôte. Cela permettra d’interroger Loki directement depuis un navigateur, Grafana ou un outil comme curl.

Le volume loki-data permet de conserver les données de Loki même si le conteneur est supprimé ou recréé.

Configuration Loki

Créons maintenant le fichier loki-config.yml :

auth_enabled: false

server:
  http_listen_port: 3100

common:
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/chunks
      rules_directory: /loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

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

limits_config:
  allow_structured_metadata: false
  retention_period: 168h

compactor:
  working_directory: /loki/compactor
  retention_enabled: true
  delete_request_store: filesystem

Cette configuration permet de lancer Loki en mode simple, avec un stockage local sur le système de fichiers.

La directive auth_enabled: false désactive l’authentification. C’est pratique pour un environnement local, un lab ou un usage interne isolé.

Le bloc schema_config définit le format de stockage utilisé par Loki.

Le bloc limits_config permet ici de définir une rétention de 7 jours avec :

retention_period: 168h

Déploiement

Une fois les deux fichiers créés, il suffit de démarrer le conteneur :

docker compose up -d

Vous pouvez vérifier que le conteneur est bien démarré :

docker compose ps
NAME      IMAGE                STATUS          PORTS
loki      grafana/loki:3.7.0   Up              0.0.0.0:3100->3100/tcp

Vérification

Pour vérifier que Loki est prêt, vous pouvez accéder à l’URL suivante :

http://localhost:3100/ready

Alloy

Maintenant que votre conteneur Loki est déployé, il vous faut déployer Alloy sur chaque serveur où vous souhaitez collecter et agréger les logs.

Mots clés