Aller au contenu principal

Télémesure

Objectifs

Cours

Télémesure

DevOps

Télémesure vs Télémétrie

  • Télémesure

    • Technique de mesure à distance

  • Télémétrie

    • Technique de mesure des distances


Telemetry = Télémesure

Pourquoi la télémesure ?

  • Centralisation des données

  • Visualisation des données

  • Alerting sur les données

  • Utilisation d'un APM (Application Performance Monitoring)

    • Outils de télémétrie pour les applications

OpenTelemetry

  • Standard open source des données de télémétrie (observabilité)

  • Compatibilité et Interopérabilité entre les outils de télémétrie

  • Facilite l'instrumentation des applications

Universal Converter Box

https://xkcd.com/1406/

Signaux

  • 4 signals (catégories de télémesure) :

    • Traces (déroulement d'une requête)

    • Metrics (valeurs mesurées)

    • Logs (texte structuré ou non)

    • Baggage (données partagées entre les spans)

Trace & Span

https://medium.com/nikeengineering/hit-the-ground-running-with-distributed-tracing-core-concepts-ff5ad47c7058

  • Trace : ensemble de spans (étapes d'une requête)

Relations

Instrumentation

  • Pour rendre un système observable, il faut l'instrumenter

  • Il émets des signaux qui seront collectés

  • L'instrumentation peut être automatique ou manuel

Prometheus

https://commons.wikimedia.org/wiki/File:Prometheus_software_logo.svg

  • Collecte et stockage de métriques en time series

  • Alerting sur les métriques

  • Visualisation avec Grafana

  • Depuis 2012 par SoundCloud, CNCF depuis 2016

Architecture

https://training.promlabs.com/training/introduction-to-prometheus/prometheus-an-overview/system-architecture

Grafana

https://grafana.com/docs/grafana/latest/fundamentals/dashboards-overview/

Grafana vs Kibana

  • Grafana

    • Visualisation de métriques (time series)

    • Alerting intégré

    • Logs avec Loki

  • Kibana

    • Recherche et analyse de logs (texte)

    • Ne fonctionne qu'avec Elasticsearch

    • Alerting avec Watcher

Service Discovery

https://www.f5.com/company/blog/nginx/service-discovery-in-a-microservices-architecture

Client-Side Discovery

https://www.f5.com/company/blog/nginx/service-discovery-in-a-microservices-architecture

Server-Side Discovery

https://www.f5.com/company/blog/nginx/service-discovery-in-a-microservices-architecture

Pull vs Push

  • Pull

    • L'APM récupère les métriques de chaque service

    • Idéal pour les métriques régulières (CPU, RAM, etc.)

    • Par exemple : Prometheus

  • Push

    • Chaque service envoie ses métriques à l'APM

    • Envoi à la demande (logs, traces, etc.)

    • Par exemple : Beats

Cardinalité

  • Nombre d'éléments distincts dans un ensemble

  • Métriques : Nombre de valeurs d'un attribut

https://grafana.com/blog/2022/02/15/what-are-cardinality-spikes-and-why-do-they-matter/

High cardinality

https://victoriametrics.com/blog/cardinality-explorer/

VM → container

https://chronosphere.io/learn/what-is-high-cardinality/

Coûts et Problèmes

  • Stockage : volume des données

  • Ressources : CPU et RAM du système de monitoring

  • Pertes : throughput du système de monitoring

  • Visualisation : lisibilité des graphiques

  • Coûts : infrastructure et maintenance ou SaaS

Optimisations

https://grafana.com/blog/2022/10/20/how-to-manage-high-cardinality-metrics-in-prometheus-and-kubernetes/

Optimisations

  • Suppression : supprimer les labels inutiles

    • Inutilisé

    • Redondant

  • Agrégation : réduire le nombre de valeurs

    • Histogram : découper les valeurs en intervalles (agrégation temporelle)

    • Summary : minimale, maximale, moyenne, quantiles (agrégation statistique)

Sampling

  • Sampling : ne pas collecter toutes les valeurs

    • Sampled trace/span : traité et stocké

    • Not sampled trace/span : ignoré

https://opentelemetry.io/docs/concepts/sampling/

Head vs Tail Sampling

https://thenewstack.io/what-you-need-to-know-about-distributed-tracing-and-sampling/

  • Head sampling : décider au début de la requête

    • Aléatoirement (p. ex. 1/1000)

  • Tail sampling : décider à la fin de la requête

    • Si lente, erreur, contenu spécifique, etc.

Semantic Conventions

ISO 8601

https://xkcd.com/1179

Standards

https://xkcd.com/927

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références