Jaeger, inspiré par Dapper et OpenZipkin, est un système de traçage distribué et publié en open source par Uber Technologies. Il peut être utilisé pour surveiller des systèmes distribués basés sur des microservices:

  • Propagation de contexte distribuée
  • Surveillance des transactions distribuées
  • Analyse de la cause originelle
  • Analyse de dépendance de service
  • Optimisation des performances / latences

28545596-1

Jaeger est hébergé par la Cloud Native Computing Foundation (CNCF) comme Prometheus, Kubernetes, Grafana etc...

Haute évolutivité

Le backend Jaeger est conçu pour ne présenter aucun point de défaillance unique et s'adapter aux besoins de l'entreprise. Par exemple, toute installation de Jaeger chez Uber traite généralement plusieurs milliards de plages par jour.

Prise en charge native d'OpenTracing

Les bibliothèques Jaeger Backend, Web UI et d'instrumentation ont été conçues pour prendre en charge le standard OpenTracing.

  • Représenter des traces sous forme de graphiques acycliques dirigés (pas seulement des arbres) via des références de portées
  • Prend en charge les balises span et les journaux structurés fortement typés
  • Supporte le mécanisme général de propagation de contexte distribué via bagage

En savoir plus :

Cet article vous montre comment les applications compatibles Istio peuvent être configurées pour collecter des étendues de trace. Une fois cette tâche terminée, vous devez comprendre toutes les hypothèses concernant votre application et la manière dont elle doit participer au traçage, quelle que soit la langue, le cadre ou la plate-forme que vous utilisez pour créer votre application.

Bookinfo est utilisée comme exemple d'application pour cette tâche.

Configurez Istio en suivant les instructions du guide d'installation.

  • Utilisez le modèle istio-demo.yaml ou istio-demo-auth.yaml, qui inclut la prise en charge du suivi, ou utilisez le graphique Helm avec le suivi d'activé en définissant l'option --set tracing.enabled = true.

  • Déployez lapplication Bookinfo.

Accéder au tableau de bord

Configurez l'accès au tableau de bord Jaeger à l'aide du transfert de port:

kubectl port-forward -n istio-system $(kubectl get pod -n istio-system -l app=jaeger -o jsonpath='{.items[0].metadata.name}') 8084:16686

Génération de traces à l'aide de l'exemple Bookinfo

Avec l'application Bookinfo active et en cours d'exécution, générez des informations de traces en accédant à http://$GATEWAY_URL/productpage une ou plusieurs fois.

Dans le volet gauche du tableau de bord Jaeger, sélectionnez la page de produit dans la liste déroulante Service et cliquez sur Rechercher des traces. Vous devriez voir quelque chose de similaire à ce qui suit:

Capture-d-e-cran-2018-09-16-a--22.10.21

Si vous cliquez sur la trace la plus récente, vous devriez voir les détails correspondant à votre dernière actualisation de la page /product. La page devrait ressembler à ceci:

Capture-d-e-cran-2018-09-16-a--22.10.57

Comme vous pouvez le constater, la trace est composée d'un ensemble de plages, chaque intervalle correspondant à un service Bookinfo appelé lors de l'exécution d'une requête /productpage.

Chaque RPC est représenté par deux plages dans la trace. Par exemple, l'appel de productpage aux révisions commence par la balise marquée productpage reviews.default.svc.cluster.local:9080/, qui représente l'intervalle côté client de l'appel. Il a fallu 14,89 ms. Le second intervalle (libellé reviews reviews.default.svc.cluster.local: 9080/) est un héritier du premier intervalle et représente l'intervalle côté serveur pour l'appel. Cela a pris 2,49ms.

La trace de l’appel aux services de révision révèle deux RPC ultérieurs dans la trace. Le premier concerne le service istio-policy, reflétant l'appel Check côté serveur effectué pour que le service autorise l'accès. La seconde est l'appel au service de notation.

Capture-d-e-cran-2018-09-16-a--10.00.19

Good tracing !