ClickHouse에 추적 컨텍스트 제공하기
--opentelemetry-traceparent 및 --opentelemetry-tracestate 플래그를 사용해 clickhouse-client에 전달할 수 있습니다.
부모 추적 컨텍스트가 제공되지 않거나 제공된 추적 컨텍스트가 위의 W3C 표준을 준수하지 않으면, ClickHouse는 opentelemetry_start_trace_probability 설정으로 제어되는 확률에 따라 새 trace를 시작할 수 있습니다.
추적 컨텍스트 전파
ClickHouse Keeper 요청 추적
Keeper 추적 활성화
Keeper 스팬 타입
zookeeper.create— 새 노드 생성zookeeper.get— 노드 데이터 가져오기zookeeper.set— 노드 데이터 설정zookeeper.remove— 노드 제거zookeeper.list— 하위 노드 목록 조회zookeeper.exists— 노드 존재 여부 확인zookeeper.multi— 여러 작업을 원자적으로 실행zookeeper.client.requests_queue— 전송 전 요청이 큐에서 대기한 시간
keeper.receive_request— 클라이언트의 요청을 수신하고 구문 분석keeper.dispatcher.requests_queue— dispatcher에서 요청이 큐에 대기하는 시간keeper.write.pre_commit— Raft commit 전 쓰기 요청 전처리keeper.write.commit— Raft commit 후 쓰기 요청 처리keeper.read.wait_for_write— 종속된 쓰기 작업을 기다리는 읽기 요청keeper.read.process— 읽기 요청 처리keeper.dispatcher.responses_queue— dispatcher에서 응답이 큐에 대기하는 시간keeper.send_response— 클라이언트에 응답 전송
샘플링 및 성능
ClickHouse 자체 추적
trace spans를 생성합니다.
이 추적 정보를 실제로 활용하려면 Jaeger 또는 Prometheus처럼 OpenTelemetry를 지원하는 모니터링 시스템으로 내보내야 합니다. ClickHouse는 특정 모니터링 시스템에 대한 종속성을 피하기 위해 추적 데이터를 시스템 테이블을 통해서만 제공합니다. 표준에서 요구하는 OpenTelemetry trace span 정보는 system.opentelemetry_span_log 테이블에 저장됩니다.
이 테이블은 서버 구성에서 활성화되어 있어야 합니다. 기본 구성 파일 config.xml의 opentelemetry_span_log 요소를 참조하십시오. 기본적으로 활성화되어 있습니다.
태그 또는 속성은 키와 값을 담는 2개의 병렬 배열로 저장됩니다. 이를 다루려면 ARRAY JOIN을 사용하십시오.
쿼리 설정 로그
모니터링 시스템과의 통합
http://localhost:9411에서 실행 중인 Zipkin 인스턴스로 Zipkin v2 JSON 포맷으로 푸시하려면 다음과 같습니다: