- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
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>
을 대체합니다. 최신 버전은 101
입니다.<forwarder_arn>
을 포워더(Forwarder) ARN으로 대체합니다(포워더(Forwarder) 설명서 참조).예를 들면 다음과 같습니다.
datadog-ci lambda instrument -f my-function -f another-function -r us-east-1 -v 101 --forwarder "arn:aws:lambda:us-east-1:000000000000:function:datadog-forwarder"
람다 함수가 코드 서명을 사용하도록 설정된 경우 Datadog CLI를 사용하여 계측하려면 먼저 Datadog의 서명 프로파일 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가해야 합니다.
람다 함수가 코드 서명에 사용되도록 설정한 경우 Datadog 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가해야만 Datadog CLI을 사용해 계측할 수 있습니다.
자세한 내용 및 추가 파라미터는 CLI 설명서에서 확인할 수 있습니다.
Datadog 서버리스 플러그인은 자동으로 레이어를 사용해 Datadog 람다 라이브러리를 함수에 추가하고 함수를 설정하여 Datadog 포워더를 통해 Datadog에 메트릭, 트레이스와 로그를 전송합니다.
람다 기능/함수가 코드 서명을 사용하도록 구성된 경우 Datadog 서버리스 플러그인을 설치하기 전에 함수의 코드 서명 설정에 Datadog의 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 추가해야 합니다.
람다 기능/함수가 코드 서명을 사용하도록 구성된 경우 Datadog 서버리스 플러그인을 설치하기 전에 기능/함수의 코드 서명 설정에 Datadog의 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 추가해야 합니다.
Datadog Serverless Plugin을 설치하고 설정하려면 다음 절차를 따라주세요.
yarn add --dev serverless-plugin-datadog
serverless.yml
에 다음을 추가합니다:plugins:
- serverless-plugin-datadog
serverless.yml
에서 다음 섹션도 추가합니다:custom:
datadog:
forwarderArn: # The Datadog Forwarder ARN goes here.
Datadog CloudFormation 매크로는 레이어를 사용하여 Datadog 람다 라이브러리를 함수에 추가하기 위해 SAM 응용프로그램 템플릿을 자동으로 변환하고, Datadog 포워더(Forwarder)를 통해 메트릭, 트레이스 및 로그를 Datadog로 전송하도록 함수를 구성합니다.
AWS 자격 증명을 사용해 다음 명령을 실행하여 CloudFormation 스택을 구축합니다. 해당 스택은 매크로 AWS 리소스를 설치합니다. 계정에서 주어진 지역에 대해 1회만 매크로를 설치하면 됩니다. create-stack
을 update-stack
으로 대체하여 최신 버전으로 매크로를 업데이트합니다.
aws cloudformation create-stack \
--stack-name datadog-serverless-macro \
--template-url https://datadog-cloudformation-template.s3.amazonaws.com/aws/serverless-macro/latest.yml \
--capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_IAM
매크로가 배포되어 사용할 준비가 되었습니다.
함수를 계측하려면 AWS::Serverless
가 SAM용으로 변환된 이후 Transform
섹션의 template.yml
에 다음을 추가합니다.
Transform:
- AWS::Serverless-2016-10-31
- Name: DatadogServerless
Parameters:
pythonLayerVersion: "101"
stackName: !Ref "AWS::StackName"
forwarderArn: "<FORWARDER_ARN>"
service: "<SERVICE>" # Optional
env: "<ENV>" # Optional
플레이스홀더 채우기:
<FORWARDER_ARN>
를 포워더(Forwarder) ARN으로 대체합니다(포워더(Forwarder) 설명서 참조).<SERVICE>
와 <ENV>
를 서비스와 환경값으로 대체합니다.람다 함수가 코드 서명을 사용하도록 구성된 경우 매크로를 사용려면 먼저 Datadog의 서명 프로필 ARN(`arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc``)을 함수의 코드 서명 설정에 추가해야 합니다.
람다 기능/함수가 코드 서명을 사용하도록 설정된 경우 매크로를 사용하려면 먼저 Datadog의 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 기능/함수의 코드 서명 설정에 추가해야 합니다.
자세한 정보와 추가 파라미터는 매크로 설명서에서 확인할 수 있습니다.
Datadog CloudFormation 매크로]1는 자동으로 AWS CDK에서 생성된 CloudFormation 템플릿을 변환하고 레이어를 사용해 Datadog 람바 라이브러리를 함수에 추가합니다. 그리고 함수를 설정하여 Datadog 포워더를 사용해 Datadog에 메트릭, 트레이스와 로그를 전송합니다.
AWS 자격 증명을 사용해 다음 명령을 실행하여 CloudFormation 스택을 구축합니다. 해당 스택은 매크로 AWS 리소스를 설치합니다. 계정에서 주어진 지역에 대해 1회만 매크로를 설치하면 됩니다. create-stack
을 update-stack
으로 대체하여 최신 버전으로 매크로를 업데이트합니다.
aws cloudformation create-stack \
--stack-name datadog-serverless-macro \
--template-url https://datadog-cloudformation-template.s3.amazonaws.com/aws/serverless-macro/latest.yml \
--capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_IAM
매크로가 배포되어 사용할 준비가 되었습니다.
함수를 계측하려면 DatadogServerless
변환과 CfnMapping
를 AWS CDK 앱의 Stack
개체에 추가합니다. 파이썬에서 아래 샘플 코드를 참조하세요(다른 언어 사용 시에도 유사함).
from aws_cdk import core
class CdkStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
self.add_transform("DatadogServerless")
mapping = core.CfnMapping(self, "Datadog",
mapping={
"Parameters": {
"pythonLayerVersion": "101",
"forwarderArn": "<FORWARDER_ARN>",
"stackName": self.stackName,
"service": "<SERVICE>", # Optional
"env": "<ENV>", # Optional
}
})
플레이스홀더 채우기:
<FORWARDER_ARN>
를 포워더(Forwarder) ARN으로 대체합니다(포워더(Forwarder) 설명서 참조).<SERVICE>
와 <ENV>
를 서비스와 환경값으로 대체합니다.람바 함수가 코드 서명을 사용하도록 설정된 경우 Datadog 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가한 다음 매크로를 사용해야 합니다.
자세한 정보와 추가 파라미터는 매크로 설명서에서 확인할 수 있습니다.
zappa_settings.json
에 다음 설정을 추가하세요.{
"dev": {
"layers": ["arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:<VERSION>"],
"lambda_handler": "datadog_lambda.handler.handler",
"aws_environment_variables": {
"DD_LAMBDA_HANDLER": "handler.lambda_handler",
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true",
},
}
}
<AWS_REGION>
, <RUNTIME>
, <VERSION>
을 적합한 값으로 대체하세요. 사용 가능한 RUNTIME
옵션은 Python312입니다. 최신 VERSION
은 Python38`, `Python39`, `Python310`, `Python311`, `Python312
입니다. 예시:# For regular regions
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python312:101
# For us-gov regions
arn:aws-us-gov:lambda:us-gov-east-1:002406178527:layer:Datadog-Python312:101
arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가하세요.zappa_settings.json
에 다음 설정을 추가하세요.{
"dev": {
"layers": ["arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-<RUNTIME>:<VERSION>"],
"lambda_handler": "datadog_lambda.handler.handler",
"aws_environment_variables": {
"DD_LAMBDA_HANDLER": "handler.lambda_handler",
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true",
},
}
}
<AWS_REGION>
, <RUNTIME>
, <VERSION>
을 적합한 값으로 대체하세요. 사용 가능한 RUNTIME
옵션은 Python38
, Python39
, Python310
, Python311
, Python312
입니다. 최신 VERSION
은 101
입니다. 예시:# For regular regions
arn:aws:lambda:us-east-1:417141415827:layer:Datadog-Python312:101
# For us-gov regions
arn:aws-us-gov:lambda:us-gov-east-1:002406178527:layer:Datadog-Python312:101
arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가하세요.Datadog 포워더 람바 함수를 각 함수의 로그 그룹에 보내 Datadog에 메트릭, 트레이스와 로그를 전송합니다.
config.json
에서 환경 변수 DD_TRACE_ENABLED
및 DD_FLUSH_TO_LOG
를 "true"
로 설정하세요.{
"version": "2.0",
"app_name": "hello-chalice",
"stages": {
"dev": {
"api_gateway_stage": "api",
"environment_variables": {
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true"
}
}
}
}
datadog_lambda
를 requirements.txt
에 추가합니다.app.py
에서 미들웨어로 datadog_lambda_wrapper
를 등록합니다.from chalice import Chalice, ConvertToMiddleware
from datadog_lambda.wrapper import datadog_lambda_wrapper
app = Chalice(app_name='hello-chalice')
app.register_middleware(ConvertToMiddleware(datadog_lambda_wrapper))
@app.route('/')
def index():
return {'hello': 'world'}
arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가하세요.arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가하세요.Datadog 포워더 람다 함수를 각 함수의 로그 그룹에 보내 Datadog에 메트릭, 트레이스와 로그를 전송합니다.
람다 함수를 컨테이너 이미지로 구축하는 경우 레이어로 Datadog 람다 라이브러리를 사용할 수 없습니다. 이미지 내 함수의 종속 항목으로 Datadog 람다 라이브러리를 설치해야 합니다.
pip install datadog-lambda
datadog-lambda
패키지의 부 버전은 항상 레이어 버전과 일치해야 하니 참고하세요. 예를 들어 datadog-lambda v0.5.0
는 레이어 버전 5 콘텐츠와 일치해야 합니다.
기능/함수를 설정하기 위해 다음 단계를 따르세요:
CMD
값을 datadog_lambda.handler.handler
로 설정하세요. AWS에서 설정하거나 Dockerfile에서 직접 설정할 수 있습니다. 양쪽에서 설정한 경우 AWS에서 설정한 값이 Dockerfile 값을 덮어쓰니 참고하세요.myfunc.handler
와 같이 DD_LAMBDA_HANDLER
를 원래 핸들러로 설정합니다.DD_TRACE_ENABLED
를 true
로 설정합니다.DD_FLUSH_TO_LOG
를 true
로 설정합니다.service
와 env
태그를 추가합니다.Datadog 포워더(Forwarder) 람다 함수를 각 함수의 로그 그룹에 등록하여 메트릭, 트레이스 및 로그를 Datadog로 전송합니다.
Datadog 람다 라이브러리를 레이어로 설치하거나(권장) 파이썬 패키지로 설치할 수 있습니다.
datadog-lambda
패키지의 부 버전은 항상 레이어 버전과 일치해야 하니 참고하세요. 예를 들어 datadog-lambda v0.5.0는 레이어 버전 5 콘텐츠와 일치해야 합니다.
다음 형식에 맞추어 ARN을 사용해 Lambda 함수의 레이어를 설정합니다.
# For us,us3,us5 and 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>
# For us-gov regions
arn:aws-us-gov:lambda:<AWS_REGION>:417141415827:layer:Datadog-<RUNTIME>:<VERSION>
사용 가능한 RUNTIME
옵션은 Python38
, Python39
, Python310
, Python311
, Python312
입니다. 최신 VERSION
은 101
입니다. 예시:
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python312:101
람다 함수가 코드 서명을 사용하도록 설정된 경우 Datadog 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가한 다음 레이어로 Datadog 람다 라이브러리를 추가할 수 있습니다.
람다 함수가 코드 서명을 사용하도록 설정된 경우 Datadog 서명 프로필 ARN(arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
)을 함수의 코드 서명 설정에 추가한 다음 레이어로 Datadog 람다 라이브러리를 추가할 수 있습니다.
datadog-lambda
와 종속 항목을 로컬에서 함수 프로젝트 폴더에 설치합니다. 참고: datadog-lambda
는 ddtrace
에 따라 다릅니다. 해당 항목은 네이티브 확장을 사용하므로 리눅스(Linux) 환경에서 설치하고 컴파일해야 합니다. 예를 들어 서버리스 프레임워크에 dockerizePip, AWS SAM에 –use-container를 사용할 수 있습니다. 자세한 정보는 함수 구축 패키지에 종속 항목을 추가하는 방법를 참조하세요.
pip install datadog-lambda -t ./
최신 릴리스를 참조하세요.
기능/함수를 설정하기 위해 다음 단계를 따르세요:
datadog_lambda.handler.handler
로 설정하세요.DD_LAMBDA_HANDLER
를 myfunc.handler
와 같이 기존 핸들러로 설정합니다.DD_TRACE_ENABLED
를 true
로 설정합니다.DD_FLUSH_TO_LOG
를 true
로 설정합니다.service
및 env
태그를 기능/함수에 추가합니다.Datadog 포워더 람바 함수를 각 함수의 로그 그룹에 보내 Datadog에 메트릭, 트레이스와 로그를 전송합니다.
부수적인 옵션이긴 하나 Datadog는 통합 서비스 태깅 설명서에 따라 env
,service
및 version
태그를 사용하여 서버리스 애플리케이션에 태그를 지정할 것을 권장합니다.
위의 단계에 따라 기능/함수을 설정한 후 서버리스 홈페이지에서 메트릭, 로그 및 트레이스를 확인합니다.
커스텀 메트릭 또는 스팬(span)을 제출하려면 아래 샘플 코드를 참조하세요:
import time
from ddtrace import tracer
from datadog_lambda.metric import lambda_metric
def lambda_handler(event, context):
# add custom tags to the lambda function span,
# does NOT work when X-Ray tracing is enabled
current_span = tracer.current_span()
if current_span:
current_span.set_tag('customer.id', '123456')
# submit a custom span
with tracer.trace("hello.world"):
print('Hello, World!')
# submit a custom metric
lambda_metric(
metric_name='coffee_house.order_value',
value=12.45,
timestamp=int(time.time()), # optional, must be within last 20 mins
tags=['product:latte', 'order:online']
)
return {
'statusCode': 200,
'body': get_message()
}
# trace a function
@tracer.wrap()
def get_message():
return 'Hello from serverless!'
커스텀 메트릭 제출에 대한 자세한 정보는 여기를 참조하세요. 커스텀 계측에 대한 추가 정보는 커스텀 계측에 대한 Datadog APM 설명서를 참조하세요.
추가 유용한 문서, 링크 및 기사: