Перейти к основному содержанию
КраткоЭто руководство показывает, как организовать мониторинг функций AWS Lambda с помощью ClickStack, используя Rotel Lambda Extension для сбора и прямой отправки журналов функций, журналов самого расширения и данных OpenTelemetry в ClickHouse. Вы узнаете, как:
  • Развернуть слой Rotel Lambda Extension для своих функций Lambda
  • Настроить расширение для экспорта журналов и трейсов в ClickStack
  • При необходимости отключить CloudWatch Logs, чтобы снизить расходы
Такой подход может значительно сократить ваши затраты на обсервабилити AWS Lambda, полностью обходя CloudWatch Logs.Требуемое время: 5–10 минут

Интеграция с существующими функциями AWS Lambda

В этом разделе описано, как настроить существующие функции AWS Lambda для отправки журналов и трейсов в ClickStack с помощью расширения Rotel Lambda Extension.

Требования

  • Запущенный экземпляр ClickStack
  • Функции AWS Lambda, которые нужно отслеживать
  • AWS CLI, настроенный с необходимыми разрешениями
  • Роль выполнения AWS Lambda с разрешениями на добавление слоёв
1

Выберите подходящий слой расширения Rotel Lambda

Выберите слой Lambda, соответствующий архитектуре среды выполнения вашей Lambda-функции. Поле {version} зависит от региона AWS, в который выполняется развертывание. Актуальные номера версий для вашего региона смотрите на странице релизов.
АрхитектураARN
x86-64/amd64arn:aws:lambda:{region}:418653438961:layer:rotel-extension-amd64:{version}
arm64arn:aws:lambda:{region}:418653438961:layer:rotel-extension-arm64:{version}
Доступные регионы:
  • us-east-, us-west-
  • eu-central-1, eu-north-1, eu-west-
  • ca-central-1
  • ap-southeast-, ap-northeast-
  • ap-south-1
  • sa-east-1
2

Добавьте слой Rotel в функцию Lambda

В этих примерах замените {arch}, {region} и {version} на соответствующие значения, указанные выше.
Вариант 1: консоль AWS
  1. Откройте консоль AWS Lambda
  2. Перейдите к нужной функции Lambda
  3. Прокрутите страницу до раздела Layers и нажмите Add a layer
  4. Выберите Specify an ARN
  5. Введите ARN слоя Rotel:
  6. Нажмите Add
Вариант 2: AWS CLI
Вариант 3: AWS SAM
3

Настройте расширение для экспорта в ClickStack

Rotel Lambda Extension настраивается с помощью переменных окружения. Вам нужно настроить конечную точку экспортера OTLP так, чтобы она указывала на ваш экземпляр ClickStack. В примерах предполагается, что ваша функция AWS Lambda может обращаться к экземпляру ClickStack.
Базовая конфигурация (переменные окружения)
Добавьте эти переменные окружения в функцию Lambda:
Расширенная конфигурация (с использованием файла .env)
Для более сложных конфигураций создайте файл rotel.env в пакете вашей функции Lambda:rotel.env:
Затем задайте переменную окружения, указав этот файл:
Использование AWS Secrets Manager или Parameter Store
Для рабочих развертываний храните конфиденциальные значения, такие как ключи API, в AWS Secrets Manager или Parameter Store:Пример для AWS Secrets Manager:
Пример для AWS Parameter Store:
Необходимые разрешения IAM:Добавьте эти разрешения в роль Lambda:Для Secrets Manager:
Для Parameter Store:
Вызовы AWS API для получения секретов увеличивают задержку холодного старта на 100–150 мс. Секреты извлекаются батчами (до 10 за раз) только при инициализации, поэтому на последующие вызовы это не влияет.
4

Проверьте интеграцию

Вызовите свою Lambda-функцию, чтобы убедиться, что журналы отправляются в ClickStack:
Проверьте журналы Lambda на наличие ошибок:
5

Проверьте логи в HyperDX

После настройки войдите в HyperDX (интерфейс ClickStack) и убедитесь, что логи поступают:Проверьте наличие следующих ключевых атрибутов в логах:
  • service.name: имя вашей лямбда-функции
  • faas.name: имя функции AWS Lambda
  • faas.invocation_id: уникальный идентификатор вызова
  • cloud.provider: “aws”
  • cloud.platform: “aws_lambda”

Отключение CloudWatch Logs (оптимизация затрат)

По умолчанию AWS Lambda отправляет все журналы в CloudWatch Logs, и при большом масштабе это может быть дорого. После того как вы убедитесь, что журналы поступают в ClickStack, можно отключить логирование в CloudWatch, чтобы сократить затраты.
1

Удалите разрешения CloudWatch из роли выполнения

  1. Откройте консоль AWS и перейдите в AWS Lambda
  2. Перейдите к нужной функции Lambda
  3. Выберите ConfigurationPermissions
  4. Нажмите на имя роли выполнения, чтобы открыть консоль IAM
  5. Измените роль и удалите все действия logs:*:
    • Если используется пользовательская политика, отредактируйте её и удалите logs:CreateLogGroup, logs:CreateLogStream и logs:PutLogEvents
    • Если используется управляемая политика AWS AWSLambdaBasicExecutionRole, удалите её из роли
  6. Сохраните роль
2

Убедитесь, что логирование в CloudWatch отключено

Снова вызовите функцию и убедитесь, что:
  1. Новые потоки журналов в CloudWatch не создаются
  2. Журналы по-прежнему появляются в ClickStack/HyperDX

Добавление автоинструментирования OpenTelemetry

Rotel Lambda Extension без проблем работает со слоями автоинструментирования OpenTelemetry, собирая распределённые трейсы и метрики в дополнение к журналам.
1

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

AWS предоставляет слои автоинструментирования OpenTelemetry для нескольких языков:
ЯзыкШаблон ARN слоя
Node.jsarn:aws:lambda:{region}:901920570463:layer:aws-otel-nodejs-{arch}-ver-{version}
Pythonarn:aws:lambda:{region}:901920570463:layer:aws-otel-python-{arch}-ver-{version}
Javaarn:aws:lambda:{region}:901920570463:layer:aws-otel-java-agent-{arch}-ver-{version}
Последние версии доступны в репозитории AWS OpenTelemetry Lambda.
2

Добавьте оба слоя в функцию

Добавьте оба слоя: слой расширения Rotel и слой инструментирования:
3

Настройте автоинструментирование

Установите переменную окружения AWS_LAMBDA_EXEC_WRAPPER, чтобы включить автоинструментирование:Для Node.js:
Для Python:
Для Java:
4

Проверьте трейсы в HyperDX

После вызова функции:
  1. Перейдите в представление Traces в HyperDX
  2. Вы должны увидеть трейсы со спанами вашей Lambda-функции
  3. Трейсы будут коррелироваться с журналами по атрибутам trace_id и span_id

Примеры приложений

Ознакомьтесь с примером приложения на Python, демонстрирующего Rotel Lambda Extension:
  • Python + ClickHouse: Приложение на Python с ручной инструментацией OpenTelemetry, отправляющее трейсы и журналы напрямую в ClickHouse

Присоединяйтесь к сообществу Rotel

Если у вас есть вопросы о Rotel, присоединяйтесь к серверу Rotel в Discord и делитесь отзывами или задавайте вопросы. Также ознакомьтесь с Rotel Lambda Extension, чтобы внести улучшения.

Дополнительные ресурсы

  • Rotel Lambda Extension: Исходный код и подробная документация
  • Rotel Core: Лёгкий компонент плоскости данных OTEL, на котором построено расширение
Последнее изменение 25 июня 2026 г.