Slide 1

Slide 1 text

Comment OpenTelemetry peut transformer votre monitoring en unifiant vos logs/metrics/traces Vincent Behar

Slide 2

Slide 2 text

2 Senior Engineer Vincent Behar https://twitter.com/vbehar Twitter French video game company Ubisoft https://github.com/vbehar GitHub ABOUT ME

Slide 3

Slide 3 text

3 AGENDA 1. Le problème 2. OpenTelemetry 3. OpenTelemetry @Ubisoft 4. Génération automatique de metrics/logs 5. Stratégies de déploiement

Slide 4

Slide 4 text

4 Evènements « brut » LOGS • Plusieurs librairies ? • Sortie ? Stdout / fichier / … • Format ? JSON / texte • Logs structurés ? • Noms des labels ? • ELK / EFK

Slide 5

Slide 5 text

5 Aggrégations METRICS • Nommage ? • Unités ? • Labels ? • Relation avec les logs ? • Prometheus / Grafana

Slide 6

Slide 6 text

6 Visibilité en profondeur TRACES • Hiérarchie de spans • Durée, attributs, logs, … • Environment distribué • Services graph • Noms des attributs ? • Relation avec les logs et metrics ? • Jaeger

Slide 7

Slide 7 text

7 Les 3 pilliers… LE PROBLEME Silos • 1 source (application) • Plusieurs chemins • Plusieurs destinations • Pas de vision unifiée • Duplication • Connaissances & compétences • Temps d’intervention • …

Slide 8

Slide 8 text

8 NOTRE OBJECTIF Vision unifiée • Une seule UI • Correlation • Evolutive

Slide 9

Slide 9 text

9 DEMO

Slide 10

Slide 10 text

10 OPENTELEMETRY Open source • 2019 • OpenTracing • OpenCensus • CNCF Contributeurs • Amazon, Google, Microsoft, RedHat, … • Lightstep, Splunk, Dynatrace, Grafana, Honeycomb, New Relic, Datadog, Elastic, …

Slide 11

Slide 11 text

11 CONTRIBUTIONS AUX PROJETS CNCF EN 2021

Slide 12

Slide 12 text

12 Specifications • Traces: stable • Metrics: stable • Logs: stable • Semantic Conventions • Propagation • Protocol (OTLP) • … Implementations • APIs • SDKs • Support de librairies • 11 languages • Instrumentation automatique en Java et Python Collecteur • Interopérabilité • Ecrit in Go • OpenCensus Service • « killer feature » OPENTELEMETRY

Slide 13

Slide 13 text

13 Composants • 50+ récepteurs • 40+ exporteurs • 20+ processeurs • 10+ extensions • Comp. personnalisés • Distributions Collecte, traitement et publication – de manière intéropérable OPENTELEMETRY COLLECTOR Pipelines • 1 ou plusieurs par type

Slide 14

Slide 14 text

14 Entrées / Sorties OPENTELEMETRY COLLECTOR @ UBISOFT

Slide 15

Slide 15 text

15 INSTRUMENTATION Triple instrumentation: logs, metrics & traces

Slide 16

Slide 16 text

16 INSTRUMENTATION Instrumentation avec correlation manuelle

Slide 17

Slide 17 text

17 Metric requetes{path=/toto} 42 Log { "timestamp": "…", "msg": "requête", "utilisateur": "alain", "path": "/toto", "code": "200" } Span • Operation: « requête » • Heure début / fin • Attributs • Utilisateur: alain • Path: /toto • Code: 200 • Logs • Heure • Message • Attributs RESULTAT DE L’INSTRUMENTATION

Slide 18

Slide 18 text

18 Et si on générait les logs et metrics à partir des traces ?

Slide 19

Slide 19 text

19 DEMO

Slide 20

Slide 20 text

20 OPENTELEMETRY COLLECTOR – PIPELINES @ UBISOFT

Slide 21

Slide 21 text

21 LOGS, METRICS OU TRACES ?

Slide 22

Slide 22 text

22 Quand ? • Compléter des metrics/logs manquant • Requêtes HTTP • Interactions entre services – client & serveur • Applications tierces Comment ? • Processeur OpenTelemetry Collector • Histogram basé sur les spans Avantages ? • Simplification de l’instrumentation du code • Correlation automatique (exemplars) • Rétention des metrics • Vues différentes GENERATION AUTOMATIQUE DE METRICS / LOGS

Slide 23

Slide 23 text

23 Agent • Kubernetes DaemonSet • Collecte de logs par nœud • Collecte de metrics Prometheus par nœud • Collecte d’informations du kubelet (par nœud) • Collecte d’informations de la machine • Réception de spans à travers un service kubenetes STRATEGIES DE DEPLOIEMENT DU COLLECTEUR

Slide 24

Slide 24 text

24 Standalone • Kubernetes Deployment • Collecte d’informations du cluster Kubernetes • Collecte de metrics Prometheus au niveau des services kubernetes • (réception de spans à travers un service kubenetes) • … STRATEGIES DE DEPLOIEMENT DU COLLECTEUR

Slide 25

Slide 25 text

25 Sidecar • Kubernetes Container • Interopérabilité entre l’app et l’environment • Collecte des traces • Facilité de mise en place • Otelcol Operator – injection automatique dans les pods Kubernetes STRATEGIES DE DEPLOIEMENT DU COLLECTEUR

Slide 26

Slide 26 text

26 POC / Demo • Instrumentation automatique en Java et Python • Collecteur • Plateforme unifiée • Grafana • SaaS ? Code existant • Interopérabilité • Comblez les trous – avec des traces ? • Sidecar Nouveau code • Uniquement des traces? • Limiter au maximum la duplication • Conventions de nommage Workshop CNCF Paris – OpenTelemetry, jeudi 12 mai à Ubisoft https://meetup.com/Cloud-Native-Computing-Paris/ PAR OU COMMENCER ?

Slide 27

Slide 27 text

27 OpenTelemetry Collector • Encore plus d’unification entre les logs/metrics/traces • « Control Plane »: contrôle de la configuration à distance Instrumentation automatique • eBPF • Pixie Continuous Profiling • Nouveaux outils inspirés de Prometheus: Parca, Pyroscope • Intégration entre Pyroscope et les traces d’OpenTelemetry • Metrics -> Trace -> Profile ET ENSUITE ?

Slide 28

Slide 28 text

28 DEMO

Slide 29

Slide 29 text

29 Prise de conscience • Combien de temps pour trouver la « root cause » ? • Combien d’outils différents ? • Quel effort d’instrumentation ? Commencer par les traces • Comblez les trous • Génération de metrics / logs automatique • Convention de nommage • Intéropérabilité Plateforme unifiée • SaaS ou on-premise ? • Correlation • Experience unifiée • Root-cause analysis CONCLUSION

Slide 30

Slide 30 text

Merci !