- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog Forwarder Lambda 関数は、AWS Lambda トレース、拡張メトリクス、カスタムメトリクス、ログの取り込みに必要です。
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>
関数をインスツルメントするには、AWS CDK アプリの Stack
オブジェクトに DatadogServerless
変換と CfnMapping
を追加します。以下の Python のサンプルコードを参照してください (他の言語での使用方法も同様です)。
<functionname>
と <another_functionname>
を Lambda 関数名に置き換えます。<aws_region>
を AWS リージョン名に置き換えます。<layer_version>
を目的のバージョンの Datadog Lambda ライブラリに置き換えます。最新バージョンは 21
です。<forwarder_arn>
を Forwarder ARN に置き換えます (Forwarder のドキュメントを参照)。例:
datadog-ci lambda instrument -f my-function -f another-function -r us-east-1 -v 21 --forwarder "arn:aws:lambda:us-east-1:000000000000:function:datadog-forwarder"
Lambda 関数が、コード署名を使用するよう構成してある場合、Datadog CLI でインスツルメントするには事前に Datadog の署名プロフィール ARN (arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
) を関数のコード署名構成に追加する必要があります。
CLI のドキュメントに詳細と追加のパラメーターがあります。
Datadog Serverless Plugin は、レイヤーを使用して Datadog Lambda ライブラリを関数に自動的に追加し、Datadog Forwarder を介してメトリクス、トレース、ログを Datadog に送信するように関数を構成します。
Lambda 関数が、コード署名を使用するよう構成してある場合、Datadog Serverless Plugin をインストールする前に Datadog の署名プロフィール ARN (arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
) を関数のコード署名構成に追加する必要があります。
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 Lambda ライブラリは、レイヤーまたは gem としてインストールできます。Datadog では、ほとんどの関数でライブラリをレイヤーとしてインストールすることを推奨しています。お使いの Lambda 関数がコンテナイメージとしてデプロイされている場合は、ライブラリを gem としてインストールする必要があります。
datadog-lambda
gem のマイナーバージョンは、常にレイヤーのバージョンに一致します。たとえば、datadog-lambda v0.5.0 は、レイヤーバージョン 5 のコンテンツに一致します。
以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。
# us、us3、us5、eu リージョンの場合
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:<VERSION>
# 米国政府リージョンの場合
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:<VERSION>
使用できる RUNTIME
オプションは、Ruby2-7
と Ruby3-2
です。最新の VERSION
は 21
です。例:
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Ruby3-2:21
Lambda 関数が、コード署名を使用するよう構成してある場合、Datadog Lambda ライブラリをレイヤーとして追加するには事前に Datadog の署名プロフィール ARN (arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc
) を関数のコード署名構成に追加する必要があります。
構築済みの Datadog Lambda レイヤーを使用できない場合、代替として以下を Gemfile に追加することができます。
gem 'datadog-lambda'
gem 'ddtrace'
ddtrace
には、AWS Lambda で動作するよう Amazon Linux 用にコンパイルする必要のあるネイティブ拡張機能が含まれています。そのため、Datadog では Lambda をコンテナイメージとして構築しデプロイすることを推奨しています。AWS Lambda を使用するが関数をコンテナイメージとしてデプロイできない、という場合は、Lambda ライブラリを gem ではなくレイヤーとしてインストールすることをお勧めします。
お使いの関数の Dockerfile で bundle install
を実行する前に、gcc
、gmp-devel
、make
をインストールし、ネイティブ拡張機能を正常にコンパイルします。
FROM <base image>
# コンテナイメージをアセンブル
RUN yum -y install gcc gmp-devel make
RUN bundle config set path 'vendor/bundle'
RUN bundle install
Datadog APM を有効にし、Datadog Lambda ライブラリが提供するラッパーを使用して Lambda ハンドラー関数をラップします。
require 'datadog/lambda'
Datadog::Lambda.configure_apm do |c|
# インスツルメンテーションを有効にします
end
def handler(event:, context:)
Datadog::Lambda.wrap(event, context) do
return { statusCode: 200, body: 'Hello World' }
end
end
関数の各ロググループに Datadog Forwarder Lambda 関数をサブスクライブします。これにより、メトリクス、トレース、ログを Datadog へ送信できるようになります。
オプションではありますが、Datadog では以下の統合サービスタグ付けのドキュメントに従いサーバーレスアプリケーションに env
、service
、version
タグをタグ付けすることをお勧めします。
以上の方法で関数を構成すると、Serverless Homepage でメトリクス、ログ、トレースを確認できるようになります。
カスタムメトリクスまたはスパンの送信をご希望の場合は、以下のコード例をご参照ください。
require 'ddtrace'
require 'datadog/lambda'
Datadog::Lambda.configure_apm do |c|
# インスツルメンテーションを有効にします
end
def handler(event:, context:)
# Datadog ラッパーを適用します
Datadog::Lambda::wrap(event, context) do
# Lambda 関数スパンにカスタムタグを追加します
# X-Ray トレーシングが有効になっている場合は機能しません
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
# カスタムメトリクスを送信します
Datadog::Lambda.metric(
'coffee_house.order_value', # メトリクス名
12.45, # メトリクス値
time: Time.now.utc, # オプション、過去 20 分以内である必要があります
"product":"latte", # タグ
"order":"online" # タグ
)
end
end
# 関数をインスツルメントします
def some_operation()
Datadog::Tracing.trace('some_operation') do |span|
# ここで何かをします
end
end
カスタムメトリクス送信の詳細については、Serverless Custom Metrics を参照してください。カスタムインスツルメンテーションの詳細については、カスタムインスツルメンテーションの Datadog APM ドキュメントを参照してください。
お役に立つドキュメント、リンクや記事: