← Retour aux articles
28 September 2025 3 min de lecture GrafanaPrometheusLokiGoMonitoringDocker

L'art de la traçabilité

Comment mettre en place une traçabilité complète avec Grafana, Prometheus et Loki sur une stack Go/Vue.js/Docker. Retour d'expérience chez Butterfly Therapeutics.

Dans le développement d’applications web modernes, la traçabilité est un élément incontournable pour garantir la fiabilité, la sécurité et la performance des systèmes.

Chez Butterfly Therapeutics, nous avions une stack web Go/PostgreSQL et Vue 3 (le tout dockerisé), mais aussi des applications dans des casques de réalité virtuelle (sous Android), des apps Android et iOS. Pour monitorer l’ensemble, j’ai mis en place une stack Prometheus, Loki et Grafana.

Pourquoi la traçabilité est importante

La traçabilité consiste à suivre chaque action, événement ou interaction dans une application, qu’il s’agisse d’une requête utilisateur, d’un appel API ou d’une erreur inattendue. Concrètement :

Détection des problèmes en temps réel. Une application qui plante sans explication peut frustrer les utilisateurs et causer des pertes de revenus. Avec des logs et métriques centralisés, vous identifiez la cause en minutes, pas en heures.

Sécurité. La traçabilité permet de détecter et d’enquêter sur des activités suspectes ou des failles de sécurité.

Collaboration inter-équipes. Des logs et métriques centralisés facilitent la communication entre développeurs, DevOps et autres parties prenantes, réduisant le temps de résolution des incidents.

Les trois piliers

La traçabilité repose sur trois piliers complémentaires :

Logging — Collecter et enregistrer les événements significatifs. Loki est la solution idéale pour Docker : optimisé pour les containers, intégré nativement avec Grafana. On utilise des logs structurés en JSON pour capturer des informations précises sur les requêtes, erreurs et événements business.

Monitoring — Suivre les performances et l’état de santé du système. Prometheus collecte les métriques du backend (temps de réponse, erreurs HTTP, consommation mémoire) et du frontend (temps de chargement des composants Vue 3, sessions actives).

Tracing — Analyser les flux de données à travers les différents services. OpenTelemetry, compatible avec notre stack, trace le parcours d’une requête à travers nos services dockerisés.

En pratique avec Go

L’instrumentation du backend Go est directe avec prometheus/client_golang :

var (
    httpRequests = promauto.NewCounterVec(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Total HTTP requests",
        },
        []string{"method", "path", "status"},
    )
    httpDuration = promauto.NewHistogramVec(
        prometheus.HistogramOpts{
            Name:    "http_request_duration_seconds",
            Help:    "HTTP request duration",
            Buckets: prometheus.DefBuckets,
        },
        []string{"method", "path"},
    )
)

func metricsMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()
        sw := &statusWriter{ResponseWriter: w}
        next.ServeHTTP(sw, r)
        
        httpRequests.WithLabelValues(r.Method, r.URL.Path, strconv.Itoa(sw.status)).Inc()
        httpDuration.WithLabelValues(r.Method, r.URL.Path).Observe(time.Since(start).Seconds())
    })
}

Ces métriques sont collectées par Prometheus et affichées dans des tableaux de bord Grafana.

Les bonnes pratiques

Centralisez vos données. Concentrez vos logs, métriques et traces dans un seul endroit. Grafana peut agréger Loki, Prometheus et OpenTelemetry dans des tableaux de bord unifiés.

Automatisez les alertes. Configurez Prometheus pour déclencher des alertes en cas d’anomalies : taux d’erreurs élevé, latence excessive, espace disque critique.

Protégez les données sensibles. Évitez de stocker des informations sensibles dans les logs. Si nécessaire, anonymisez ou masquez les données — surtout dans un contexte medtech où la compliance est critique.

En conclusion

La traçabilité est bien plus qu’un simple luxe dans une application web moderne — c’est un impératif pour garantir des systèmes fiables, sécurisés et performants. Avec une stack combinant Go, Vue 3, Docker, et des outils comme Grafana, Prometheus et Loki, vous avez tout ce qu’il faut pour une traçabilité efficace.

Besoin d'aide sur ce sujet ?

Réserver un créneau