Перейти к основному содержанию
Это руководство интегрируется с:
✅ Журналы✅ Метрики✅ Трассировка

Установка слоёв OpenTelemetry для Lambda

Проект OpenTelemetry предоставляет отдельные слои Lambda для следующих задач:
  1. Автоматически инструментировать код вашей Lambda-функции с помощью средств автоинструментирования OpenTelemetry.
  2. Передавать собранные журналы, метрики и трассировку в ClickStack.

Добавление слоя автоинструментирования для конкретного языка

Слои автоинструментирования Lambda для конкретных языков автоматически добавляют в код вашей Lambda-функции пакет автоинструментирования OpenTelemetry для соответствующего языка. Для каждого языка и региона используется свой ARN слоя. Если ваша Lambda-функция уже инструментирована с помощью OpenTelemetry SDK, этот шаг можно пропустить. Чтобы начать:
  1. В разделе Layers нажмите “Add a layer”
  2. Выберите specify an ARN и укажите правильный ARN в зависимости от языка, обязательно заменив <region> на свой регион (например, us-east-2):
arn:aws:lambda:<region>:184161586896:layer:opentelemetry-nodejs-0_7_0:1
Последние версии слоев доступны в репозитории OpenTelemetry Lambda Layers на GitHub.
  1. Настройте следующие переменные окружения для вашей Lambda-функции в разделе “Configuration” > “Environment variables”.
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-handler
OTEL_PROPAGATORS=tracecontext
OTEL_TRACES_SAMPLER=always_on

Установка слоя Lambda для OpenTelemetry Collector

Слой Lambda для коллектора позволяет пересылать журналы, метрики и трассировку из вашей функции Lambda в ClickStack без влияния на время отклика из-за задержки экспортера. Чтобы установить слой коллектора:
  1. В разделе Layers нажмите “Add a layer”
  2. Выберите specify an ARN и укажите правильный ARN в зависимости от архитектуры, обязательно заменив <region> на свой регион (например, us-east-2):
arn:aws:lambda:<region>:184161586896:layer:opentelemetry-collector-amd64-0_8_0:1
  1. Добавьте в проект следующий файл collector.yaml, чтобы настроить коллектор на отправку данных в ClickStack:
# collector.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 'localhost:4317'
      http:
        endpoint: 'localhost:4318'

processors:
  batch:
  decouple:

exporters:
  otlphttp:
    endpoint: "<YOU_OTEL_COLLECTOR_HTTP_ENDPOINT>"
    compression: gzip

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch, decouple]
      exporters: [otlphttp]
    metrics:
      receivers: [otlp]
      processors: [batch, decouple]
      exporters: [otlphttp]
    logs:
      receivers: [otlp]
      processors: [batch, decouple]
      exporters: [otlphttp]
  1. Добавьте следующую переменную окружения:
OPENTELEMETRY_COLLECTOR_CONFIG_FILE=/var/task/collector.yaml

Проверка установки

После развертывания слоев вы должны увидеть в HyperDX трассировки, автоматически собранные из вашей Lambda-функции. Процессоры decouple и batching могут вносить задержку в сбор телеметрии, поэтому трассировки могут появляться не сразу. Чтобы отправлять собственные журналы или метрики, вам потребуется добавить в код инструментацию с помощью OpenTelemetry SDK для вашего языка.

Устранение неполадок

Пользовательское инструментирование не отправляется

Если вы не видите вручную определённую трассировку или другие данные телеметрии, возможно, вы используете несовместимую версию пакета OpenTelemetry API. Убедитесь, что версия вашего пакета OpenTelemetry API не выше версии, включённой в AWS Lambda.

Включение отладочных журналов SDK

Установите для переменной окружения OTEL_LOG_LEVEL значение DEBUG, чтобы включить отладочные журналы OpenTelemetry SDK. Это поможет убедиться, что слой автоинструментирования корректно подключает инструментацию к вашему приложению.

Включение отладочного журнала коллектора

Чтобы упростить отладку проблем с коллектором, можно включить отладочный журнал: для этого измените файл конфигурации коллектора, добавив экспортёр logging, и установите в разделе telemetry уровень логирования debug, чтобы включить более подробное логирование в слое Lambda для OpenTelemetry Collector.
# collector.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 'localhost:4317'
      http:
        endpoint: 'localhost:4318'

exporters:
  logging:
    verbosity: detailed
  otlphttp:
    endpoint: "<YOU_OTEL_COLLECTOR_HTTP_ENDPOINT>"
    compression: gzip

service:
  telemetry:
    logs:
      level: "debug"
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch, decouple]
      exporters: [otlphttp, logging]
    metrics:
      receivers: [otlp]
      processors: [batch, decouple]
      exporters: [otlphttp, logging]
    logs:
      receivers: [otlp]
      processors: [batch, decouple]
      exporters: [otlphttp, logging]
Последнее изменение 10 июня 2026 г.