In Cloud Computing Dernière mise à jourated:
Partager sur:
Cloudways propose un hébergement cloud géré aux entreprises de toutes tailles pour héberger un site Web ou des applications Web complexes.

Apprenons les principes de base de Grafana Tempo, un backend de traçage distribué.

Le traçage distribué est le moyen d'obtenir des informations précises sur les performances du système. C'est un moyen de visualiser le cycle de vie d'une requête passant par l'application. L'application peut être constituée de plusieurs services présents sur un seul nœud ou répartis sur plusieurs nœuds.

So, by using distributed tracing, you can get a consolidated view of all the services. And Grafana Tempo is all about that.

Qu’est-ce que Grafana Tempo ?

There were some major updates from Grafana Labs at the ObservabilityCon conference this year, and Grafana Tempo was one of them. Grafana Labs has added one more project, “Grafana Tempo,” to their open-source portfolio.

Tempo Grafana est un backend de traçage distribué open source hautement évolutif et facile à utiliser. Tempo est entièrement compatible avec d'autres protocoles de traçage tels que Zipkin, Jaeger, OpenTélémétrie, et OpenCensus. Actuellement, il prend en charge le moteur de découverte de données Tempo dans Loki, des plates-formes de surveillance telles que Prométhée et Grafana. Grafana 7.3+ offre une expérience transparente entre Grafana et Tempo.

Pourquoi utiliser Tempo ?

Tempo is used to correlate the metrics, traces, and logs. There are situations where a user is getting the same kind of error multiple times. If I want to understand what is happening, I will need to look at the exact traces. But because of downsampling, some valuable information which I might be looking for would have got lost. With Tempo, now we need not downsample distributed tracing data. We can store the complete trace in stockage d'objets comme S3 ou GCS, rendant Tempo très rentable.

En outre, Tempo vous permet un débogage / dépannage plus rapide en vous permettant de passer rapidement des métriques aux traces pertinentes des journaux spécifiques qui ont enregistré certains problèmes.

Vous trouverez ci-dessous les options de configuration utilisées dans Tempo.

  • Distributeurs: Ceux-ci sont utilisés pour configurer les options de réception pour recevoir des délais, puis les envoyer aux ingesters.
  • Ingérer: These are used to create batches of traces and sends them to TempoDB for storage.
  • Compactor: Il diffuse les blocs du stockage tels que S3 ou GCS, les combine et les réécrit dans le stockage.
  • Stockage: Ceci est utilisé pour configurer TempoDB. Vous devez mentionner le nom du backend de stockage (S3 ou GCS) avec d'autres paramètres dans cette configuration.
  • Liste des membres: Il est utilisé pour la coordination entre les composants Tempo.
  • Authentification / Serveur: Tempo utilise le serveur Weaveworks / Common. Il est utilisé pour définir les configurations de serveur.

Architecture du rythme

architecture de tempo

Le diagramme ci-dessus montre l'architecture de travail de Grafana Tempo.

Firstly, the distributor receives spans in different formats from Zipkin, Jaeger, OpenTelemetry, OpenCensus and sends these spans to ingesters by hashing the trace ID. Ingester then creates batches of traces which are called blocks.

Ensuite, il envoie ces blocs au stockage backend (S3 / GCS). Lorsque vous avez un ID de trace que vous souhaitez dépanner, vous allez utiliser l'interface utilisateur Grafana et mettre l'ID de trace dans la barre de recherche. Désormais, le demandeur est chargé d'obtenir les détails de l'ingénieur ou du stockage d'objets sur l'ID de trace que vous avez entré.

Premièrement, il vérifie si cet ID de trace est présent dans l'ingester; s'il ne le trouve pas, il vérifie alors le backend de stockage. Il utilise un simple point de terminaison HTTP pour exposer les traces. Pendant ce temps, le compacteur prend les blocs du stockage, les combine et les renvoie au stockage pour réduire le nombre de blocs dans le stockage.

Configurer le tempo à l'aide de Docker

Dans cette section, je vais configurer Grafana Tempo étape par étape en utilisant Docker. Tout d'abord, vous avez besoin d'un backend Tempo, alors configurez un réseau docker.

[geekflare@geekflare ~]$ docker network create docker-tempo

Téléchargez le fichier de configuration Tempo.

[geekflare@geekflare ~]$ curl -o tempo.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-local.yaml

Voici la liste des options de protocole que vous obtenez:

Passerelle Port
Télémétrie ouverte 55680
Jaeger - Thrift Compact 6831
Jaeger - Binaire d'épargne 6832
Jaeger - HTTP économe 14268
Jaeger - GRPC 14250
Zipkin 9411

À l'aide du fichier de configuration de tempo, exécutez un conteneur Docker. Ici je choisis Jaeger - Format Thrift Compact (port 6831) pour envoyer les traces.

[geekflare@geekflare ~]$ docker run -d --rm -p 6831:6831/udp --name tempo -v $(pwd)/tempo-local.yaml:/etc/tempo-local.yaml --network docker-tempo grafana/tempo:latest -config.file=/etc/tempo-local.yaml

Vous devez maintenant exécuter un conteneur de requêtes Tempo. Commencez par télécharger le fichier de configuration de la requête de tempo.

[geekflare@geekflare ~]$ curl -o tempo-query.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-query.yaml

