Sources :

loki-docker-driver

Loki Docker Driver Client est un plugin de log pour Docker qui permet la collecte des logs émis par les conteneurs Docker.

Installation :

$ docker plugin install grafana/loki-docker-driver:latest \
    --alias loki \
    --grant-all-permissions
latest: Pulling from grafana/loki-docker-driver
Digest: sha256:1dc6bf5eddc296b6a02142d01ae3974fa74911ef76bcdd3ac22681ae5c6c73a1
901eaf978be4: Complete 
Installed plugin grafana/loki-docker-driver:latest
$ sudo systemctl restart docker
$ docker plugin ls
ID             NAME          DESCRIPTION           ENABLED
9d45cd54a362   loki:latest   Loki Logging Driver   true

loki / grafana / applications de démonstration

L’utilisation du driver Loki peut se configurer globalement ou directement pour chaque service dans le fichier docker-compose.yaml de la façon suivante :

  my-service:
    image: my-image
    logging:
      driver: loki
      options:
        loki-url: http://localhost:3100/loki/api/v1/push
        loki-external-labels: job=dockerlogs,my-label=my-value,owner=,environment=dev

Les labels ainsi définis pourront être exploités pour filtrer les logs.

Déployer la stack de démonstration :

docker-compose.yaml ouvrir

version: "3.8"
services:
  loki:
    image: grafana/loki:2.0.0
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    logging:
      driver: loki
      options:
        loki-url: http://localhost:3100/loki/api/v1/push
        loki-external-labels: job=dockerlogs,container=loki,owner=xian,environment=dev

  grafana:
    image: grafana/grafana:8.1.1
    ports:
      - "3000:3000"
    logging:
      driver: loki
      options:
        loki-url: http://localhost:3100/loki/api/v1/push
        loki-external-labels: job=dockerlogs,container=grafana,owner=xian,environment=dev

  wit20:
    image: xian310/who-is-there:20
    ports:
      - "8080:8080"
    logging:
      driver: loki
      options:
        loki-url: http://localhost:3100/loki/api/v1/push
        loki-external-labels: job=dockerlogs,container=wit20,owner=xian,environment=dev

  wit21:
    image: xian310/who-is-there:21
    ports:
      - "8081:8080"
    logging:
      driver: loki
      options:
        loki-url: http://localhost:3100/loki/api/v1/push
        loki-external-labels: job=dockerlogs,container=wit21,owner=xian,environment=dev
$ docker-compose up -d

Se connecter sur grafana :

$ firefox http://127.0.0.1:3000/

Créer une datasource de type Loki :

  • Name : Loki
  • URL : http://loki:3100

Importer le Dashboard grafana-dashboard.json.

Générer des logs

La commande suivante permet de générer des logs sur les 2 services de démonstration déployés par la stack docker-compose :

for i in {1..10000} ; do curl "http://127.0.0.1:808$(( $RANDOM % 2 ))/$(apg -q -n 1 -M l)" && sleep 1 ; done

logCLI

Outil en ligne de commande pour interroger Loki.

Téléchargement : https://github.com/grafana/loki/releases

Configuration

$ #export LOKI_USERNAME=${MYUSER}
$ #export LOKI_PASSWORD=${MYPASS}
$ export LOKI_ADDR=http://localhost:3100

Utilisation

$ logcli query '{job="dockerlogs"}'