RousselTMLEARNING

Article · Grafana : de la découverte à l'expertise

Corrélations : relier les sources de données

1. Qu'est-ce qu'une corrélation ? #

Relier les signaux entre sources de données.

Le principe #

Disponible dans : ✓ OSS ✓ Enterprise ✓ Cloud Grafana 10 et plus ; utilisées dans Explore

Une corrélation définit un lien entre une source de données d'origine et une cible : une requête dans une autre source de données, ou une URL externe. Grafana ajoute alors un lien sur les valeurs d'un champ des résultats : depuis une ligne de log Loki, un clic sur le traceID ouvre la trace dans Tempo ; depuis un nom d'hôte, un clic ouvre ses métriques dans Prometheus.

À la différence des derived fields ou des liens de données, configurés source par source ou panneau par panneau, les corrélations sont gérées de façon centralisée par l'administrateur, dans un écran unique.

Source Loki, transformation qui extrait le traceID, cible Tempo, ouverture dans Explore.
Le lien apparaît dans les détails de la ligne de log et ouvre la cible dans une vue scindée.

Les deux types #

  • Query : la cible est une requête dans une source de données (Tempo, Prometheus, Elasticsearch…), ouverte dans Explore à côté de l'origine.
  • External : la cible est une URL (outil de tickets, CMDB, procédure), dans laquelle on injecte des valeurs du résultat.
Un champ du résultat alimente une corrélation de type requête ou un lien externe.
Choisissez « external » pour sortir de Grafana.

2. Créer une corrélation #

Dans l'interface ou par provisioning.

Dans l'interface #

  1. Ouvrez Administration › Plugins and data › Correlations puis Add new.
  2. Donnez un libellé (le texte du lien) et une description.
  3. Choisissez le type et la cible : source de données et requête (avec des variables comme ${traceId}), ou URL.
  4. Choisissez la source d'origine et le champ du résultat qui portera le lien (par exemple traceID).
  5. Ajoutez au besoin des transformations pour extraire une valeur, puis enregistrez.

Vous pouvez aussi créer une corrélation depuis Explore, en mode édition de corrélation, à partir d'un résultat réel.

Par provisioning #

Les corrélations se déclarent dans le fichier de provisioning de la source d'origine, sous la clé correlations. Elles sont alors versionnées et non modifiables dans l'interface.

# provisioning/datasources/correlations.yaml
apiVersion: 1
datasources:
  - name: Loki
    type: loki
    uid: loki
    url: http://loki:3100
    correlations:
      - targetUID: tempo
        label: "Ouvrir la trace"
        description: "Trace Tempo de cette ligne de log"
        type: query
        config:
          field: traceID
          target:
            query: "${traceId}"
          transformations:
            - type: regex
              field: Line
              expression: 'traceID=(\w+)'
              mapValue: traceId
À savoir : dans les versions plus anciennes, la clé type se place dans config ; vérifiez le format attendu par votre version.

3. Variables et transformations #

Construire la requête cible.

Variables #

Dans la requête ou l'URL cible, ${nom} est remplacé par la valeur du champ du même nom dans la ligne cliquée. Les transformations créent de nouvelles variables à partir d'un champ.

Requête Prometheus cible : rate(http_requests_total{instance="${host}"}[5m])
URL externe : https://tickets.exemple.fr/new?service=${service}&trace=${traceId}

Transformations #

TypeUsageParamètres
regexExtraire une valeur d'un texte librefield, expression (premier groupe capturant), mapValue (nom de la variable)
logfmtDécouper une ligne cle=valeur en variablesfield
Ligne : level=error service=api traceID=4bf92f3577b34da6 duration=812ms
logfmt → ${level}, ${service}, ${traceID}, ${duration}
Erreur courante : une variable absente de la ligne cliquée : le lien n'apparaît pas. Vérifiez le nom exact du champ (sensible à la casse) dans les détails de la ligne.

4. Droits, limites et bonnes pratiques #

Ce qu'il faut savoir avant de généraliser.

Droits et limites #

  • La gestion des corrélations est réservée aux administrateurs de l'organisation (ou aux rôles autorisés avec le contrôle d'accès par rôles).
  • Les liens apparaissent dans Explore (détails des logs, cellules de tableau) ; dans les dashboards, utilisez les liens de données ou les derived fields.
  • L'utilisateur doit avoir accès à la source de données cible pour suivre un lien de type requête.

Bonnes pratiques #

  • Commencer par les parcours d'enquête les plus fréquents : log → trace, trace → métriques du service, alerte → procédure.
  • Donner des libellés d'action explicites (« Ouvrir la trace », « Voir les métriques de l'hôte »).
  • Normaliser les noms de champs (traceID, service.name) dans la collecte, avec Alloy ou le Collector OpenTelemetry, pour réutiliser les mêmes corrélations partout.
  • Provisionner les corrélations avec les sources de données pour les retrouver identiques sur chaque environnement.
Bonne pratique : combinez corrélations et liens trace → logs de Tempo : l'enquête circule alors dans les deux sens entre logs et traces.

📄 Corrélations dans Grafana : passer d'une source de données à une autre →

Mon suivi

  • ⏱ Durée estimée : ≈ 8 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Discussions récentes de la formation

Poser une question sur cette leçon →Voir toutes les discussions de la formation

Glossaire de la formation

Observabilité

La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...

Grafana

Plateforme open source de visualisation de données et d'analyse de métriques interactives.

Prometheus

Système open source de surveillance et d'alerte, particulièrement adapté pour la collecte de métriques dans des environnements dynamiques (comme Kuber...

APM (Application Performance Monitoring)

Surveillance des performances applicatives pour identifier, diagnostiquer et résoudre les problèmes complexes liés aux performances et à la disponibil...

k6

Outil open source de test de charge (load testing) conçu pour l'ingénierie de performance, permettant d'évaluer la fiabilité et la scalabilité des sys...

Traces distribuées

Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...

Métriques

Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...

Alerting

Processus consistant à notifier les équipes (via email, Slack, Teams) lorsqu'un événement spécifique, un dépassement de seuil ou une anomalie est déte...

HTTP Code

Codes de statut HTTP standardisés indiquant le résultat du traitement d'une requête.1xx (Information) : 100 Continue, 101 Switching Protocols.2xx (Suc...

Access Log

Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...

Client IP

L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...

Timestamp

La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.

Request

La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...

Status Code

Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...

Size

Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...

Referrer

L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...

User-Agent

Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...

Response Time

La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...

Grafana Loki

Système de journalisation (logs) multi-tenant, hautement disponible et inspiré de Prometheus. Il est conçu pour être très économe en ressources en n'i...

Articles recommandés

Les Data Sources dans Grafana : Connectez et unifiez vos données

Apprenez à étendre les capacités de Grafana via les Data Sources. Découvrez les plugins essentiel...

Grafana Provisioning : Automatisez la gestion de vos tableaux de bord et sources de données

Découvrez comment utiliser le provisioning de Grafana pour gérer vos configurations (dashboards, ...

La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place

Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tem...

Du clic à la base de données : traces front-end vers back-end avec Faro

Relier les requêtes du navigateur aux traces du back-end : TracingInstrumentation, propagation de...

Maîtriser les Transformations dans Grafana : Manipulez vos données avec agilité

Apprenez à utiliser les transformations Grafana pour reformater, calculer et combiner vos données...

Relier traces et profils : span profiles avec Tempo et Pyroscope

Passer d'une trace lente au profil CPU exact de ce span : span profiles en Go et Java, configurat...

Corréler traces, logs, métriques et profils dans Grafana

Relier Tempo aux logs (Loki), aux métriques (Prometheus) et aux profils (Pyroscope) : tracesToLog...

Grafana Cloud : démarrer avec la plateforme managée (Mimir, Loki, Tempo, Alloy)

Découvrir Grafana Cloud : création d'une stack, offre gratuite, envoi de métriques, logs et trace...

Coûts, usage et Private Data Source Connect dans Grafana Cloud

Suivre la consommation de Grafana Cloud et interroger des sources de données privées sans les exp...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !