Fornecendo contexto de rastreamento ao ClickHouse
clickhouse-client usando as flags --opentelemetry-traceparent e --opentelemetry-tracestate.
Se nenhum contexto de rastreamento pai for fornecido, ou se o contexto de rastreamento informado não estiver em conformidade com o padrão W3C mencionado acima, o ClickHouse poderá iniciar um novo rastreamento, com probabilidade controlada pela configuração opentelemetry_start_trace_probability.
Propagação do contexto de rastreamento
- Consultas para servidores ClickHouse remotos, como ao usar o motor de tabela Distributed.
- Função de tabela url. As informações do contexto de rastreamento são enviadas nos cabeçalhos HTTP.
Rastreamento de solicitações do ClickHouse Keeper
Habilitando o rastreamento do Keeper
Tipos de spans do Keeper
zookeeper.create— Criar um novo nózookeeper.get— Obter os dados do nózookeeper.set— Definir os dados do nózookeeper.remove— Remover um nózookeeper.list— Listar nós filhoszookeeper.exists— Verificar se um nó existezookeeper.multi— Executar várias operações de forma atômicazookeeper.client.requests_queue— Tempo gasto na fila de solicitações antes do envio
keeper.receive_request— Recebimento e análise da solicitação do clientekeeper.dispatcher.requests_queue— Solicitações na fila do dispatcherkeeper.write.pre_commit— Pré-processamento de solicitações de escrita antes do commit do Raftkeeper.write.commit— Processamento de solicitações de escrita após o commit do Raftkeeper.read.wait_for_write— Solicitações de leitura aguardando escritas das quais dependemkeeper.read.process— Processamento de solicitações de leiturakeeper.dispatcher.responses_queue— Respostas na fila do dispatcherkeeper.send_response— Envio da resposta ao cliente
Amostragem e desempenho
Rastreando o próprio ClickHouse
trace spans para cada consulta e para alguns estágios da execução da consulta, como o planejamento da consulta ou consultas distribuídas.
Para serem úteis, as informações de rastreamento precisam ser exportadas para um sistema de monitoramento compatível com OpenTelemetry, como Jaeger ou Prometheus. O ClickHouse evita depender de um sistema de monitoramento específico e, em vez disso, fornece os dados de rastreamento apenas por meio de uma tabela de sistema. As informações de trace span do OpenTelemetry exigidas pelo padrão são armazenadas na tabela system.opentelemetry_span_log.
A tabela deve estar habilitada na configuração do servidor; consulte o elemento opentelemetry_span_log no arquivo de configuração padrão config.xml. Ela é habilitada por padrão.
As tags ou atributos são salvos como dois arrays paralelos, contendo as chaves e os valores. Use ARRAY JOIN para trabalhar com eles.
Registro das configurações da consulta
Integração com sistemas de monitoramento
http://localhost:9411, no formato JSON v2 do Zipkin: