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 ライブラリに置き換えます。最新バージョンは 26 です。<forwarder_arn> を Forwarder ARN に置き換えます (Forwarder のドキュメントを参照)。
例:
datadog-ci lambda instrument -f my-function -f another-function -r us-east-1 -v 26 --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 サーバーレスプラグインをインストールして構成するには、次の手順に従います。
- 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 Forwarder ARN またはインストールの詳細については、こちらを参照してください。追加の設定については、プラグインのドキュメントを参照してください。
インストール
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 は 26 です。例:
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Ruby3-2:26
Lambda 関数が、コード署名を使用するよう構成してある場合、Datadog Lambda ライブラリをレイヤーとして追加するには事前に Datadog の署名プロフィール ARN (arn:aws:signer:us-east-1:464622532012:/signing-profiles/DatadogLambdaSigningProfile/9vMI9ZAGLc) を関数のコード署名構成に追加する必要があります。
Gem の使用
構築済みの 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 Forwarder をインストールします。
- Datadog Forwarder を関数のロググループにサブスクライブします。