- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
サーバーレス関数で利用可能な ASM 機能については、互換性要件を参照してください。
AWS Lambda に ASM を構成する場合、以下のような内容になります。
Datadog Serverless Framework プラグインを使用すると、ASM を使用して Lambda を自動的に構成してデプロイすることができます。
Datadog Serverless Framework プラグインをインストールして構成するには
Datadog Serverless Framework プラグインをインストールします。
serverless plugin install --name serverless-plugin-datadog
enableASM
構成パラメーターで serverless.yml
を更新することで ASM を有効にします。
custom:
datadog:
enableASM: true
全体として、新しい serverless.yml
ファイルには少なくとも以下が含まれている必要があります。
custom:
datadog:
apiKeySecretArn: "{Datadog_API_Key_Secret_ARN}" # or apiKey
enableDDTracing: true
enableASM: true
Lambda の設定をさらに構成するには、プラグインパラメーターの完全なリストも参照してください。
関数を再デプロイして呼び出します。数分後、ASM ビューに表示されます。
Datadog CLI は、新しいデプロイメントを要求することなくインスツルメンテーションを有効にするために既存の Lambda 関数の構成を変更します。これは Datadog のサーバーレスモニタリングを開始する最も速い方法です。
関数の初期トレーシングを構成する場合、以下の手順を実行します。
Datadog CLI クライアントをインストールする:
npm install -g @datadog/datadog-ci
Datadog サーバーレスモニタリングに慣れていない場合は、クイックスタートとして最初のインストールを導くためにインタラクティブモードで Datadog CLI を起動し、残りのステップを無視することができます。本番アプリケーションに Datadog を恒久的にインストールするには、このステップをスキップし、残りのステップに従って通常のデプロイメントの後に CI/CD パイプラインで Datadog CLI コマンドを実行します。
datadog-ci lambda instrument -i --appsec
AWS の認証情報を構成する:
Datadog CLI は、AWS Lambda サービスへのアクセスを必要とし、AWS JavaScript SDK に依存して資格情報を解決します。AWS CLI を呼び出すときに使用するのと同じ方法を使用して、AWS の資格情報が構成されていることを確認します。
Datadog サイトを構成する:
export DATADOG_SITE="<DATADOG_SITE>"
<DATADOG_SITE>
を に置き換えます。(このページの右側で正しい Datadog site が選択されていることを確認してください)。
Datadog API キーを構成する:
Datadog はセキュリティを理由に AWS Secrets Manager に Datadog API キーを保存することを推奨しています。キーはプレーンテキストの文字列で保存する必要があります (JSON ブロブではない)。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 関数をインスツルメントするには、次のコマンドを実行します。
datadog-ci lambda instrument --appsec -f <functionname> -f <another_functionname> -r <aws_region> -v 92 -e 55
プレースホルダーを埋めるには
<functionname>
と <another_functionname>
を Lambda 関数名に置き換えます。--functions-regex
を使用すると、指定した正規表現にマッチする名前を持つ複数の関数を自動的にインスツルメントすることができます。<aws_region>
を AWS リージョン名に置き換えます。注: まず開発環境またはステージング環境で Lambda 関数をインスツルメントしてください。もしインスツルメンテーション結果に満足できなかった場合は、同じ引数を使って uninstrument
を実行し、変更を元に戻してください。
その他のパラメーターは、CLI ドキュメントに記載されています。
Datadog CDK コンストラクト は、Lambda レイヤーを使用して Datadog を関数に自動的にインストールし、Datadog Lambda 拡張機能を介してメトリクス、トレース、ログを Datadog に送信するように関数を構成します。
Datadog CDK コンストラクトライブラリをインストールする:
# For AWS CDK v1
pip install datadog-cdk-constructs
# For AWS CDK v2
pip install datadog-cdk-constructs-v2
Lambda 関数をインスツルメントする
# For AWS CDK v1
from datadog_cdk_constructs import Datadog
# NOT SUPPORTED IN V1
# For AWS CDK v2
from datadog_cdk_constructs_v2 import Datadog
datadog = Datadog(self, "Datadog",
python_layer_version=92,
extension_layer_version=55,
site="<DATADOG_SITE>",
api_key_secret_arn="<DATADOG_API_KEY_SECRET_ARN>", // or api_key
enable_asm=True,
)
datadog.add_lambda_functions([<LAMBDA_FUNCTIONS>])
プレースホルダーを埋めるには
<DATADOG_SITE>
を
に置き換えます。(右側で正しい SITE が選択されていることを確認してください)。<DATADOG_API_KEY_SECRET_ARN>
を、Datadog API キーが安全に保存されている AWS シークレットの ARN に置き換えます。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。また、secretsmanager:GetSecretValue
権限が必要です。迅速なテストのために、代わりに apiKey
を使用して、Datadog API キーをプレーンテキストで設定することができます。Datadog CDK のドキュメントに詳細と追加のパラメーターがあります。
Python
# Use this format for x86-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:92
# Use this format for arm64-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>-ARM:92
# Use this format for x86-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:92
# Use this format for arm64-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>-ARM:72
```
`<AWS_REGION>` を `us-east-1` などの有効な AWS リージョンに置き換えてください。`RUNTIME` オプションは、`Python37`、`Python38` または `Python39` が利用可能です。
Node
# Use this format for AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:108
# Use this format for AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:108
```
`<AWS_REGION>` を `us-east-1` などの有効な AWS リージョンに置き換えてください。RUNTIME オプションは、`Node16-x`, `Node18-x`, `Node20-x` が利用可能です。
Java: Lambda がデプロイされている場所に応じて、以下のいずれかの形式の ARN を使用して Lambda 関数のレイヤーを構成します。<AWS_REGION>
は us-east-1
などの有効な AWS リージョンに置き換えてください。
# In AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-java:14
# In AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-java:14
Go: Go トレーサーはレイヤーに依存せず、通常の Go モジュールとして使用できます。以下で最新バージョンにアップグレードできます。
go get -u github.com/DataDog/datadog-lambda-go
.NET: Lambda がデプロイされている場所に応じて、以下のいずれかの形式の ARN を使用して Lambda 関数のレイヤーを構成します。<AWS_REGION>
は us-east-1
などの有効な AWS リージョンに置き換えてください。
# x86-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-dotnet:15
# arm64-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-dotnet-ARM:15
# x86-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet:15
# arm64-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet-ARM:15
<AWS_REGION>
は、us-east-1
など有効な AWS リージョンに置き換えてください。# x86-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:55
# arm64-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM:55
# x86-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:55
# arm64-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:55
# Use this format for x86-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:92
# Use this format for arm64-based Lambda deployed in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>-ARM:92
# Use this format for x86-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:92
# Use this format for arm64-based Lambda deployed in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>-ARM:92
```
`<AWS_REGION>` を `us-east-1` などの有効な AWS リージョンに置き換えてください。`RUNTIME` オプションは、`Python38`, `Python39`, `Python310`, `Python311`, `Python312` が利用可能です。
.
Node
# Use this format for AWS commercial regions
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:108
# Use this format for AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:108
```
`<AWS_REGION>` を `us-east-1` などの有効な AWS リージョンに置き換えてください。RUNTIME オプションは、`Node16-x`, `Node18-x`, `Node20-x` が利用可能です。
Java: Lambda がデプロイされている場所に応じて、以下のいずれかの形式の ARN を使用して Lambda 関数のレイヤーを構成します。<AWS_REGION>
は us-east-1
などの有効な AWS リージョンに置き換えてください。
# In AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:dd-trace-java:14
# In AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-java:14
Go: Go トレーサーはレイヤーに依存せず、通常の Go モジュールとして使用できます。以下で最新バージョンにアップグレードできます。
go get -u github.com/DataDog/datadog-lambda-go
.NET: Lambda がデプロイされている場所に応じて、以下のいずれかの形式の ARN を使用して Lambda 関数のレイヤーを構成します。<AWS_REGION>
は us-east-1
などの有効な AWS リージョンに置き換えてください。
# x86-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:dd-trace-dotnet:15
# arm64-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:dd-trace-dotnet-ARM:15
# x86-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet:15
# arm64-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet-ARM:15
以下のいずれかの関数で ARN を使用して Lambda 関数のレイヤーを構成し、Datadog Lambda 拡張機能をインストールします。<AWS_REGION>
は、us-east-1
など有効な AWS リージョンに置き換えてください。
# x86-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-Extension:55
# arm64-based Lambda in AWS commercial regions
arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-Extension-ARM:55
# x86-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:55
# arm64-based Lambda in AWS GovCloud regions
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:55
関数のデプロイ時に以下の環境変数を追加して、ASM を有効にします。
environment:
AWS_LAMBDA_EXEC_WRAPPER: /opt/datadog_wrapper
DD_SERVERLESS_APPSEC_ENABLED: true
Node 関数と Python 関数のみ、関数のハンドラーが正しく設定されていることを再確認してください。
/opt/nodejs/node_modules/datadog-lambda-js/handler.handler
に設定します。DD_LAMBDA_HANDLER
を設定します。例: myfunc.handler
。datadog_lambda.handler.handler
に設定します。DD_LAMBDA_HANDLER
を設定します。例: myfunc.handler
。関数を再デプロイして呼び出します。数分後、ASM ビューに表示されます。
serverless-init
の動作serverless-init
アプリケーションはプロセスをラップし、サブプロセスとしてこれを実行します。このアプリケーションはメトリクス用の DogStatsD リスナーとトレース用の Trace Agent リスナーを起動します。アプリケーションの stdout/stderr ストリームをラップすることでログを収集します。ブートストラップの後、serverless-init
はサブプロセスとしてコマンドを起動します。
完全なインスツルメントを行うために、Docker コンテナ内で実行される最初のコマンドが datadog-init
であることを確認してください。これは、それをエントリーポイントとして設定するか、または CMD の最初の引数として設定することで実現できます。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-js-init /operator-build/node_modules /dd_tracer/node/
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/nodejs/bin/node", "/path/to/your/app.js"]
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
Datadog Node.JS トレーサーを Docker イメージにコピーします。
COPY --from=datadog/dd-lib-js-init /operator-build/node_modules /dd_tracer/node/
手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。
(オプション) Datadog タグを追加します。
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。
CMD ["/nodejs/bin/node", "/path/to/your/app.js"]
Dockerfile 内にすでにエントリーポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-js-init /operator-build/node_modules /dd_tracer/node/
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
CMD ["/app/datadog-init", "/nodejs/bin/node", "/path/to/your/app.js"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-js-init /operator-build/node_modules /dd_tracer/node/
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/your_entrypoint.sh", "/nodejs/bin/node", "/path/to/your/app.js"]
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN pip install --target /dd_tracer/python/ ddtrace
ENV DD_SERVICE=datadog-demo-run-python
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/dd_tracer/python/bin/ddtrace-run", "python", "app.py"]
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
Datadog Python トレーサーをインストールします。
RUN pip install --target /dd_tracer/python/ ddtrace
手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。
(オプション) Datadog タグを追加します。
ENV DD_SERVICE=datadog-demo-run-python
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
Datadog トレーシングライブラリによって起動されたエントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。
CMD ["/dd_tracer/python/bin/ddtrace-run", "python", "app.py"]
Dockerfile 内にすでにエントリーポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN pip install --target /dd_tracer/python/ ddtrace
ENV DD_SERVICE=datadog-demo-run-python
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
CMD ["/app/datadog-init", "/dd_tracer/python/bin/ddtrace-run", "python", "app.py"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN pip install --target /dd_tracer/python/ ddtrace
ENV DD_SERVICE=datadog-demo-run-python
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "/dd_tracer/python/bin/ddtrace-run", "python", "app.py"]
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ADD 'https://dtdg.co/latest-java-tracer' /dd_tracer/java/dd-java-agent.jar
ENV DD_SERVICE=datadog-demo-run-java
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["./mvnw", "spring-boot:run"]
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
Datadog Java トレーサーを Docker イメージに追加します。
ADD 'https://dtdg.co/latest-java-tracer' /dd_tracer/java/dd-java-agent.jar
手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。
(オプション) Datadog タグを追加します。
ENV DD_SERVICE=datadog-demo-run-java
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。
CMD ["./mvnw", "spring-boot:run"]
Dockerfile 内にすでにエントリーポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ADD 'https://dtdg.co/latest-java-tracer' /dd_tracer/java/dd-java-agent.jar
ENV DD_SERVICE=datadog-demo-run-java
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
CMD ["/app/datadog-init", "./mvnw", "spring-boot:run"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ADD 'https://dtdg.co/latest-java-tracer' /dd_tracer/java/dd-java-agent.jar
ENV DD_SERVICE=datadog-demo-run-java
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "./mvnw", "spring-boot:run"]
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
アプリケーションをデプロイする前に、Go トレーサーを手動でインストールしてください。“appsec” タグを有効にした状態で Go バイナリをコンパイルします (go build --tags "appsec" ...
)。その後、以下の指示と引数を Dockerfile に追加してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENTRYPOINT ["/app/datadog-init"]
ENV DD_SERVICE=datadog-demo-run-go
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
(オプション) Datadog タグを追加します。
ENV DD_SERVICE=datadog-demo-run-go
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。
CMD ["/path/to/your-go-binary"]
Dockerfile 内にすでにエントリーポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-go
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
CMD ["/app/datadog-init", "/path/to/your-go-binary"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-go
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "/path/to/your-go-binary"]
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-dotnet-init /datadog-init/monitoring-home/ /dd_tracer/dotnet/
ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["dotnet", "helloworld.dll"]
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
Datadog .NET トレーサーを Docker イメージにコピーします。
COPY --from=datadog/dd-lib-dotnet-init /datadog-init/monitoring-home/ /dd_tracer/dotnet/
手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。
(オプション) Datadog タグを追加します。
ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。
CMD ["dotnet", "helloworld.dll"]
Dockerfile 内にすでにエントリーポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-dotnet-init /datadog-init/monitoring-home/ /dd_tracer/dotnet/
ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
CMD ["/app/datadog-init", "dotnet", "helloworld.dll"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
COPY --from=datadog/dd-lib-dotnet-init /datadog-init/monitoring-home/ /dd_tracer/dotnet/
ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "dotnet", "helloworld.dll"]
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
アプリケーションをデプロイする前に、Ruby トレーサーを手動でインストールします。サンプルアプリケーションを参照してください。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
ENTRYPOINT ["/app/datadog-init"]
CMD ["rails", "server", "-b", "0.0.0.0"]
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
(オプション) Datadog タグを追加します
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_APPSEC_ENABLED=1
ENV DD_VERSION=1
この環境変数は、 トレース伝搬が Cloud Run で正しく動作するために必要です。Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定してください。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。
CMD ["rails", "server", "-b", "0.0.0.0"]
Dockerfile 内にすでにエントリーポイントが定義されている場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
CMD ["/app/datadog-init", "rails", "server", "-b", "0.0.0.0"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "rails", "server", "-b", "0.0.0.0"]
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
Dockerfile に以下の指示と引数を追加します。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ADD https://github.com/DataDog/dd-trace-php/releases/latest/download/datadog-setup.php /datadog-setup.php
RUN php /datadog-setup.php --php-bin=all
ENV DD_SERVICE=datadog-demo-run-php
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENTRYPOINT ["/app/datadog-init"]
# Apache と mod_php ベースのイメージには以下を使用します
RUN sed -i "s/Listen 80/Listen 8080/" /etc/apache2/ports.conf
EXPOSE 8080
CMD ["apache2-foreground"]
# Nginx と php-fpm ベースのイメージには以下を使用します
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 8080
CMD php-fpm; nginx -g daemon off;
注: datadog-init
エントリーポイントはプロセスをラップし、そこからログを収集します。ログを正しく取得するには、Apache、Nginx、PHP プロセスが stdout
に出力を書いていることを確認する必要があります。
Datadog serverless-init
を Docker イメージにコピーします。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
Datadog PHP トレーサーをコピーしてインストールします。
ADD https://github.com/DataDog/dd-trace-php/releases/latest/download/datadog-setup.php /datadog-setup.php
RUN php /datadog-setup.php --php-bin=all
手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。
(オプション) Datadog タグを追加します。
ENV DD_SERVICE=datadog-demo-run-php
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
Datadog serverless-init
プロセスでアプリケーションをラップするようにエントリポイントを変更します。
注: Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。
ENTRYPOINT ["/app/datadog-init"]
アプリケーションを実行します。
Apache と mod_php ベースのイメージには以下を使用します。
RUN sed -i "s/Listen 80/Listen 8080/" /etc/apache2/ports.conf
EXPOSE 8080
CMD ["apache2-foreground"]
Nginx と php-fpm ベースのイメージには以下を使用します。
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 8080
CMD php-fpm; nginx -g daemon off;
Dockerfile 内にすでにエントリーポイントが定義されていて、Apache と mod_php ベースのイメージを使用している場合は、代わりに CMD 引数を変更することができます。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ADD https://github.com/DataDog/dd-trace-php/releases/latest/download/datadog-setup.php /datadog-setup.php
RUN php /datadog-setup.php --php-bin=all
ENV DD_SERVICE=datadog-demo-run-php
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
RUN sed -i "s/Listen 80/Listen 8080/" /etc/apache2/ports.conf
EXPOSE 8080
CMD ["/app/datadog-init", "apache2-foreground"]
エントリーポイントもインスツルメンテーションする必要がある場合は、代わりにエントリーポイントと CMD 引数を入れ替えることができます。詳しくは、serverless-init
の動作を参照してください。
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
ADD https://github.com/DataDog/dd-trace-php/releases/latest/download/datadog-setup.php /datadog-setup.php
RUN php /datadog-setup.php --php-bin=all
ENV DD_SERVICE=datadog-demo-run-php
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENTRYPOINT ["/app/datadog-init"]
# Apache と mod_php ベースのイメージには以下を使用します
RUN sed -i "s/Listen 80/Listen 8080/" /etc/apache2/ports.conf
EXPOSE 8080
CMD ["your_entrypoint.sh", "apache2-foreground"]
# Nginx と php-fpm ベースのイメージには以下を使用します
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 8080
CMD your_entrypoint.sh php-fpm; your_entrypoint.sh nginx -g daemon off;
実行するコマンドが datadog-init
の引数として渡される限り、完全なインスツルメンテーションを受け取ります。
アプリケーションで ASM を有効にするには、まず、Azure 構成設定の Application Settings に、以下のキーと値のペアを追加します。
DD_API_KEY
は Datadog の API キーです。DD_CUSTOM_METRICS_ENABLED
(オプション) はカスタムメトリクスを有効にします。DD_SITE
は Datadog サイトパラメーターです。サイトは
です。この値のデフォルトは datadoghq.com
です。DD_SERVICE
はこのプログラムで使用するサービス名です。デフォルトは package.json
の名前フィールドの値です。DD_START_APP
はアプリケーションの起動に使用するコマンドです。例えば、node ./bin/www
です (Tomcat で動作するアプリケーションでは不要です)。DD_APPSEC_ENABLED
の値を 1 にしますLinux Azure App Service の Web アプリは、組み込みランタイムのコードデプロイオプションを使用して構築され、言語によって異なる起動コマンドに依存しています。デフォルト値の概要は、Azure のドキュメントに記載されています。以下に例を示します。
これらの値を DD_START_APP
環境変数に設定します。以下の例は、関連する場合、datadog-demo
という名前のアプリケーションの場合です。
ランタイム | DD_START_APP 値の例 | 説明 |
---|---|---|
.NET | node ./bin/www | Node PM2 構成ファイル、またはスクリプトファイルを実行します。 |
検索構文 | dotnet datadog-demo.dll | デフォルトで Web アプリ名を使用する .dll ファイルを実行します。注: コマンドの .dll ファイル名は .dll ファイルのファイル名と一致する必要があります。場合によっては、これは Web アプリとは一致しないことがあります。 |
ページのパフォーマンスの監視 | cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload | スクリプトを正しい場所にコピーし、アプリケーションを起動します。 |
ブラウザエラーの収集 | gunicorn --bind=0.0.0.0 --timeout 600 quickstartproject.wsgi | カスタム起動スクリプト。この例では、Django アプリを起動するための Gunicorn コマンドを示します。 |
トラブルシューティング | java -jar /home/site/wwwroot/datadog-demo.jar | アプリを起動するためのコマンドです。Tomcat で動作するアプリケーションでは不要です。 |
注: 新しい設定を保存すると、アプリケーションは再起動します。
General settings で、Startup Command のフィールドに以下を追加します。
curl -s https://raw.githubusercontent.com/DataDog/datadog-aas-linux/v1.4.0/datadog_wrapper | bash
リリースから datadog_wrapper
ファイルをダウンロードし、Azure CLI コマンドでアプリケーションにアップロードします。
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <path-to-datadog-wrapper> --type=startup
アプリケーションセキュリティ管理の脅威検出のアクションを見るには、既知の攻撃パターンをアプリケーションに送信します。例えば、acunetix-product
という値を持つ HTTP ヘッダーを送信すると、セキュリティスキャナー攻撃の試行がトリガーされます。
curl -H 'My-ASM-Test-Header: acunetix-product' https://your-function-url/existing-route
アプリケーションを有効にして実行すると、数分後にアプリケーションシグナルエクスプローラーに脅威情報が表示されます。