Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
sysadmin:linux:logs:visualisation_des_logs_loki_grafana [2021/08/14 12:14] – yoann | sysadmin:linux:logs:visualisation_des_logs_loki_grafana [2021/10/25 14:30] (Version actuelle) – yoann | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag> | {{tag> | ||
- | ====== Visualiser les logs syslog avec Loki et Grafana ====== | + | ====== Visualiser les logs sous Grafana |
+ | Plus simple et moins consommateur de ressource que la pile ELK | ||
+ | Apporte une visibilité des logs directement sous Grafana et permet ainsi d' | ||
+ | |||
+ | ===== 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 les intégrer dans Loki en mode push. | ||
+ | * **Loki** est la base de donnée: Il stocke les logs. | ||
+ | * **Grafana** se connecte à Loki et propose une visualisation des logs. | ||
+ | |||
+ | ===== Installation de Loki ===== | ||
+ | |||
+ | ==== Test de l' | ||
+ | |||
+ | L' | ||
+ | Télécharger l' image docker: | ||
+ | |||
+ | <code bash> | ||
+ | docker image pull grafana/ | ||
+ | </ | ||
+ | |||
+ | Création d'un conteneur de test | ||
+ | |||
+ | <code bash> | ||
+ | docker run -d --name=loki-test -p 127.0.0.1: | ||
+ | </ | ||
+ | |||
+ | Vérifier le bon fonctionnement de l' | ||
+ | * GET /ready | ||
+ | * GET /metrics | ||
+ | * GET /config | ||
+ | * GET / | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | docker container logs loki-test --follow | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ mkdir -p loki/conf | ||
+ | $ wget https:// | ||
+ | </ | ||
+ | |||
+ | Création d'un réseau dédié pour Loki, seule l' | ||
+ | <code bash> | ||
+ | $ docker network create loki-net | ||
+ | </ | ||
+ | |||
+ | Le docker-compose | ||
+ | |||
+ | <file YAML> | ||
+ | version: " | ||
+ | |||
+ | networks: | ||
+ | loki-net: | ||
+ | external: true | ||
+ | |||
+ | loki: | ||
+ | image: grafana/ | ||
+ | restart: unless-stopped | ||
+ | ports: | ||
+ | - " | ||
+ | command: -config.file=/ | ||
+ | networks: | ||
+ | loki-net: | ||
+ | volumes: | ||
+ | - $PWD/ | ||
+ | labels: | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | </ | ||
+ | |||
+ | Vérifier le fonctionnement de l' | ||
+ | <code bash> | ||
+ | http:// | ||
+ | |||
+ | # afficher la configuration | ||
+ | http:// | ||
+ | |||
+ | # afficher les labels disponibles | ||
+ | http:// | ||
+ | |||
+ | # pour afficher les valeurs associées au label __name__ | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | Envoyer manuellement une ligne de log via cURL: | ||
+ | <code bash> | ||
+ | docker pull curlimages/ | ||
+ | |||
+ | # timetamp en nanosecondes utilisé par la requête | ||
+ | TSNS=$(date +%s)000000000 | ||
+ | |||
+ | docker container run --rm --interactive --name curl_push --network loki-net curlimages/ | ||
+ | </ | ||
+ | |||
+ | ===== Driver docker ===== | ||
+ | |||
+ | Le pilote Loki pour Docker disponible sous la forme d'un plugin Docker permet à Loki de lire et d' | ||
+ | |||
+ | ==== Installer le pilote ==== | ||
+ | |||
+ | Pour installer le driver Loki pour Docker: | ||
+ | <code bash> | ||
+ | $ docker plugin install grafana/ | ||
+ | </ | ||
+ | |||
+ | * La documentation officielle du pilote Loki pour Docker est disponible à l'URL https:// | ||
+ | * Les détails concernant la configuration sont disponibles à l'URL https:// | ||
+ | |||
+ | Ici on fait le choix d' | ||
+ | |||
+ | <file YAML> | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Configurer le pilote de journalisation ==== | ||
+ | |||
+ | Le daemon Docker a un pilote de journalisation (logging driver) par défaut. Il est utilisé par tous les conteneurs sauf s'ils le redéfinissent explicitement. Pour configurer la journalisation vers Loki deux possibilités: | ||
+ | * On peut redéfinir le pilote de journalisation du conteneur. Cela permet de sélectionner les conteneurs qui envoient les logs vers Loki. | ||
+ | * On peut reconfigurer globalement le daemon Docker pour que le pilote de journalisation par défaut soit Loki. Dans ce cas tout conteneur ne redéfinissant pas explicitement sont pilote de journalisation transmettra les logs à Loki. | ||
+ | |||
+ | |||
+ | |||
+ | <code bash> | ||
+ | docker container run --detach --name test_loki \ | ||
+ | --network loki-net \ | ||
+ | --log-driver loki --log-opt loki-url=" | ||
+ | --log-opt loki-batch-size=1 \ | ||
+ | --log-opt loki-external-labels=" | ||
+ | busybox: | ||
+ | </ | ||
+ | |||
+ | ===== Activer le tracing via Jaeger ===== | ||
+ | |||
+ | Syntaxe avec Helm: | ||
+ | |||
+ | <code bash> | ||
+ | helm upgrade --install loki loki/loki --set " | ||
+ | </ | ||
===== Références ===== | ===== Références ===== | ||
+ | * https:// | ||
+ | * https:// | ||
* https:// | * https:// | ||
* https:// | * https:// | ||
+ | * https:// | ||
+ | * https:// |