- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
datadoghq.com
Datadog サイトには AWS PrivateLink を、それ以外のサイトにはプロキシを使用してデータを送信することができます。Datadog は、サーバーレスアプリケーションのインスツルメンテーションを有効にするためのさまざまな方法を提供しています。以下からニーズに合った方法を選択してください。Datadog では、一般的に Datadog CLI の使用を推奨しています。アプリケーションがコンテナイメージとしてデプロイされる場合は、「コンテナイメージ」の指示に従うことが必要です。
Datadog CLI は、既存の Lambda 関数のコンフィギュレーションを修正し、新しいデプロイを必要とせずにインスツルメンテーションを可能にします。Datadog のサーバーレスモニタリングをすばやく開始するための最適な方法です。
Lambda 関数を構成する
Datadog APM を有効にし、Datadog Lambda ライブラリが提供するラッパーを使用して Lambda ハンドラー関数をラップします。
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 CLI クライアントをインストールする
npm install -g @datadog/datadog-ci
Datadog サーバーレスモニタリングに慣れていない場合は、クイックスタートとして最初のインストールを導くためにインタラクティブモードで Datadog CLI を起動し、残りのステップを無視することができます。本番アプリケーションに Datadog を恒久的にインストールするには、このステップをスキップし、残りのステップに従って通常のデプロイの_後に_ CI/CD パイプラインで Datadog CLI コマンドを実行します。
datadog-ci lambda instrument -i
AWS の認証情報を構成する
Datadog CLI は、AWS Lambda サービスへのアクセスを必要とし、AWS JavaScript SDK に依存して資格情報を解決します。AWS CLI を呼び出すときに使用するのと同じ方法を使用して、AWS の資格情報が構成されていることを確認します。
Datadog サイトを構成する
export DATADOG_SITE="<DATADOG_SITE>"
<DATADOG_SITE>
を に置き換えます。(右側で正しい SITE が選択されていることを確認してください)。
Datadog API キーを構成する
Datadog は、セキュリティと簡単なローテーションのために、AWS Secrets Manager に Datadog API キーを保存することを推奨します。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。Lambda 関数に必要な secretsmanager:GetSecretValue
IAM 権限があることを確認します。
export DATADOG_API_KEY_SECRET_ARN="<DATADOG_API_KEY_SECRET_ARN>"
迅速なテスト目的のために、Datadog API キーをプレーンテキストで設定することも可能です。
export DATADOG_API_KEY="<DATADOG_API_KEY>"
Lambda 関数をインスツルメントする
注: Lambda 関数は、まず開発環境またはステージング環境でインスツルメントしてください。インスツルメンテーションの結果が思わしくない場合は、同じ引数で uninstrument
を実行し、変更を元に戻してください。
Lambda 関数をインスツルメントするには、次のコマンドを実行します。
datadog-ci lambda instrument -f <functionname> -f <another_functionname> -r <aws_region> -v 20 -e 48
プレースホルダーを埋めるには
<functionname>
と <another_functionname>
は Lambda 関数の名前に置き換えます。また、--functions-regex
を使用すると、指定した正規表現にマッチする名前を持つ複数の関数を自動的にインスツルメントすることができます。<aws_region>
を AWS リージョン名に置き換えます。その他のパラメーターは、CLI ドキュメントに記載されています。
Datadog Serverless Plugin は、Datadog Lambda 拡張機能 を介してメトリクス、トレース、ログを Datadog に送信するように関数を自動的に構成します。
Datadog サーバーレスプラグインをインストールして構成するには、次の手順に従います。
Lambda 関数を構成する
Datadog APM を有効にし、Datadog Lambda ライブラリが提供するラッパーを使用して Lambda ハンドラー関数をラップします。
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 サーバーレスプラグインをインストールします。
serverless plugin install --name serverless-plugin-datadog
serverless.yml
を更新します:
custom:
datadog:
site: <DATADOG_SITE>
apiKeySecretArn: <DATADOG_API_KEY_SECRET_ARN>
プレースホルダーを埋めるには
<DATADOG_SITE>
を
に置き換えます。(右側で正しい SITE が選択されていることを確認してください)。<DATADOG_API_KEY_SECRET_ARN>
を、Datadog API キーが安全に保存されている AWS シークレットの ARN に置き換えます。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。また、secretsmanager:GetSecretValue
権限が必要です。迅速なテストのために、代わりに apiKey
を使用して、Datadog API キーをプレーンテキストで設定することができます。詳細および追加設定については、プラグインドキュメントを参照してください。
Datadog Lambda ライブラリのインストール
Lambda 関数をコンテナイメージとしてデプロイする場合は、Datadog Lambda ライブラリを Lambda レイヤーとして使用できません。代わりに、イメージ内に Datadog Lambda とトレーシングライブラリをパッケージ化する必要があります。
Gemfile に下記を追加します。
gem 'datadog-lambda'
gem 'ddtrace'
ddtrace
は、Amazon Linux が AWS Lambda で動作するためにコンパイルする必要があるネイティブ拡張機能を含んでいます。
お使いの関数の Dockerfile で 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 Lambda 拡張機能のインストール
Dockerfile に以下を追加して、Datadog Lambda 拡張機能をコンテナイメージに追加します。
COPY --from=public.ecr.aws/datadog/lambda-extension:<TAG> /opt/extensions/ /opt/extensions
<TAG>
を特定のバージョン番号 (たとえば 48
) または latest
に置き換えます。利用可能なタグのリストは、Amazon ECR リポジトリで確認できます。
Lambda 関数を構成する
Datadog APM を有効にし、Datadog Lambda ライブラリが提供するラッパーを使用して Lambda ハンドラー関数をラップします。
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 サイトと API キーの構成
DD_SITE
に
を設定します。(右側で正しい SITE が選択されていることを確認してください)。DD_API_KEY_SECRET_ARN
を、Datadog API キーが安全に保存されている AWS シークレットの ARN で設定します。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。また、secretsmanager:GetSecretValue
権限が必要です。迅速なテストのために、代わりに DD_API_KEY
を使用して、Datadog API キーをプレーンテキストで設定することができます。Datadog Lambda ライブラリのインストール
Datadog Lambda ライブラリは、レイヤーまたは gem としてインストールできます。Datadog では、ほとんどの関数でライブラリをレイヤーとしてインストールすることを推奨しています。お使いの Lambda 関数がコンテナイメージとしてデプロイされている場合は、ライブラリを gem としてインストールする必要があります。
datadog-lambda
gem のマイナーバージョンは、常にレイヤーのバージョンに一致します。たとえば、datadog-lambda v0.5.0 は、レイヤーバージョン 5 のコンテンツに一致します。
オプション A: 以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。
# Use this format for AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:20
# Use this format for AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:20
<AWS_REGION>
を us-east-1
などの有効な AWS リージョンに置き換えてください。RUNTIME
オプションは、Ruby2-7
または Ruby3-2
が利用可能です。
オプション B: もし、ビルド済みの Datadog Lambda レイヤーを使用できない場合は、Gemfile に追加して gem datadog-lambda
と ddtrace
をインストールすることができます
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>
# assemble your container image
RUN yum -y install gcc gmp-devel make
RUN bundle config set path 'vendor/bundle'
RUN bundle install
Datadog Lambda 拡張機能のインストール
オプション A: 以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。
# Use this format for x86-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:48
# Use this format for arm64-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM:48
# Use this format for x86-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:48
# Use this format for arm64-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:48
<AWS_REGION>
を us-east-1
などの有効な AWS リージョンに置き換えてください。
オプション B: Dockerfile に以下を追加して、Datadog Lambda 拡張機能をコンテナイメージに追加します。
COPY --from=public.ecr.aws/datadog/lambda-extension:<TAG> /opt/extensions/ /opt/extensions
<TAG>
を特定のバージョン番号 (たとえば 48
) または latest
に置き換えます。利用可能なタグのリストは、Amazon ECR リポジトリで確認できます。
Datadog Lambda ライブラリのインストール
Datadog Lambda ライブラリは、レイヤーまたは gem としてインストールできます。Datadog では、ほとんどの関数でライブラリをレイヤーとしてインストールすることを推奨しています。お使いの Lambda 関数がコンテナイメージとしてデプロイされている場合は、ライブラリを gem としてインストールする必要があります。
datadog-lambda
gem のマイナーバージョンは、常にレイヤーのバージョンに一致します。たとえば、datadog-lambda v0.5.0 は、レイヤーバージョン 5 のコンテンツに一致します。
オプション A: 以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。
# Use this format for AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-<RUNTIME>:20
# Use this format for AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:20
<AWS_REGION>
を us-east-1
などの有効な AWS リージョンに置き換えてください。RUNTIME
オプションは、Ruby2-7
または Ruby3-2
が利用可能です。
オプション B: もし、ビルド済みの Datadog Lambda レイヤーを使用できない場合は、Gemfile に追加して gem datadog-lambda
と ddtrace
をインストールすることができます
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>
# assemble your container image
RUN yum -y install gcc gmp-devel make
RUN bundle config set path 'vendor/bundle'
RUN bundle install
Datadog Lambda 拡張機能のインストール
オプション A: 以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。
# Use this format for x86-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-Extension:48
# Use this format for arm64-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-Extension-ARM:48
# Use this format for x86-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:48
# Use this format for arm64-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:48
<AWS_REGION>
を us-east-1
などの有効な AWS リージョンに置き換えてください。
オプション B: Dockerfile に以下を追加して、Datadog Lambda 拡張機能をコンテナイメージに追加します。
COPY --from=public.ecr.aws/datadog/lambda-extension:<TAG> /opt/extensions/ /opt/extensions
<TAG>
を特定のバージョン番号 (たとえば 48
) または latest
に置き換えます。利用可能なタグのリストは、Amazon ECR リポジトリで確認できます。
Lambda 関数を構成する
Datadog APM を有効にし、Datadog Lambda ライブラリが提供するラッパーを使用して Lambda ハンドラー関数をラップします。
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 サイトと API キーの構成
DD_SITE
に
を設定します。(右側で正しい SITE が選択されていることを確認してください)。DD_API_KEY_SECRET_ARN
を、Datadog API キーが安全に保存されている AWS シークレットの ARN で設定します。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。また、secretsmanager:GetSecretValue
権限が必要です。迅速なテストのために、代わりに DD_API_KEY
を使用して、Datadog API キーをプレーンテキストで設定することができます。カスタムビジネスロジックを監視するには、以下のサンプルコードを使用してカスタムメトリクスまたはスパンを送信します。その他のオプションについては、サーバーレスアプリケーションのためのカスタムメトリクスの送信およびカスタムインスツルメンテーションのための APM ガイドを参照してください。
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 ドキュメントを参照してください。