monitoring stack

06/06/2023

on a 3 types de données à collecter

  • logs
  • metriques
  • stack traces / debugs
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

logs de docker

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.

metriques de docker

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.

metriques chargées par telegraf

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.

stacks & debugs

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