À l'aide du fichier de configuration de la requête de tempo, exécutez un conteneur Docker.

[geekflare@geekflare ~]$ docker run -d --rm -p 16686:16686 -v $(pwd)/tempo-query.yaml:/etc/tempo-query.yaml --network docker-tempo grafana/tempo-query:latest --grpc-storage-plugin.configuration-file=/etc/tempo-query.yaml

Désormais, l'interface utilisateur Jaeger sera accessible à http://localhost:16686, comme indiqué ci-dessous.

jaeger ui - geekflare

In the search bar, you can add the trace ID from a log that you want to troubleshoot, and it will generate the traces for you.

traceid - nouveau

Exécuter une application de démonstration sur Tempo

Il est temps d'exécuter un exemple de démonstration donné par Grafana Tempo. Je vais exécuter un exemple de docker-compose, donc si vous essayez la même chose, vous devez avoir installé docker-compose sur votre machine.

Téléchargez le fichier zip Grafana Tempo: https://github.com/grafana/tempo

Extract it into the home folder and go to the docker-compose directory. You will find multiple examples of docker-compose; I am using the example where an application’s data is stored locally.

[geekflare@geekflare ~]$ cd tempo-master/example/docker-compose/
[geekflare@geekflare docker-compose]$ ls
docker-compose.loki.yaml docker-compose.s3.minio.yaml docker-compose.yaml etc
example-data readme.md tempo-link.png

Exécutez la commande ci-dessous pour démarrer la pile.

[geekflare@geekflare docker-compose]$ docker-compose up -d
Starting docker-compose_prometheus_1 ... done
Starting docker-compose_tempo_1 ... done
Starting docker-compose_grafana_1 ... done
Starting docker-compose_tempo-query_1 ... done
Starting docker-compose_synthetic-load-generator_1 ... done

Vous pouvez voir, il a démarré des conteneurs pour Grafana, Loki, Tempo, Tempo-query et Prométhée.

[geekflare@geekflare docker-compose]$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS         PORTS                                                                                                      NAMES
84cd557ce07b   grafana/tempo-query:latest                 "/go/bin/query-linux…"   10 minutes ago   Up 4 seconds   0.0.0.0:16686->16686/tcp                                                                                   docker-compose_tempo-query_1
f7cd9cf460d9   omnition/synthetic-load-generator:1.0.25   "./start.sh"             10 minutes ago   Up 4 seconds                                                                                                              docker-compose_synthetic-load-generator_1
6d9d9fbdb8f1   grafana/grafana:7.3.0-beta1                "/run.sh"                10 minutes ago   Up 6 seconds   0.0.0.0:3000->3000/tcp                                                                                     docker-compose_grafana_1
d8574ea25028   grafana/tempo:latest                       "/tempo -config.file…"   10 minutes ago   Up 6 seconds   0.0.0.0:49173->3100/tcp, 0.0.0.0:49172->14268/tcp                                                          docker-compose_tempo_1
5f9e53b5a09c   prom/prometheus:latest                     "/bin/prometheus --c…"   10 minutes ago   Up 6 seconds   0.0.0.0:9090->9090/tcp                                                                                     docker-compose_prometheus_1

You can also go to your browser and verify if Grafana, Jaeger UI, Prometheus are running.

Grafana

Prométhée

Désormais, le générateur de charge synthétique fonctionnant à l'intérieur d'un conteneur génère des identifiants de trace qu'il met à l'intérieur du tempo. Exécutez la commande ci-dessous et vous pouvez afficher les journaux.

[geekflare@geekflare docker-compose]$ docker-compose logs -f synthetic-load-generator
Attaching to docker-compose_synthetic-load-generator_1
synthetic-load-generator_1 
| using params: 
--jaegerCollectorUrl http://tempo:14268
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /product, 2880 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /cart, 14400 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /checkout, 480 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 17867942c5e161f2 for service frontend route /currency
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 3d9cc23c8129439f for service frontend route /shipping
synthetic-load-generator_1 

These are the trace ids which you need to pass to generate traces.

trace nouveau

Je copie l'un des identifiants de trace et le mets dans la barre de recherche Jaeger UI.

traceid

You can see it has successfully generated the traces related to the trace id I provided.

Conclusion

So that was all about Grafana Tempo. Go ahead and start using Tempo to generate traces to understand the metrics and issues in your journaux en détail.

Tout est capturé dans Tempo et vous ne manquerez aucun détail à cause du sous-échantillonnage, qui se produisait auparavant. Tempo permet à un développeur ou à une équipe de production de comprendre facilement la cause première des erreurs ou des avertissements susceptibles de se produire dans les journaux.

Partager sur:
  • Avi
    Auteur
    Avi est un passionné de technologie possédant une expertise dans les technologies tendances telles que DevOps, Cloud Computing, Big Data et bien d'autres. Il est passionnéate sur l'apprentissage des technologies de pointe et le partage de ses connaissances avec les autres à travers…

Merci à nos commanditaires

Plus de bonnes lectures sur le Cloud Computing

Alimentez votre entreprise

Certains des outils et services pour aider votre entreprise grow.
  • L'outil de synthèse vocale qui utilise l'IA pour générerate des voix humaines réalistes.

    Essayez Murf AI
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.

    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.

    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.

    Essayez Intruder