Перейти к основному содержанию
Перейти к основному содержанию

Приём данных с помощью OpenTelemetry

Все данные поступают в ClickStack через экземпляр коллектора OpenTelemetry (OTel), который является основной точкой входа для логов, метрик, трейсов и данных сессий. Мы рекомендуем использовать для этого экземпляра официальный дистрибутив коллектора ClickStack.

Пользователи отправляют данные в этот коллектор из языковых SDK или через агенты сбора данных, собирающие инфраструктурные метрики и логи (например, экземпляры OTel collector в роли агента или другие технологии, такие как Fluentd или Vector).

Установка коллектора OpenTelemetry ClickStack

Коллектор OpenTelemetry ClickStack включён в большинство вариантов развёртывания ClickStack, включая:

Автономный режим

OTel collector из ClickStack также может быть развернут автономно, независимо от других компонентов стека.

Если вы используете дистрибутив HyperDX-only, вы самостоятельно отвечаете за доставку данных в ClickHouse. Это можно сделать следующими способами:

  • Запустить собственный коллектор OpenTelemetry и направить его в ClickHouse — см. ниже.
  • Отправлять данные напрямую в ClickHouse с помощью альтернативных инструментов, таких как Vector, Fluentd и т. д., либо даже использовать стандартный дистрибутив OTel contrib collector.
Мы рекомендуем использовать OTel collector из ClickStack

Это позволяет использовать стандартизированную ингестию, жёстко заданные схемы и готовую совместимость с интерфейсом HyperDX. Применение стандартной схемы обеспечивает автоматическое определение источников и преднастроенные сопоставления столбцов.

Для получения более подробной информации см. раздел «Развертывание коллектора».

Отправка данных OpenTelemetry

Чтобы отправлять данные в ClickStack, направьте ваши инструментированные с помощью OpenTelemetry приложения на следующие конечные точки, предоставляемые коллектором OpenTelemetry:

  • HTTP (OTLP): http://localhost:4318
  • gRPC (OTLP): localhost:4317

Для большинства языковых SDK и библиотек телеметрии, которые поддерживают OpenTelemetry, достаточно задать переменную окружения OTEL_EXPORTER_OTLP_ENDPOINT в своем приложении:

export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318

Кроме того, требуется заголовок авторизации, содержащий ключ API для ингестии данных. Вы можете найти этот ключ в приложении HyperDX в разделе Team Settings → API Keys.

Ключи ингестии

Для языковых SDK это можно задать либо функцией init, либо через переменную окружения OTEL_EXPORTER_OTLP_HEADERS, например:

OTEL_EXPORTER_OTLP_HEADERS='authorization=<ВАШ_КЛЮЧ_API_ПРИЁМА>'

Агенты также должны включать этот заголовок авторизации во все взаимодействия по OTLP. Например, при развёртывании contrib-дистрибутива OTel collector в роли агента можно использовать экспортёр OTLP. Пример конфигурации агента, который читает этот структурированный файл логов, приведён ниже. Обратите внимание на необходимость указать ключ авторизации — см. <YOUR_API_INGESTION_KEY>.

# clickhouse-agent-config.yaml \{#clickhouse-agent-configyaml}
receivers:
  filelog:
    include:
      - /opt/data/logs/access-structured.log
    start_at: beginning
    operators:
      - type: json_parser
        timestamp:
          parse_from: attributes.time_local
          layout: '%Y-%m-%d %H:%M:%S'
exporters:
  # Настройка HTTP
  otlphttp/hdx:
    endpoint: 'http://localhost:4318'
    headers:
      authorization: <YOUR_API_INGESTION_KEY>
    compression: gzip
 
  # Настройка gRPC (альтернативный вариант)
  otlp/hdx:
    endpoint: 'localhost:4317'
    headers:
      authorization: <YOUR_API_INGESTION_KEY>
    compression: gzip
processors:
  batch:
    timeout: 5s
    send_batch_size: 1000
service:
  telemetry:
    metrics:
      address: 0.0.0.0:9888 # Изменено, так как на одном хосте работают 2 коллектора
  pipelines:
    logs:
      receivers: [filelog]
      processors: [batch]
      exporters: [otlphttp/hdx]