Skip to main content

[экспериментально] Поддержка OpenTelemetry

ClickHouse поддерживает OpenTelemetry — открытый стандарт для сбора трассировок и метрик из распределенного приложения.

Предупреждение

Поддержка стандарта экспериментальная и будет со временем меняться.

Обеспечение поддержки контекста трассировки в ClickHouse

ClickHouse принимает контекстную информацию трассировки через HTTP заголовок tracecontext, как описано в рекомендации W3C. Также он принимает контекстную информацию через нативный протокол, который используется для связи между серверами ClickHouse или между клиентом и сервером. Для ручного тестирования стандартный заголовок tracecontext, содержащий контекст трассировки, может быть передан в clickhouse-client через флаги: --opentelemetry-traceparent и --opentelemetry-tracestate.

Если входящий контекст трассировки не указан, ClickHouse может начать трассировку с вероятностью, задаваемой настройкой opentelemetry_start_trace_probability.

Распространение контекста трассировки

Контекст трассировки распространяется на нижестоящие сервисы в следующих случаях:

  • При использовании запросов к удаленным серверам ClickHouse, например, при использовании движка таблиц Distributed.

  • При использовании табличной функции url. Информация контекста трассировки передается в HTTP заголовки.

Как ClickHouse выполняет трассировку

ClickHouse создает trace spans для каждого запроса и некоторых этапов выполнения запроса, таких как планирование запросов или распределенные запросы.

Чтобы анализировать информацию трассировки, ее следует экспортировать в систему мониторинга, поддерживающую OpenTelemetry, такую как Jaeger или Prometheus. ClickHouse не зависит от конкретной системы мониторинга, вместо этого предоставляя данные трассировки только через системную таблицу. Информация о диапазоне трассировки в OpenTelemetry, требуемая стандартом, хранится в системной таблице system.opentelemetry_span_log.

Таблица должна быть включена в конфигурации сервера, смотрите элемент opentelemetry_span_log в файле конфигурации config.xml. По умолчанию таблица включена всегда.

Теги или атрибуты сохраняются в виде двух параллельных массивов, содержащих ключи и значения. Для работы с ними используйте ARRAY JOIN.