Outils pour utilisateurs

Outils du site


sysadmin:linux:logs:visualisation_des_logs_loki_grafana

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:linux:logs:visualisation_des_logs_loki_grafana [2021/08/17 23:45] yoannsysadmin:linux:logs:visualisation_des_logs_loki_grafana [2021/10/25 14:30] (Version actuelle) yoann
Ligne 9: Ligne 9:
 ===== Architecture générale ===== ===== Architecture générale =====
  
-  * **Promtail** est un agent (ou client) qui s’exécute localement. Il est chargé de scruter les fichiers de logs et de générer l'intégration dans Loki (mode push)+  * **Promtail** est un agent (ou client) qui s’exécute localement. Il est chargé de scruter les fichiers de logs et de les intégrer dans Loki en mode push. 
-  * **Loki** est la base de donnée: Il stocke les logs+  * **Loki** est la base de donnée: Il stocke les logs.
   * **Grafana** se connecte à Loki et propose une visualisation des logs.   * **Grafana** se connecte à Loki et propose une visualisation des logs.
  
 ===== Installation de Loki ===== ===== Installation de Loki =====
 +
 +==== Test de l'image ====
 +
 +L'image docker est disponible sur le Hub à l'URL https://hub.docker.com/r/grafana/loki
 +Télécharger l' image docker:
 +
 +<code bash>
 +docker image pull grafana/loki:2.3.0
 +</code>
 +
 +Création d'un conteneur de test
 +
 +<code bash>
 +docker run -d --name=loki-test -p 127.0.0.1:3100:3100 grafana/loki:2.3.0
 +</code>
 +
 +Vérifier le bon fonctionnement de l'instance via les logs et via les points d'entrée exposés:
 +  * GET /ready
 +  * GET /metrics
 +  * GET /config
 +  * GET /loki/api/v1/status/buildinfo
 +
 +
 +<code bash>
 +docker container logs loki-test --follow
 +</code>
  
 <code bash> <code bash>
Ligne 22: Ligne 48:
 Création d'un réseau dédié pour Loki, seule l'application Grafana sera connectée à Loki par l'intermédiaire de ce réseau. Création d'un réseau dédié pour Loki, seule l'application Grafana sera connectée à Loki par l'intermédiaire de ce réseau.
 <code bash> <code bash>
-$ docker network create vnet-loki+$ docker network create loki-net
 </code> </code>
  
Ligne 28: Ligne 54:
  
 <file YAML> <file YAML>
 +version: "3.3"
 +
 +networks:
 +  loki-net:
 +    external: true
 +
 +  loki:
 +    image: grafana/loki:2.3.0
 +    restart: unless-stopped
 +    ports:
 +      - "127.0.0.1:3100:3100/tcp"
 +    command: -config.file=/mnt/loki-config.yaml
 +    networks:
 +      loki-net:
 +    volumes:
 +      - $PWD/loki/conf/loki-config.yaml:/mnt/loki-config.yaml:ro
 +    labels:
 +      - "traefik.enable=true"
 +      - "traefik.docker.network=traefik-net"
 +      - "traefik.http.routers.loki_http.entryPoints=HTTP"
 +      - "traefik.http.routers.loki_http.rule=Host(`loki.phobos-net.fr`)"
 +      - "traefik.http.routers.loki_http.middlewares=auth"
 +      - "traefik.http.services.loki.loadbalancer.server.port=3100"
 </file> </file>
 +
 +Vérifier le fonctionnement de l'instance:
 +<code bash>
 +http://loki.phobos-net.fr/ready
 +
 +# afficher la configuration
 +http://loki.phobos-net.fr/config
 +
 +# afficher les labels disponibles
 +http://loki.phobos-net.fr/loki/api/v1/labels
 +
 +# pour afficher les valeurs associées au label __name__
 +http://loki.phobos-net.fr/loki/api/v1/label/__name__/values
 +</code>
 +
 +Envoyer manuellement une ligne de log via cURL:
 +<code bash>
 +docker pull curlimages/curl:latest
 +
 +# timetamp en nanosecondes utilisé par la requête
 +TSNS=$(date +%s)000000000
 +
 +docker container run --rm --interactive --name curl_push --network loki-net curlimages/curl:latest  curl -v -H "Content-Type: application/json" -XPOST -s "http://loki:3100/loki/api/v1/push" --data-raw   '{"streams": [{ "stream": { "job": "dockerlogs", "container_name": "curl_push" }, "values": [ [ "'$TSNS'", "Hello Loki again" ] ] }]}'
 +</code>
 +
 ===== Driver docker ===== ===== Driver docker =====
  
-Le pilote Loki pour Docker (plugin Dockerpermet à Loki de lire et d'intégrer directement les logs générés par les conteneurs Docker. Le plugin peut être configuré utiliser une instance privée de Loki ou les services cloud. Si l'on souhaite superviser les conteneurs uniquement, on peut se limiter à l'installation du plugin et ne pas utiliser Promtail.+Le pilote Loki pour Docker disponible sous la forme d'un plugin Docker permet à Loki de lire et d'intégrer directement les logs générés par les conteneurs Docker. Le plugin peut être configuré utiliser une instance privée de Loki ou les services cloud. Si l'on souhaite superviser les conteneurs uniquement, on peut se limiter à l'installation du plugin et ne pas utiliser Promtail.
  
 ==== Installer le pilote ==== ==== Installer le pilote ====
Ligne 58: Ligne 132:
  
  
 +<code bash>
 +docker container run --detach --name test_loki \
 +  --network loki-net \
 +  --log-driver loki --log-opt loki-url="http://loki:3100/loki/api/v1/push" \
 +  --log-opt loki-batch-size=1 \
 +  --log-opt loki-external-labels="job=dockerlogs,environment=prod" \
 +  busybox:latest echo "Hello Loki from lokitest container"
 +</code>
 +
 +===== Activer le tracing via Jaeger =====
 +
 +Syntaxe avec Helm:
 +
 +<code bash>
 +helm upgrade --install loki loki/loki --set "loki.tracing.jaegerAgentHost=YOUR_JAEGER_AGENT_HOST"
 +</code>
  
 ===== Références ===== ===== Références =====
Ligne 65: Ligne 155:
   * https://mightywomble.medium.com/using-grafana-to-visualise-syslog-files-with-loki-9a8869081fb5   * https://mightywomble.medium.com/using-grafana-to-visualise-syslog-files-with-loki-9a8869081fb5
   * https://grafana.com/grafana/dashboards/12433   * https://grafana.com/grafana/dashboards/12433
 +  * https://blog.ruanbekker.com/blog/2020/08/13/getting-started-on-logging-with-loki-using-docker/
 +  * https://grafana.com/docs/loki/latest/getting-started/troubleshooting/#enable-tracing-for-loki
sysadmin/linux/logs/visualisation_des_logs_loki_grafana.1629243909.txt.gz · Dernière modification : 2021/08/17 23:45 de yoann