Télémesure
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émesure pour les applications
OpenTelemetry
Standard open source des données de télémesure (observabilité)
Compatibilité et Interopérabilité entre les outils de télémesure
Facilite l'instrumentation des applications
Universal Converter Box

Signaux
Trace & Span

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
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

VM → container

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

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é
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
Standard pour les labels des métriques
Attribut (key) en snake_case séparé par des points (p. ex. http.status_code)
ISO 8601

Standards
