Fournir le contexte de trace à ClickHouse
clickhouse-client des en-têtes de contexte de trace conformes à la recommandation Trace Context à l’aide des options --opentelemetry-traceparent et --opentelemetry-tracestate.
Si aucun contexte de trace parent n’est fourni, ou si le contexte de trace fourni n’est pas conforme à la norme W3C ci-dessus, ClickHouse peut démarrer une nouvelle trace, avec une probabilité contrôlée par le paramètre opentelemetry_start_trace_probability.
Propagation du contexte de trace
- Requêtes adressées à des serveurs ClickHouse distants, par exemple lors de l’utilisation du moteur de table Distributed.
- La fonction de table url. Les informations de contexte de trace sont envoyées dans les en-têtes HTTP.
Traçage des requêtes ClickHouse Keeper
Activation du traçage de Keeper
Types de spans de Keeper
zookeeper.create— Créer un nouveau nœudzookeeper.get— Récupérer les données du nœudzookeeper.set— Définir les données du nœudzookeeper.remove— Supprimer un nœudzookeeper.list— Lister les nœuds enfantszookeeper.exists— Vérifier si un nœud existezookeeper.multi— Exécuter plusieurs opérations de manière atomiquezookeeper.client.requests_queue— Temps passé en file d’attente avant l’envoi des requêtes
keeper.receive_request— Réception et analyse de la requête du clientkeeper.dispatcher.requests_queue— Mise en file d’attente des requêtes dans le dispatcherkeeper.write.pre_commit— Prétraitement des requêtes d’écriture avant le Raft commitkeeper.write.commit— Traitement des requêtes d’écriture après le Raft commitkeeper.read.wait_for_write— Requêtes de lecture en attente des écritures dont elles dépendentkeeper.read.process— Traitement des requêtes de lecturekeeper.dispatcher.responses_queue— Mise en file d’attente des réponses dans le dispatcherkeeper.send_response— Envoi de la réponse au client
Échantillonnage et performances
Traçage de ClickHouse lui-même
trace spans pour chaque requête et pour certaines étapes de l’exécution des requêtes, comme la planification des requêtes ou les requêtes distribuées.
Pour être utiles, les informations de traçage doivent être exportées vers un système de supervision compatible avec OpenTelemetry, comme Jaeger ou Prometheus. ClickHouse évite de dépendre d’un système de supervision particulier et fournit uniquement les données de traçage via une table système. Les informations sur les trace spans OpenTelemetry requises par la norme sont stockées dans la table system.opentelemetry_span_log.
La table doit être activée dans la configuration du serveur ; voir l’élément opentelemetry_span_log dans le fichier de configuration par défaut config.xml. Elle est activée par défaut.
Les tags ou attributs sont enregistrés sous forme de deux tableaux parallèles contenant les clés et les valeurs. Utilisez ARRAY JOIN pour les exploiter.
Paramètres de journalisation des requêtes
Intégration avec les systèmes de supervision
http://localhost:9411, au format JSON Zipkin v2 :