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.
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.
2. Créer une corrélation #
Dans l'interface ou par provisioning.
Dans l'interface #
- Ouvrez Administration › Plugins and data › Correlations puis Add new.
- Donnez un libellé (le texte du lien) et une description.
- Choisissez le type et la cible : source de données et requête (avec des variables comme
${traceId}), ou URL. - Choisissez la source d'origine et le champ du résultat qui portera le lien (par exemple
traceID). - 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étypese place dansconfig; 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 #
| Type | Usage | Paramètres |
|---|---|---|
regex | Extraire une valeur d'un texte libre | field, expression (premier groupe capturant), mapValue (nom de la variable) |
logfmt | Découper une ligne cle=valeur en variables | field |
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.
