- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Google Cloud Run は、コンテナベースのアプリケーションをデプロイし、スケーリングするためのフルマネージドサーバーレスプラットフォームです。Datadog は、Google Cloud インテグレーションを通して Cloud Run のモニタリングとログ収集を提供しています。また、Datadog は現在公開ベータ版として、トレース、カスタムメトリクス、直接ログ収集を可能にする専用 Agent で Cloud Run アプリケーションをインスツルメントするソリューションも提供しています。
Datadog API キーを取得済みであることと、Datadog トレーシングライブラリがサポートするプログラミング言語を使用していることを確認してください。
Dockerfile またはビルドパックを使用して Agent をインストールすることができます。ビルドパックを使用する場合、最初にトレーシングライブラリのインストールが必要です。
Dockerfile に次の記述を追加することで、Datadog Agent を使用してアプリケーションをインスツルメントすることができます。以下の例は、既存の Dockerfile のセットアップに応じて調整が必要になる場合があります。
# Datadog `serverless-init` を Docker イメージにコピーします
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
# アプリケーションを Datadog の serverless-init プロセスでラップするためエントリポイントを変更します
ENTRYPOINT ["/app/datadog-init"]
# オプションで Datadog のタグを追加します
ENV DD_SERVICE=datadog-demo-run-go
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
# この環境変数は、Cloud Run でトレース伝播を正しく動作させるために必要です。
# Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定します。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
# エントリポイントにラップされたバイナリアプリケーションを実行します。必要に応じて内容を変更してください。
CMD ["/path/to/your-go-binary"]
Dockerfile に次の記述を追加することで、Datadog Agent を使用してアプリケーションをインスツルメントします。以下の例は、既存の Dockerfile のセットアップに応じて調整が必要になる場合があります。
# Datadog `serverless-init` を Docker イメージにコピーします
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
# python トレーシングライブラリをこちらか requirements.txt でインストールします
RUN pip install --no-cache-dir ddtrace==1.7.3
# オプションで Datadog のタグを追加します
ENV DD_SERVICE=datadog-demo-run-python
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
# この環境変数は、Cloud Run でトレース伝播を正しく動作させるために必要です。
# Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定します。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
# アプリケーションを Datadog の serverless-init プロセスでラップするためエントリポイントを変更します
ENTRYPOINT ["/app/datadog-init"]
# Datadog トレースライブラリによって起動されるエントリポイントにラップされたバイナリアプリケーションを実行します。必要に応じて内容を変更してください。
CMD ["ddtrace-run", "python", "app.py"]
Dockerfile に次の記述を追加することで、Datadog Agent を使用してアプリケーションをインスツルメントします。以下の例は、既存の Dockerfile のセットアップに応じて調整が必要になる場合があります。
# Datadog `serverless-init` を Docker イメージにコピーします
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
# Datadog js トレーシングライブラリをこちらか package.json でインストールします
npm i dd-trace@2.2.0
# enable the Datadog tracing library
ENV NODE_OPTIONS="--require dd-trace/init"
# オプションで Datadog のタグを追加します
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
# この環境変数は、Cloud Run でトレース伝播を正しく動作させるために必要です。
# Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定します。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
# エントリポイントにラップされたバイナリアプリケーションを実行します。必要に応じて内容を変更してください。
ENTRYPOINT ["/app/datadog-init"]
# エントリポイントにラップされたバイナリアプリケーションを実行します。必要に応じて内容を変更してください。
CMD ["/nodejs/bin/node", "/path/to/your/app.js"]
Dockerfile に次の記述を追加することで、Datadog Agent を使用してアプリケーションをインスツルメントします。以下の例は、既存の Dockerfile のセットアップに応じて調整が必要になる場合があります。
# Datadog `serverless-init` を Docker イメージにコピーします
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
# オプションで Datadog のタグを追加します
ENV DD_SERVICE=datadog-demo-run-java
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
# この環境変数は、Cloud Run でトレース伝播を正しく動作させるために必要です。
# Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定します。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
# アプリケーションを Datadog の serverless-init プロセスでラップするためエントリポイントを変更します
ENTRYPOINT ["/app/datadog-init"]
# エントリポイントにラップされたバイナリアプリケーションを実行します。必要に応じて内容を変更してください。
CMD ["./mvnw", "spring-boot:run"]
Dockerfile に次の記述を追加することで、Datadog Agent を使用してアプリケーションをインスツルメントします。以下の例は、既存の Dockerfile のセットアップに応じて調整が必要になる場合があります。
# Datadog `serverless-init` を Docker イメージにコピーします
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
# オプションで Datadog のタグを追加します
ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
# この環境変数は、Cloud Run でトレース伝播を正しく動作させるために必要です。
# Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定します。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
# アプリケーションを Datadog の serverless-init プロセスでラップするためエントリポイントを変更します
ENTRYPOINT ["/app/datadog-init"]
# エントリポイントにラップされたバイナリアプリケーションを実行します。必要に応じて内容を変更してください。
CMD ["dotnet", "helloworld.dll"]
Dockerfile に次の記述を追加することで、Datadog Agent を使用してアプリケーションをインスツルメントします。以下の例は、既存の Dockerfile のセットアップに応じて調整が必要になる場合があります。
# Datadog `serverless-init` を Docker イメージにコピーします
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
# オプションで Datadog のタグを追加します
ENV DD_SERVICE=datadog-demo-run-ruby
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
# この環境変数は、Cloud Run でトレース伝播を正しく動作させるために必要です。
# Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定します。
ENV DD_TRACE_PROPAGATION_STYLE=datadog
# アプリケーションを Datadog の serverless-init プロセスでラップするためエントリポイントを変更します
ENTRYPOINT ["/app/datadog-init"]
# エントリポイントにラップされたバイナリアプリケーションを実行します。
CMD ["rails", "server", "-b", "0.0.0.0"] (必要に応じて内容を変更してください)
Pack Buildpacks
は、Dockerfile を使用せずにコンテナをパッケージ化する便利な方法を提供します。この例では、Google Cloud コンテナレジストリと Datadog サーバーレスビルドパックを使用しています。
注: ビルドパックを実行する前に、お使いの言語のトレーシングライブラリをインストールしてください。
以下のコマンドを実行して、アプリケーションを構築します。
pack build --builder=gcr.io/buildpacks/builder \
--buildpack from=builder \
--buildpack datadog/serverless-buildpack:latest \
gcr.io/YOUR_PROJECT/YOUR_APP_NAME
注: Alpine とは互換性がありません。
ビルドパックを使用した場合は、アプリケーションの構成まで読み飛ばすことができます。
こちらの手順に従って、アプリケーションに Go トレーシングライブラリをインストールし、構成して、トレースをキャプチャして送信してください。
以下の手順に従って、アプリケーションに Python トレーシングライブラリをインストールし、構成して、トレースをキャプチャして送信します。
以下の手順に従って、アプリケーションに Node トレーシングライブラリをインストールし、構成して、トレースをキャプチャして送信します。
以下の手順に従って、アプリケーションに Java トレーシングライブラリをインストールし、構成して、トレースをキャプチャして送信します。
指示に従って、.NET Core トレーシングライブラリと .NET Framework トレーシングライブラリのインストールと構成を行います。
以下の手順に従って、アプリケーションに Ruby トレーシングライブラリをインストールし、構成して、トレースをキャプチャして送信します。
コンテナが構築され、レジストリにプッシュされたら、最後の手順として Datadog Agent 用に必要な環境変数を設定します。
DD_API_KEY
: データを Datadog アカウントに送信するために使用する Datadog API キー。プライバシーと安全性の問題を考慮して、Google Cloud シークレットに設定する必要があります。DD_SITE
: Datadog のエンドポイントと Web サイト。このページの右側で自分のサイトを選択します。あなたのサイトは
です。DD_TRACE_ENABLED
: true
に設定してトレースを有効にします環境変数とその機能の詳細については、追加の構成を参照してください。
次のコマンドはサービスをデプロイし、外部からの接続がサービスに到達できるようにするためのコマンドです。DD_API_KEY
を環境変数として設定し、サービスのリスニングポートを 80 に設定します。
gcloud run deploy APP_NAME --image=gcr.io/YOUR_PROJECT/APP_NAME \
--port=80 \
--update-env-vars=DD_API_KEY=$DD_API_KEY \
--update-env-vars=DD_TRACE_ENABLED=true \
--update-env-vars=DD_SITE='datadoghq.com' \
デプロイが完了すると、メトリクスとトレースが Datadog に送信されます。Datadog で Infrastructure->Serverless に移動すると、サーバーレスメトリクスとトレースを確認できます。
高度なトレース: Datadog Agent は、一般的なフレームワーク向けに基本的なトレース機能をすでにいくつか提供しています。さらに詳しい情報については、高度なトレースガイドに従ってください。
ログ: Google Cloud インテグレーションを使用している場合は、すでにログが収集されています。また、環境変数 DD_LOGS_ENABLED
を true
に設定することで、サーバーレスインスツルメンテーションを通じて直接アプリケーションログをキャプチャすることも可能です。
カスタムメトリクス: DogStatsd クライアントを使って、カスタムメトリクスを送信することができます。Cloud Run やその他のサーバーレスアプリケーションの監視には、ディストリビューションメトリクスを使用します。ディストリビューションは、デフォルトで avg
、sum
、max
、min
、count
の集計データを提供します。Metric Summary ページでは、パーセンタイル集計 (p50、p75、p90、p95、p99) を有効にすることができ、タグの管理も可能です。ゲージメトリクスタイプの分布を監視するには、時間集計と空間集計の両方で avg
を使用します。カウントメトリクスタイプの分布を監視するには、時間集計と空間集計の両方で sum
を使用します。
トレース伝播: 分散型トレーシングのためにトレースコンテキストを伝播させるには、Cloud Run アプリとそのダウンストリームにある Datadog インスツルメンテーションサービスに対して DD_TRACE_PROPAGATION_STYLE
環境変数を 'datadog'
に設定してください。
変数 | 説明 |
---|---|
DD_API_KEY | Datadog API キー - 必須 |
DD_SITE | Datadog サイト - 必須 |
DD_LOGS_ENABLED | true の場合、ログ (stdout と stderr) を Datadog に送信します。デフォルトは false です。 |
DD_SERVICE | 統合サービスタグ付けを参照してください。 |
DD_VERSION | 統合サービスタグ付けを参照してください。 |
DD_ENV | 統合サービスタグ付けを参照してください。 |
DD_SOURCE | 統合サービスタグ付けを参照してください。 |
DD_TAGS | 統合サービスタグ付けを参照してください。 |
以下の手順で、OpenTelemetry データを Datadog に送信します。
Datadog serverless-init
にスパンをエクスポートするよう OpenTelemetry に指示します。
// instrument.js
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { Resource } = require('@opentelemetry/resources');
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const provider = new NodeTracerProvider({
resource: new Resource({
[ SemanticResourceAttributes.SERVICE_NAME ]: '<your-service-name>',
})
});
provider.addSpanProcessor(
new SimpleSpanProcessor(
new OTLPTraceExporter(
{ url: 'http://localhost:4318/v1/traces' },
),
),
);
provider.register();
Express 用の OpenTelemetry のインスツルメンテーションを追加します。これは ddtrace
を追加するのと同じようなものです。
// instrument.js
const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express');
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
registerInstrumentations({
instrumentations: [
new HttpInstrumentation(),
new ExpressInstrumentation(),
],
});
実行時にインスツルメンテーションを追加します。例えば、Node.js の場合、NODE_OPTIONS
を使用します。
# Dockerfile
FROM node
WORKDIR /app
COPY package.json index.js instrument.js /app/
RUN npm i
ENV NODE_OPTIONS="--require ./instrument"
CMD npm run start
Datadog の serverless-init
を追加します。
# Dockerfile
COPY --from=datadog/serverless-init /datadog-init /app/datadog-init
ENTRYPOINT ["/app/datadog-init"]
Datadog の serverless-init
で、DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT
または DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT
環境変数で OpenTelemetry を有効にします。
# Dockerfile
ENV DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT="localhost:4318"
このインテグレーションは、お使いのランタイムが完全な SSL を実装しているかどうかに依存します。Node の slim イメージを使用している場合、証明書を含めるために Dockerfile に次のコマンドを追加する必要があるかもしれません。
RUN apt-get update && apt-get install -y ca-certificates
お役に立つドキュメント、リンクや記事: