on a 3 types de données à collecter
flowchart TD docker --> |logs| dockersonde docker --> |stats| dockersonde docker --> |events| dockersonde loki --> grafana dockersonde --> |logs| loki dockersonde --> |metriques| influxdb machine --> |cpu / ram| telegraf telegraf --> influxdb application --> |endpoint /metrics| telegraf browser --> |stacks de front| monitoringserveur application --> |stack traces| monitoringserveur
les logs sont gérés par docker
docker logs -f CONTAINERNAME docker service logs -f SERVICENAME
ils sont tous collectés par un conteneur spécial lancé sur la prod : dockersonde
ce conteneur sauvegarde les logs sur loki: c'est une base de donnée dediée aux logs
grafana affiche tout ces logs et en fait également une coube.
Il est possible de filtrer par tag ou comme avec une commande grep.
docker fourni des stats par conteneur : network / cpu / ram / io
docker stats
ainsi que des events
docker events
le projet perso dockersonde les collecte et les envoie vers influxdb : c'est une base de donnée orientée colonnes. spécialisée dans les time series.
telegraf fait partie de la stack de influxdb
il est capable de récupérer plusieurs metriques et les envoyer dans influxdb.
typiquement le CPU, la ram, l'io, et les endpoint au format prometheus (/metrics)
chaque application peut dont fournir une route /metrics afin d'être monitorée.
chaque projet watch ses propres plantages,
et envoie ses stacks via http vers le projet perso monitoringserver
les erreur qui se produisent en front dans le navigateur sont également surveillées et envoyées en http vers monitoringserver
les stacks sont alors visibles sur monitoringfront