Google Cloud Run

概要

Google Cloud Run は、コンテナベースのアプリケーションをデプロイし、スケーリングするためのフルマネージドサーバーレスプラットフォームです。Datadog は、Google Cloud インテグレーションを通して Cloud Run のモニタリングとログ収集を提供しています。また、Datadog は、トレース、カスタムメトリクス、直接ログ収集を可能にする専用 Agent で Cloud Run アプリケーションをインスツルメントするソリューションも提供しています。

前提条件

Datadog API キーを取得済みであることと、Datadog トレーシングライブラリがサポートするプログラミング言語を使用していることを確認してください。

アプリケーションをインスツルメントする

アプリケーションをインスツルメンテーションするには、Dockerfileビルドパックの 2 つの方法があります。

Dockerfile

Datadog は、serverless-init コンテナイメージの新しいリリースを Google の gcr.io、AWS の ECR、および Docker Hub に公開しています。

dockerhub.iogcr.iopublic.ecr.aws
datadog/serverless-initgcr.io/datadoghq/serverless-initpublic.ecr.aws/datadog/serverless-init

イメージはセマンティックバージョニングに基づいてタグ付けされ、新しいバージョンごとに 3 つの関連タグが付与されます。

  • 11-alpine: 重大な変更がない最新のマイナーリリースを追跡する場合、これらを使用します
  • 1.x.x1.x.x-alpine: ライブラリの正確なバージョンにピン留めする場合、これらを使用します
  • latestlatest-alpine: 重大な変更が含まれる可能性がある最新のバージョンリリースに従う場合、これらを使用します

serverless-init の動作

serverless-init アプリケーションはプロセスをラップし、サブプロセスとしてこれを実行します。このアプリケーションはメトリクス用の DogStatsD リスナーとトレース用の Trace Agent リスナーを起動します。アプリケーションの stdout/stderr ストリームをラップすることでログを収集します。ブートストラップの後、serverless-init はサブプロセスとしてコマンドを起動します。

完全なインスツルメンテーションを得るには、Docker コンテナ内で実行する最初のコマンドとして datadog-init を呼び出していることを確認します。これを行うには、エントリーポイントとして設定するか、CMD の最初の引数として設定します。

Add the following instructions and arguments to your Dockerfile.

COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN npm install --prefix /dd_tracer/node dd-trace  --save
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/nodejs/bin/node", "/path/to/your/app.js"]

Explanation

  1. Copy the Datadog serverless-init into your Docker image.

    COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
    
  2. Copy the Datadog Node.JS tracer into your Docker image.

    RUN npm install --prefix /dd_tracer/node dd-trace  --save
    

    If you install the Datadog tracer library directly in your application, as outlined in the manual tracer instrumentation instructions, omit this step.

  3. (Optional) Add Datadog tags.

    ENV DD_SERVICE=datadog-demo-run-nodejs
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  4. Change the entrypoint to wrap your application in the Datadog serverless-init process. Note: If you already have an entrypoint defined inside your Dockerfile, see the alternative configuration.

    ENTRYPOINT ["/app/datadog-init"]
    
  5. Execute your binary application wrapped in the entrypoint. Adapt this line to your needs.

    CMD ["/nodejs/bin/node", "/path/to/your/app.js"]
    

Alternative configuration

If you already have an entrypoint defined inside your Dockerfile, you can instead modify the CMD argument.

COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN npm install --prefix /dd_tracer/node dd-trace  --save
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
CMD ["/app/datadog-init", "/nodejs/bin/node", "/path/to/your/app.js"]

If you require your entrypoint to be instrumented as well, you can swap your entrypoint and CMD arguments instead. For more information, see How serverless-init works.

COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN npm install --prefix /dd_tracer/node dd-trace  --save
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/your_entrypoint.sh", "/nodejs/bin/node", "/path/to/your/app.js"]

As long as your command to run is passed as an argument to datadog-init, you will receive full instrumentation.

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
ENTRYPOINT ["/app/datadog-init"]
CMD ["/dd_tracer/python/bin/ddtrace-run", "python", "app.py"]

説明

  1. Datadog serverless-init を Docker イメージにコピーします。

    COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
    
  2. Datadog Python トレーサーをインストールします。

    RUN pip install --target /dd_tracer/python/ ddtrace
    

    手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。

  3. (オプション) Datadog タグを追加します。

    ENV DD_SERVICE=datadog-demo-run-python
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  4. Datadog serverless-init プロセスでアプリケーションをラップするようにエントリポイントを変更します。 : Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。

    ENTRYPOINT ["/app/datadog-init"]
    
  5. 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
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
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
ENTRYPOINT ["/app/datadog-init"]
CMD ["./mvnw", "spring-boot:run"]

説明

  1. Datadog serverless-init を Docker イメージにコピーします。

    COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
    
  2. Datadog Java トレーサーを Docker イメージに追加します。

    ADD 'https://dtdg.co/latest-java-tracer' /dd_tracer/java/dd-java-agent.jar
    

    手動トレーサーインスツルメンテーションの説明で説明したように、Datadog トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。

  3. (オプション) Datadog タグを追加します。

    ENV DD_SERVICE=datadog-demo-run-java
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  4. Datadog serverless-init プロセスでアプリケーションをラップするようにエントリポイントを変更します。 : Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。

    ENTRYPOINT ["/app/datadog-init"]
    
  5. エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。

    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
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
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "./mvnw", "spring-boot:run"]

実行するコマンドが datadog-init の引数として渡される限り、完全なインスツルメンテーションを受け取ります。

アプリケーションをデプロイする前に、Go トレーサーを手動でインストールしてください。以下の指示と引数を 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
CMD ["/path/to/your-go-binary"]

説明

  1. Datadog serverless-init を Docker イメージにコピーします。

    COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
    
  2. Datadog serverless-init プロセスでアプリケーションをラップするようにエントリポイントを変更します。 : Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。

    ENTRYPOINT ["/app/datadog-init"]
    
  3. (オプション) Datadog タグを追加します。

    ENV DD_SERVICE=datadog-demo-run-go
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  4. エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。

    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
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
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "/path/to/your-go-binary"]

実行するコマンドが datadog-init の引数として渡される限り、完全なインスツルメンテーションを受け取ります。

: Go コードを自動的にインスツルメントするツールである Orchestrion を使うこともできます。Orchestrion は非公開ベータ版です。詳細については、Orchestrion リポジトリで GitHub イシューを開くか、サポートに連絡してください。

Add the following instructions and arguments to your Dockerfile.

# For alpine or arm64 builds, refer to the explanation section
COPY --from=datadog/serverless-init:1 / /app/
RUN chmod +x /app/dotnet.sh && /app/dotnet.sh

ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["dotnet", "helloworld.dll"]

Explanation

  1. Copy the Datadog serverless-init into your Docker image.

    COPY --from=datadog/serverless-init:1 / /app/
    
  2. Copy the Datadog .NET tracer into your Docker image. For linux/amd64, include the following:

    RUN chmod +x /app/dotnet.sh && /app/dotnet.sh
    

    For other architecture types, configure your Dockerfile like so:

    # For arm64 use datadog-dotnet-apm-2.57.0.arm64.tar.gz
    # For alpine use datadog-dotnet-apm-2.57.0-musl.tar.gz
    ARG TRACER_VERSION
    ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm-${TRACER_VERSION}.tar.gz /tmp/datadog-dotnet-apm.tar.gz
    
    RUN mkdir -p /dd_tracer/dotnet/ && tar -xzvf /tmp/datadog-dotnet-apm.tar.gz -C /dd_tracer/dotnet/ && rm /tmp/datadog-dotnet-apm.tar.gz
    

    If you install the Datadog tracer library directly in your application, as outlined in the manual tracer instrumentation instructions, omit this step.

  3. (Optional) Add Datadog tags.

    ENV DD_SERVICE=datadog-demo-run-dotnet
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  4. Change the entrypoint to wrap your application in the Datadog serverless-init process. Note: If you already have an entrypoint defined inside your Dockerfile, see the alternative configuration.

    ENTRYPOINT ["/app/datadog-init"]
    
  5. Execute your binary application wrapped in the entrypoint. Adapt this line to your needs.

    CMD ["dotnet", "helloworld.dll"]
    

Alternative configuration

If you already have an entrypoint defined inside your Dockerfile, you can instead modify the CMD argument.

# For alpine or arm64 builds, refer to tracer installation of the explanation section
COPY --from=datadog/serverless-init:1 / /app/
RUN chmod +x /app/dotnet.sh && /app/dotnet.sh

ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
CMD ["/app/datadog-init", "dotnet", "helloworld.dll"]

If you require your entrypoint to be instrumented as well, you can swap your entrypoint and CMD arguments instead. For more information, see How serverless-init works.

# For alpine or arm64 builds, refer to tracer installation of the explanation section
COPY --from=datadog/serverless-init:1 / /app/
RUN chmod +x /app/dotnet.sh && /app/dotnet.sh

ENV DD_SERVICE=datadog-demo-run-dotnet
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["your_entrypoint.sh", "dotnet", "helloworld.dll"]

As long as your command to run is passed as an argument to datadog-init, you will receive full instrumentation.

アプリケーションをデプロイする前に、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_TRACE_PROPAGATION_STYLE=datadog
ENTRYPOINT ["/app/datadog-init"]
CMD ["rails", "server", "-b", "0.0.0.0"]

説明

  1. Datadog serverless-init を Docker イメージにコピーします。

    COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
    
  2. (オプション) Datadog タグを追加します

    ENV DD_SERVICE=datadog-demo-run-ruby
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  3. この環境変数は、 トレース伝搬が Cloud Run で正しく動作するために必要です。Datadog でインスツルメンテーションされたすべてのダウンストリームサービスにこの変数を設定してください。

    ENV DD_TRACE_PROPAGATION_STYLE=datadog
    
  4. Datadog serverless-init プロセスでアプリケーションをラップするようにエントリポイントを変更します。 : Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。

    ENTRYPOINT ["/app/datadog-init"]
    
  5. エントリポイントにラップされたバイナリアプリケーションを実行します。この行は必要に応じて変更してください。

    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_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_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 に出力を書いていることを確認する必要があります。

説明

  1. Datadog serverless-init を Docker イメージにコピーします。

    COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
    
  2. 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 トレーサーライブラリをアプリケーションに直接インストールする場合は、このステップを省略してください。

  3. (オプション) Datadog タグを追加します。

    ENV DD_SERVICE=datadog-demo-run-php
    ENV DD_ENV=datadog-demo
    ENV DD_VERSION=1
    
  4. Datadog serverless-init プロセスでアプリケーションをラップするようにエントリポイントを変更します。 : Dockerfile 内にすでにエントリーポイントが定義されている場合は、代替構成を参照してください。

    ENTRYPOINT ["/app/datadog-init"]
    
  5. アプリケーションを実行します。

    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;
    

代替構成: CMD 引数

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 の引数として渡される限り、完全なインスツルメンテーションを受け取ります。

Buildpack

Pack Buildpacks は Dockerfile を使用せずに、コンテナをパッケージ化する便利な手段を提供します。

まず、トレーサーを手動でインストールします。

次に、以下のコマンドを実行して、アプリケーションを構築します。

pack build --builder=gcr.io/buildpacks/builder \
--buildpack from=builder \
--buildpack datadog/serverless-buildpack:latest \
gcr.io/YOUR_PROJECT/YOUR_APP_NAME

: ビルドパックのインスツルメンテーションは Alpine イメージと互換性がありません

アプリケーションを構成する

コンテナが構築され、レジストリにプッシュされたら、最後の手順として Datadog Agent 用に必要な環境変数を設定します。

  • DD_API_KEY: データを Datadog アカウントに送信するために使用する Datadog API キー。プライバシーと安全性の問題を考慮して、Google Cloud シークレットに設定する必要があります。
  • DD_SITE: Datadog のエンドポイントと Web サイト。このページの右側で自分のサイトを選択します。あなたのサイトは です。
  • DD_TRACE_ENABLED: true に設定してトレースを有効にします
  • DD_TRACE_PROPAGATION_STYLE: これを datadog に設定することで、コンテキスト伝搬とログトレースの相関を利用できます。

環境変数とその機能の詳細については、追加の構成を参照してください。

次のコマンドでサービスをデプロイし、どの外部接続からもそのサービスにアクセスできるようにします。DD_API_KEY を環境変数として設定し、サービスのリスニングポートを 8080 に設定します。

shell
gcloud run deploy APP_NAME --image=gcr.io/YOUR_PROJECT/APP_NAME \
  --port=8080 \
  --update-env-vars=DD_API_KEY=$DD_API_KEY \
  --update-env-vars=DD_TRACE_ENABLED=true \
  --update-env-vars=DD_SITE='datadoghq.com' \
  --update-env-vars=DD_TRACE_PROPAGATION_STYLE='datadog' \

結果

デプロイが完了すると、メトリクスとトレースが Datadog に送信されます。Datadog で Infrastructure->Serverless に移動すると、サーバーレスメトリクスとトレースを確認できます。

追加の構成

  • 高度なトレース: Datadog Agent は、一般的なフレームワーク向けに基本的なトレース機能をすでにいくつか提供しています。さらに詳しい情報については、高度なトレースガイドに従ってください。

  • ログ: Google Cloud インテグレーションを使用している場合は、すでにログが収集されています。また、環境変数 DD_LOGS_ENABLEDtrue に設定することで、サーバーレスインスツルメンテーションを通じて直接アプリケーションログをキャプチャすることも可能です。

  • カスタムメトリクス: DogStatsd クライアントを使って、カスタムメトリクスを送信することができます。Cloud Run やその他のサーバーレスアプリケーションの監視には、ディストリビューションメトリクスを使用します。ディストリビューションは、デフォルトで avgsummaxmincount の集計データを提供します。Metric Summary ページでは、パーセンタイル集計 (p50、p75、p90、p95、p99) を有効にすることができ、タグの管理も可能です。ゲージメトリクスタイプの分布を監視するには、時間集計と空間集計の両方で avgを使用します。カウントメトリクスタイプの分布を監視するには、時間集計と空間集計の両方で sum を使用します。

環境変数

変数説明
DD_API_KEYDatadog API キー - 必須
DD_SITEDatadog サイト - 必須
DD_LOGS_ENABLEDtrue の場合、ログ (stdout と stderr) を Datadog に送信します。デフォルトは false です。
DD_LOGS_INJECTIONtrue の場合、JavaNode.NET、および PHP でサポートされているロガーのトレースデータですべてのログをリッチ化します。PythonGoRuby については追加のドキュメントを参照してください。
DD_TRACE_SAMPLE_RATEトレース取り込みのサンプルレート 0.01.0 をコントロールします。
DD_SERVICE統合サービスタグ付けを参照してください。
DD_VERSION統合サービスタグ付けを参照してください。
DD_ENV統合サービスタグ付けを参照してください。
DD_SOURCE統合サービスタグ付けを参照してください。
DD_TAGS統合サービスタグ付けを参照してください。

トラブルシューティング

このインテグレーションは、ランタイムに完全な SSL 実装があることが前提です。slim イメージを使用している場合、証明書を含めるために Dockerfile に次のコマンドを追加する必要があります。

RUN apt-get update && apt-get install -y ca-certificates

その他の参考資料