This product is not supported for your selected Datadog site. ().
Google Cloud Run の AAP サポートはプレビュー版です。

仕組み

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

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

互換性

App and API Protection serverless の Google Cloud Run サポートはプレビュー版です。

注: Remote Configuration による脅威保護はサポートされていません。Workflows を使用して、WAF で IP をブロックします。

始める

アプリケーションをデプロイする前に、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"]

説明

  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_APPSEC_ENABLED=1
    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_APPSEC_ENABLED=1
ENV DD_TRACE_PROPAGATION_STYLE=datadog
CMD ["/app/datadog-init", "rails", "server", "-b", "0.0.0.0"]

エントリーポイントにも Datadog のインスツルメンテーションを適用する必要がある場合は、代わりにエントリーポイントと 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 の引数として渡される限り、完全なインスツルメンテーションが適用されます。

参考資料