Aller au contenu

OrganisationPratique

Gouverner la télémétrie

Pour : ingénieurs et SRE · architectes · managers d’équipe · finance, risque et conformitéPrérequis : Notions de base sur les métriques, les labels et la cardinalité.

Mode de lecture

Sans gouvernance, la télémétrie suit une pente naturelle : chaque équipe ajoute des métriques, des attributs et des logs, personne n’en retire et la rétention reste celle par défaut. Le résultat se voit d’abord sur la facture, ensuite dans les requêtes qui ralentissent, parfois dans un audit qui découvre des données personnelles dans des logs conservés trop longtemps.

Gouverner la télémétrie, c’est décider à l’avance ce qui peut être collecté, en quelle quantité, pour combien de temps et vers où, puis vérifier automatiquement que ces décisions sont respectées. Quatre outils suffisent : le contrat de données, le budget de cardinalité, la politique de rétention et une revue trimestrielle.

Le glossaire le définit comme une règle écrite, vérifiée en intégration continue, qui fixe pour un signal les attributs autorisés, le budget de cardinalité, la rétention et la destination. Je recommande d’y ajouter deux champs : un propriétaire et la présence éventuelle de données personnelles.

Voici à quoi peut ressembler un contrat pour une métrique. Le format est un exemple illustratif, à adapter à votre outillage ; il ne correspond pas au schéma d’un outil précis.

signal: http.server.request.duration
type: histogramme
proprietaire: equipe-paiement
usage: [slo-paiement, tableau-de-bord-paiement]
attributs_autorises:
- service.name
- http.request.method
- http.response.status_code
- http.route # route normalisée, jamais le chemin brut
attributs_interdits:
- user.id # non borné : à porter par les traces
- url.full
budget_cardinalite: 5000 # séries actives maximum pour ce signal
donnees_personnelles: non
retention: classe-exploitation
destination: stockage-metriques-chaud

Trois choix de ce contrat méritent d’être expliqués.

Le champ usage. Chaque signal doit servir à quelque chose : un SLO, une alerte, un tableau de bord, une décision. Un signal sans usage déclaré est le premier candidat à la suppression lors de la revue. C’est la règle de sobriété proposée dans la leçon 3 du parcours DSI.

Les noms d’attributs. Les conventions sémantiques OpenTelemetry fournissent des noms et des significations standardisés. Je recommande de les utiliser plutôt que d’inventer un vocabulaire maison : les contrats restent lisibles d’une équipe à l’autre et d’un outil à l’autre.

Les attributs interdits. La documentation Prometheus déconseille explicitement de porter par des labels des dimensions à forte cardinalité comme des identifiants d’utilisateur ou des adresses électroniques. Écrire ces interdits dans le contrat les rend vérifiables.

Un contrat qui n’est vérifié qu’en revue humaine finit par être ignoré. Je recommande trois vérifications automatiques, du plus simple au plus complet :

VérificationCe qu’elle bloqueOutils possibles
Nommage et formatnoms non conformes, unités absentespromtool check metrics pour les métriques au format Prometheus
Conformité aux conventionsattributs inconnus ou mal typésOTel Weaver, qui valide un registre de conventions sémantiques
Contratattributs interdits, signal sans propriétaire ni usageun test maison qui compare l’instrumentation déclarée aux contrats

La troisième vérification est à mon avis la plus utile ; c’est aussi celle qu’un outil générique ne peut pas fournir telle quelle, puisqu’elle dépend de vos contrats. Elle peut commencer petit : un script qui refuse une fusion lorsqu’un nouveau signal n’a pas de contrat.

La cardinalité est le nombre de séries temporelles distinctes produites par une métrique. Elle croît de façon multiplicative avec les labels, ce que le simulateur d’explosion de cardinalité rend visible.

Un budget de cardinalité fixe un plafond de séries actives par signal, par service ou par équipe. Je recommande de le poser à deux niveaux :

  • par signal, dans le contrat, pour arrêter en revue l’attribut qui ferait exploser une métrique ;
  • par équipe, comme enveloppe globale, pour que l’équipe arbitre elle-même entre ses signaux.

