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

Сбор данных с OpenTelemetry

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

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

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

Коллектор OpenTelemetry ClickStack включен в большинство распределений ClickStack, включая:

Автономно

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

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

  • Запустив собственный коллектор OpenTelemetry и указав его на ClickHouse - смотрите ниже.
  • Отправляя данные напрямую в ClickHouse, используя альтернативные инструменты, такие как Vector, Fluentd и т.д., или даже стандартное распределение OTel contrib collector.
Мы рекомендуем использовать коллектор OpenTelemetry 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=<YOUR_INGESTION_API_KEY>'

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


# clickhouse-agent-config.yaml
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 setup
  otlphttp/hdx:
    endpoint: 'http://localhost:4318'
    headers:
      authorization: <YOUR_API_INGESTION_KEY>
    compression: gzip

  # gRPC setup (alternative)
  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 # Modified as 2 collectors running on same host
  pipelines:
    logs:
      receivers: [filelog]
      processors: [batch]
      exporters: [otlphttp/hdx]