telemetrygen est le générateur de données d’OpenTelemetry Collector Contrib. Il émet des logs, traces et métriques OTLP synthétiques, et propose des flags permettant de modeler les données : services multiples, niveaux de sévérité des logs, statuts de span et spans enfants, ainsi que différents types de métriques. Utilisez-le pour vérifier qu’un collector OpenTelemetry ClickStack accepte bien les données et que des événements variés et réalistes s’affichent dans la ClickStack UI.
Ce guide suppose que le collector est déjà en cours d’exécution avec des endpoints OTLP sur 4317 (gRPC) et 4318 (HTTP).
- ClickStack managé
- ClickStack Open Source
1
Prérequis
Ce guide part du principe que vous avez terminé le Guide de démarrage de Managed ClickStack et qu’un collecteur OpenTelemetry est en cours d’exécution, avec des endpoints OTLP gRPC (4317) et HTTP (4318) accessibles depuis la machine sur laquelle vous exécutez telemetrygen. Si vous avez sécurisé le collecteur avec un OTLP_AUTH_TOKEN, conservez cette valeur à portée de main.2
Installer telemetrygen
Exécuteztelemetrygen depuis son image Docker (aucune installation requise). Définissez un petit wrapper pour que les commandes ci-dessous restent lisibles ; --add-host permet au conteneur d’atteindre un collecteur en écoute sur l’hôte :localhost comme cible :3
Définir les variables d’environnement
Exportez le jeton d’authentification si le collector est sécurisé :Collecteur non sécuriséLe ClickStack OpenTelemetry collector ne nécessite aucune authentification par défaut. Si vous n’avez pas suivi Sécurisation du collecteur pour définir un
OTLP_AUTH_TOKEN, supprimez la ligne --otlp-header de l’utilitaire ci-dessous.tg pour que chaque commande n’indique que ce qui change (service, sévérité, status, attributs) :4
Générer des logs
Envoyez des logs avec un mélange réaliste de niveaux de gravité selon les services, majoritairement informatifs, avec aussi un avertissement et une erreur, plutôt qu’un flux uniforme :--servicedéfinitservice.nameafin que les événements puissent être attribués à un service.--severity-textet--severity-numberdéfinissent le niveau (severity-numberva de 1 à 24).--bodydéfinit le message de log.--otlp-attributesdéfinit des attributs au niveau de la ressource (key="value",key=true, oukey=<integer>).--telemetry-attributesdéfinit les attributs propres à chaque enregistrement.
5
Générer des traces
Envoyez des traces à plusieurs spans provenant de plusieurs services sains, ainsi que d’une dépendance défaillante. Cela donne au Service Map une forme réaliste, globalement saine, avec un service en erreur, et alimente les vues d’erreur :--child-spansgénère ce nombre de spans enfants par trace, ce qui donne à chacune une vraie profondeur.--span-durationdéfinit la durée de chaque span (par exemple120ms,2s).--status-codeaccepte l’une des valeursUnset,Error,Ok(ou0,1,2). UtilisezErrorpour tester les vues d’erreur.--span-linksajoute des liens entre les spans.--workersexécute plusieurs générateurs en parallèle afin d’obtenir un volume plus élevé et plus varié.
6
Générer des métriques
Envoyez les trois types de métriques les plus courants afin que les tableaux de bord disposent de compteurs, de jauges et d’une distribution. Contrairement à certains générateurs,telemetrygen prend en compte --duration pour les métriques ; aucun arrêt manuel n’est donc nécessaire :--metric-type accepte Gauge, Sum, Histogram ou ExponentialHistogram. --otlp-metric-name donne un nom à la série afin que vous puissiez la retrouver dans l’UI, et --aggregation-temporality vaut delta ou cumulative.7
Vérifiez dans ClickStack
Ouvrez la ClickStack UI depuis la console ClickHouse Cloud. Dans la vueSearch, réglez la plage de temps sur Last 15 minutes et basculez la source entre Logs et Traces. Filtrez sur ServiceName pour afficher les services frontend, checkout, cart et payment, puis sur SeverityText pour trouver les logs d’avertissement et d’erreur. Ouvrez une trace payment pour voir les spans enfants et le statut d’erreur. Ouvrez le Chart Explorer, sélectionnez Metrics et créez un graphique à partir de l’un des noms de métrique définis ci-dessus (par exemple http.server.requests) pour vérifier l’ingestion des métriques.