Le budget doit aussi être appliqué à l’exécution, parce qu’une erreur passe toujours la revue un jour. Côté Prometheus, les paramètres de collecte sample_limit et label_limit font échouer la collecte d’une cible qui dépasse un plafond (configuration Prometheus). Dans un OpenTelemetry Collector, les processeurs de filtrage et de transformation suppriment ou recodent les attributs interdits avant l’export. Le simulateur du coût au Collector chiffre l’effet de ces leviers.

Le circuit de dérogation. Un budget sans dérogation possible est contourné. Je recommande un circuit court et écrit : l’équipe demande, justifie l’usage, propose une durée ; l’équipe plateforme estime l’impact ; la décision est tracée dans le contrat avec une date de fin. Une dérogation sans date de fin devient la règle.

Toutes les données n’ont pas la même durée de vie utile. Je recommande de définir un petit nombre de classes de rétention et de rattacher chaque signal à une classe dans son contrat.

ClasseExemples de signauxDuréeStockage
Diagnostictraces nominales échantillonnées, logs de debug autorisésquelques jourschaud
Exploitationmétriques d’exploitation, logs applicatifs, traces en erreurquelques semaineschaud puis tiède
Tendancemétriques agrégées (par service, à résolution réduite)plusieurs mois à quelques annéesfroid ou compressé
Preuvejournaux d’audit, traces à valeur probantefixée par la politique de conservation et les textes applicablesfroid, immuable si nécessaire

Les durées de ce tableau sont des ordres de grandeur illustratifs. Les durées de la classe Preuve ne se choisissent pas en fonction du coût : elles viennent de la politique de conservation de l’entreprise et des textes sectoriels, comme l’explique la leçon 2 du parcours DSI. Pour l’intégrité de ces journaux, voir l’intégrité des journaux d’audit.

Les données personnelles. Le RGPD pose les principes de minimisation des données et de limitation de la conservation (règlement (UE) 2016/679, article 5). Appliqués à la télémétrie, ils signifient qu’un identifiant d’utilisateur, une adresse IP ou un contenu de requête ne devraient être collectés que s’ils servent un usage déclaré et ne devraient pas être conservés plus longtemps que cet usage ne l’exige. Le champ donnees_personnelles du contrat rend ce choix explicite et vérifiable par le DPO.

Les contrats et les budgets vieillissent. Je recommande une revue trimestrielle d’une heure, réunissant l’équipe plateforme, les référents des équipes produit, un représentant FinOps et, une fois par an au moins, la sécurité et le DPO.

Ordre du jour type.

  1. Évolution du volume et de la cardinalité par équipe depuis la revue précédente.
  2. Les dix signaux les plus coûteux et leur usage déclaré.
  3. Les signaux sans usage constaté sur le trimestre : supprimer ou justifier.
  4. Les dérogations arrivées à échéance : clore ou renouveler avec une nouvelle date.
  5. Les incidents où un signal a manqué : ajouter, avec un contrat.
  6. Les écarts de rétention et de données personnelles relevés.
  7. Les décisions, avec un porteur et une date.

Le point 5 compte autant que les autres. La gouvernance ne sert pas seulement à réduire : un post-mortem qui conclut à un trou d’observabilité doit pouvoir ajouter un signal rapidement. Voir le post-mortem sans blâme.

IndicateurCe qu’il révèle
Part des signaux couverts par un contratl’étendue réelle de la gouvernance
Part des signaux avec un usage déclaré et constatéla sobriété de la collecte
Séries actives par équipe, rapportées à leur budgetla tenue des budgets de cardinalité
Nombre de fusions bloquées par les vérifications de contratsi les règles sont appliquées ou contournées
Dérogations ouvertes et dérogations échuesla discipline du circuit de dérogation
Signaux contenant des données personnelles hors contratle risque de conformité
Coût par équipe et coût par transaction métierle lien avec le pilotage FinOps de la leçon 4
  • Un format de contrat de données est choisi et documenté
  • Chaque nouveau signal arrive avec un contrat, un propriétaire et un usage
  • Les noms d’attributs suivent les conventions sémantiques OpenTelemetry
  • L’intégration continue bloque un signal sans contrat
  • Un budget de cardinalité existe par équipe et il est appliqué à l’exécution
  • Le circuit de dérogation est écrit et chaque dérogation a une date de fin
  • Chaque signal est rattaché à une classe de rétention
  • La présence de données personnelles est déclarée et revue avec le DPO
  • La revue trimestrielle a lieu et produit des décisions tracées