- 필수 기능
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- 디지털 경험
- 소프트웨어 제공
- 보안
- 로그 관리
- 관리
- 인프라스트럭처
- ci
- containers
- csm
- ndm
- otel_guides
- overview
- slos
- synthetics
- tests
- 워크플로
Datadog 포워더(Forwarder) 람다 기능/함수는 AWS 람다 트레이스, 향상된 메트릭, 커스텀 메트릭 및 로그를 수집하는 데 필요합니다.
Datadog CLI는 기존 Lambda 함수의 설정을 변경하여, 새롭게 배포할 필요 없이 계측하도록 해줍니다. 가장 빠르게 시작하는 방법은 Datadog의 서버리스 모니터링을 이용하는 것입니다.
또한 CI/CD 파이프라인에 명령을 추가하여 모든 서버리스 응용프로그램에 대한 계측을 활성화할 수 있습니다. Datadog CLI 명령에 의해 변경된 내용이 재정의되지 않도록 일반 서버리스 응용 프로그램 배포 후 명령을 실행합니다.
NPM 또는 Yarn과 함께 Datadog CLI를 설치합니다:
# NPM
npm install -g @datadog/datadog-ci
# Yarn
yarn global add @datadog/datadog-ci
기능을 계측하려면 AWS 증명서과 함께 다음 명령을 실행합니다.
datadog-ci lambda instrument -f <functionname> -f <another_functionname> -r <aws_region> -v <layer_version> --forwarder <forwarder_arn>
플레이스홀더 채우기:
<functionname>
및 <another_functionname>
를 람다 함수 이름으로 대체합니다.<aws_region>
을 AWS 리전 이름으로 대체합니다.<layer_version>
으로 대체하세요. 최신 버전은 22
입니다.<forwarder_arn>
을 포워더(Forwarder) ARN으로 대체합니다(포워더(Forwarder) 설명서 참조).예를 들어:
datadog-ci lambda instrument -f my-function -f another-function -r us-east-1 -v 22 --forwarder "arn:aws:lambda:us-east-1:000000000000:function:datadog-forwarder"
코드 서명에 사용할 람다 함수가 구성되어 있는 경우 Datadog 서명 프로파일 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가해야 Datadog CLI를 사용해 계측할 수 있습니다.
추가 정보와 추가 파라미터는 CLI 설명서에서 찾을 수 있습니다.
Datadog 서버리스 플러그인은 레이어를 사용하여 Datadog Lambda 라이브러리를 함수에 자동으로 추가하고 Datadog 포워더를 통해 메트릭, 트레이스 및 로그를 Datadog으로 전송하도록 함수를 설정합니다.
코드 서명에 사용할 람다 함수가 구성되어 있는 경우 Datadog 서명 프로파일 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 [코드 서명 설정][4]에 추가해야 Datadog 서버리스 플러그인을 설치할 수 있습니다.
Datadog 서버리스 플러그인을 설치 및 설정하려면 다음 단계를 따르세요:
yarn add --dev serverless-plugin-datadog
serverless.yml
에서 다음을 추가합니다:plugins:
- serverless-plugin-datadog
serverless.yml
에서 다음 섹션도 추가합니다:custom:
datadog:
forwarderArn: # The Datadog Forwarder ARN goes here.
Datadog 람다 라이브러리는 레이어나 젬(GEM)으로 설치할 수 있습니다. 대부분의 함수의 경우 Datadog는 라이브러리를 레이어로 설치하는 것을 권장합니다. 람다 함수가 컨테이너 이미지로 구축된 경우 라이브러리를 젬으로 설치해야 합니다.
datadog-lambda
젬의 부 버전은 항상 레이어 버전과 일치해야 합니다. 예를 들어 datadog-lambda v0.5.0는 레이어 버전 5 콘텐츠와 일치해야 합니다.
다음 형식에 맞추어 ARN을 사용해 Lambda 함수의 레이어를 설정합니다.
# For us,us3,us5,eu regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:<VERSION>
# For us-gov regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:<VERSION>
사용 가능한 RUNTIME
옵션은 Ruby2-7
과 Ruby3-2
입니다. 최신 VERSION
버전은 22
입니다. 예시:
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Ruby3-2:22
코드 서명에 사용할 람다 함수가 구성되어 있는 경우 Datadog 서명 프로파일 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가해야 Datadog 람다 라이브러리를 레이어로 추가할 수 있습니다.
사전 빌드된 Datadog 람다 레이어를 사용할 수 없는 경우 다음을 Gemfile에 대신 추가할 수 있습니다.
gem 'datadog-lambda'
gem 'ddtrace'
ddtrace
는 네이티브 확장을 포함하며 네이티브 확장은 아마존 리눅스(Amazon Linux)에 대해 컴파일되어야 AWS 람바와 함께 작동할 수 있습니다. 그러므로 Datadog은 람다를 컨테이너 이미지로 빌드하고 구축할 것을 권장합니다. 함수를 컨테이너 이미지로 구축할 수 없고 Datadog APM을 사용하길 원한다면 Datadog은 람다 라이브러리를 gem 대신 레이어로 설치할 것을 권장합니다.
함수의 도커 파일에서 bundle install
실행 전 gcc
, gmp-devel
, make
를 설치하여 네이티브 확장이 성공적으로 컴파일되도록 합니다.
FROM <base image>
# assemble your container image
RUN yum -y install gcc gmp-devel make
RUN bundle config set path 'vendor/bundle'
RUN bundle install
Datadog 애플리케이션 성능 모니터링(APM)을 활성화하고 Datadog 람다 라이브러리에서 제공하는 래퍼(wrapper)를 사용해 람다 핸들러 함수를 래핑합니다.
require 'datadog/lambda'
Datadog::Lambda.configure_apm do |c|
# Enable the instrumentation
end
def handler(event:, context:)
Datadog::Lambda.wrap(event, context) do
return { statusCode: 200, body: 'Hello World' }
end
end
Datadog 포워더 람다 함수를 함수의 각 로그 그룹에 보냅니다. 이를 통해 Datadog에 메트릭, 트레이스와 로그를 전송할 수 있습니다.
선택 사항이지만 Datadog은 통합 서비스 태깅 설명서에 따라 env
,service
및 version
태그를 사용해 서버리스 애플리케이션을 태깅할 것을 권장합니다.
위의 단계에 따라 함수를 설정한 후 서버리스 홈페이지에서 메트릭, 로그 및 트레이스를 확인합니다.
커스텀 메트릭 또는 스팬을 제출하려면 아래 샘플 코드를 참조하세요:
require 'ddtrace'
require 'datadog/lambda'
Datadog::Lambda.configure_apm do |c|
# Enable the instrumentation
end
def handler(event:, context:)
# Apply the Datadog wrapper
Datadog::Lambda::wrap(event, context) do
# Add custom tags to the lambda function span,
# does NOT work when X-Ray tracing is enabled
current_span = Datadog::Tracing.active_span
current_span.set_tag('customer.id', '123456')
some_operation()
Datadog::Tracing.trace('hello.world') do |span|
puts "Hello, World!"
end
# Submit a custom metric
Datadog::Lambda.metric(
'coffee_house.order_value', # metric name
12.45, # metric value
time: Time.now.utc, # optional, must be within last 20 mins
"product":"latte", # tag
"order":"online" # another tag
)
end
end
# Instrument the function
def some_operation()
Datadog::Tracing.trace('some_operation') do |span|
# Do something here
end
end
커스텀 메트릭 제출에 대한 자세한 내용은 서버리스 커스텀 메트릭을 참조하세요. 커스텀 계측에 대한 자세한 내용은 커스텀 계측의 Datadog APM 설명서를 참조하세요.
Additional helpful documentation, links, and articles: