Google Cloud Run のモニタリング

Google Cloud Run ( GCP )上で実行されているアプリケーションを監視するには、 GCP エージェントを設定し、 Instana ( Google Cloud Run )のインプロセスコレクターをインストールする必要があります。

その他のサポート対象の Google Cloud プラットフォームおよびサービスに関する詳細については、 『 GCP 』のドキュメントを参照してください。

詳細については、 「 GCP エージェントの設定」 および 「 Instana Google Cloud Run インプロセス・コレクターのインストール」 を参照してください。

Google Cloud Run のサポートは、以下の2つの柱に基づいています:

  • 「 Google Cloud Platform 」( GCP )プロジェクトとそのリソースを監視する Instana ホストエージェント。

    残りのドキュメントでは、 GCP エージェントとして GCP プロジェクトを監視するための Instana ホストエージェントの設定について説明しています。

    GCP プロジェクトを監視するために Instana ホストエージェントを設定すると、そのプロジェクトに含まれるCloud Runサービスのリビジョンに関するメトリクスが提供されます。

  • Cloud Run で使用するコンテナー・イメージに統合されている Instana プロセス内コレクター。

    Instana プロセス・コレクターを Docker イメージに追加すると、Cloud Run が開始する個々のインスタンスが可視化され、ランタイム固有のメトリック (JVM メトリック、Node.js メトリック、.Net メトリックなど) が提供され、呼び出しのトレースも提供されます。

注:Instana は現在、フルマネージドプラットフォームのみをサポートしています。 Anthos または GKE でのクラウド実行はサポートされていません。

GCP エージェントの設定

Google Cloud Run のインプロセス・コレクターをインストールする前に、 GCP が存在するホストマシンに Instana ホストエージェントがインストールされており、 GCP プロジェクトを監視できることを確認してください。 GCP リソースをモニターするには、専用マシンを使用する必要があります。

Instana Google Cloud 統合では、サービス・アカウントを使用して、GCP エージェントから GCP 管理 API に接続します。 そのため、サービス・アカウントを作成し、その資格情報を GCP エージェントに提供して、GCP エージェントがユーザーに代わって API 呼び出しを行えるようにする必要があります。

注: すでに他の GCP サービス( Google Cloud Storage や Google Cloud SQL など)用に設定済みの場合は、新しいサービスアカウントの作成を省略できますが、Cloud Run用に追加の権限を設定する必要がある場合があります。
  1. Instana 統合をセットアップする Google Cloud プロジェクトについて、 Google Cloud 資格情報ページ に移動します。

  2. 「資格情報の作成」 > 「サービス・アカウント」をクリックします。

    SelectServiceAccount

  3. 「サービス・アカウントの作成」 ページで、サービス・アカウントの固有の名前を入力し、 「作成して続行」をクリックします。

  4. 役割 Cloud Run Viewer をアカウントに追加します。 少なくとも以下の権限を持つカスタム役割を作成することもできます。

    • resourcemanager.projects.get
    • run.revisions.list
    • run.services.list
    • monitoring.timeSeries.list

    カスタム役割を作成するには、以下のステップを実行します。

    1. ナビゲーション・メニューから、 「役割」 > 「役割の作成」をクリックします。
    2. 役割のタイトルを入力し、 「権限の追加」をクリックします。
    3. 前述の基本的な権限 (役割に必要な権限) を追加し、 「作成」をクリックします。
  5. 作成したアカウントをサービス・アカウントのリストから選択します。

  6. 「KEYS」 タブを選択し、 「キーの追加」をクリックします。

  7. 新しいキーを作成」 を選択し、キーの種類として「 JSON 」を選択してから、 「作成」 をクリックします。

    サービス・アカウント・キー

    注: 統合を完了するには、認証情報のファイルが保存されている場所を記録しておく必要があります。
  8. ホスト *instanaAgentDir*/etc/instana/configuration.yaml エージェントの設定ファイルで、セクション com.instana.plugin.gcp (すべての GCP リソース用)または com.instana.plugin.gcp.run セクション(Cloud Runの監視専用資格情報用)に credentials_path フィールドを追加します。 credentials_path フィールドの値は、資格情報ファイルのパスです。 詳しくは、 オプションの構成を参照してください。

GCP プロジェクトをモニターするには、以下のサービスを有効にする必要があります。

オプション構成

ポーリング頻度

GCP エージェントの構成ファイルに以下の設定を追加することで、 GCP エージェントがメトリック「 API 」をポーリングする間隔(秒単位)を設定できます:

com.instana.plugin.gcp.run:
  enabled: tru
  poll_rate: 60  # How often Google's metrics API will be polled
  credentials_path: '/opt/instana/credentials/cred-gcp.json'  # Path to Service Account credentials
  include_tags:
    ...
  exclude_tags:
    ...
 

フィルタリング

複数のタグを定義するには、コンマで区切ります。 タグは、 : 文字で区切られたキーと値のペアとして指定する必要があります。 構成を容易にするために、ディスカバリー・プロセスに含める (または除外する) タグを定義することができます。 タグが両方のリスト (組み込みと除外) に存在する場合は、除外リストの方が優先度が高くなります。 サービス・フィルタリングが必要ない場合は、属性 include_tags および exclude_tags を省略する必要があります。

タグによってクラウド実行サービスのリビジョンを包含または除外するには、以下の構成を使用します。

com.instana.plugin.gcp.run:
  include_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
  exclude_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
 

ラベル

Instana エージェントは、 Google Cloud Run サービスのリビジョンからラベルを自動的に収集し、各Cloud Runサービスのリビジョンについて、サイドバーの 「タグ 」セクションにそれらを表示します。 これらのラベルは、 Instana のUIにある 「インフラストラクチャマップ」上でリソースをフィルタリングするためのタグとして使用できます。

Instana のインストール Google Cloud Run インプロセス・コレクタ

Cloud Run サービスのリビジョンインスタンスに関するトレースデータ、ランタイム固有のメトリクス、およびその他のデータを収集するには、各技術固有の手順に従ってください

Java

Java Cloud Run インプロセス・コレクターは、containers.instana.io/instana/release/google/cloud-run/jvm Docker イメージで提供されます。 マルチステップ Docker ビルドを使用すると、以下のようにして、Google Cloud Run で実行される Java アプリケーション用の Docker イメージの作成を簡素化し、高速化することができます。

Dockerfile の最後の FROM 節の後の任意の場所に、以下の行を追加します。

COPY --from=containers.instana.io/instana/release/google/cloud-run/jvm /instana /instana
ENV JAVA_TOOL_OPTIONS="-javaagent:/instana/instana-standalone-collector.jar"
 

Java のCloud Runインプロセスコレクターを使用する場合、 Instana コレクターを設定するために、イメージのビルド以外に必要となる追加の手順は、「 Cloud Runサービスの設定 」セクションに記載されているとおり、サービスリビジョンに2つの環境変数を追加することだけです。

注:

  • ビルド・プロセスに使用する Docker デーモンは、 containers.instana.ioにログインする必要があります。

  • Google Cloud Run で実行されている Java プロセスの 自動プロファイル はサポートされていません。

Node.js

Node.js Cloud Run プロセス中コレクターは、 icr.io/instana/google-cloud-run-nodejs Docker イメージを介して提供されます。 以下のように、マルチステップ Docker ビルドを使用して、Cloud Run で実行される Node.js アプリケーションの Docker イメージの作成を簡素化し、高速化することができます。

アプリケーションが CommonJS, を使用して開発されている場合は、「 CommonJS 」セクションの手順に従ってください。

アプリケーションがECMAScriptモジュールで開発されている場合は、「ECMAScriptモジュール」セクションの手順に従ってください。

Instana 現在、この x86_64 アーキテクチャのみをサポートしています。

CommonJS

Dockerfile の最後の FROM 節の後の任意の場所に、以下の行を追加します。


COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

ECMAScriptモジュール

最後の `FROM 句( Node.js18.19 以降)の後の任意 Dockerfile の場所に、以下の行を追加してください:

COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--import=/instana/node_modules/@instana/google-cloud-run/esm-register.mjs"

コンテナーを作成し、選択したイメージ・リポジトリーにプッシュします。

最後に、 「Cloud Run サービスの設定」 のセクションに記載されている設定手順に従ってください。

注:
  • Node.js のバージョンが 18.19.0 より古い場合は、の代わりに --experimental-loader /instana/node_modules/@instana/google-cloud-run/esm-loader.mjs を使用する必要があります --import /instana/node_modules/@instana/google-cloud-run/esm-register.mjs
  • 現在のバージョンでは、`with --experimental-loader ` の使用はサポート esm-loader.mjs されておらず、次回のアップグレードで削除される予定です。 詳細については、 「互換性のない変更 」のセクションを参照してください。
  • 段階的ビルド を使用している場合 (つまり、 Dockerfileに複数の FROM 節がある場合) は、 Dockerfileの最後の FROM 節に以下の行を追加する必要があります。
  • Cloud Run で実行されている Node.js プロセスの 自動プロファイル はサポートされていません。

バージョン管理

利用可能なすべてのバージョンを表示するには、次のコマンドを実行してください:

curl -s https://icr.io/v2/instana/google-cloud-run-nodejs/tags/list | jq .

詳しくは、 Node.js バージョン管理を参照してください。

依存関係およびネイティブ・アドオンのビルド

ネイティブ Node.js アドオンをビルドするために必要なパッケージが含まれていない Node.js コンテナーに対して、かなり最小限の基本イメージを使用している場合は、Docker ビルドに以下のような警告が表示されることがあります。

gyp ERR! ...some error message from trying to rebuild native add-ons, for example:
gyp ERR! stack Error: Could not find any Python installation to use
...
Warning: Rebuilding native add-ons for @instana/google-cloud-run failed. Monitoring the Cloud Run service revision instance will work nonetheless, but you will miss some Node.js metrics (GC metrics, event loop metrics, ...). See https://www.instana.com/docs/ecosystem/google-cloud-run/#build-dependencies-and-native-add-ons for details.
 

ログ・メッセージが示すように、Instana を使用した Node.js Cloud Run サービス・リビジョン・インスタンスのモニターは機能します。 しかし、特定のメトリックが欠落しています。 Instana は、ビルド中に、少なくとも一時的に、欠落しているオペレーティング・システム・パッケージをインストールすることを推奨しています。 最終的なイメージに含める必要はありません。 インストールするパッケージとそのインストール方法は、使用するディストリビューションによって異なります。

Linux® Alpine の Dockerfile スニペットの例を以下に示します。


COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN apk add --no-cache --virtual .gyp \
        build-base \
        python \
     /instana/setup.sh \
     apk del .gyp python
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

Debian ベースのディストリビューション (Ubuntu を含む) の場合は、以下の例を参照してください。


COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN apt-get update \
     apt-get install build-essential \
     /instana/setup.sh \
     apt-get remove -y build-essential
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

( CentOS,、 RHELyum など) を使用するディストリビューションについては、 必要なパッケージをインストールするコマンドは、次のようになります。

RUN yum groupinstall "Development Tools"
 

.Net Core

「クラウド実行」で実行される .Net Core アプリケーションに対する Instana のサポートには、以下のステップが必要です。

  1. Instana Nuget パッケージをアプリケーションに組み込みます。
  2. Cloud Run サービスの構成 セクションで説明されている環境変数をセットアップします。

これで用意ができました。残りはすべて自動化されています。

コンテナー・イメージへの NuGet パッケージの追加

Docker イメージのビルド時に Instana の NuGet パッケージを追加するようにDockerfileを変更するには、以下の例を参照してください:

# If running on Alpine or muslc-based images
RUN dotnet add Instana.Tracing.Core.Rewriter.Alpine
# Glibc-based images like RHEL and Debian derivatives
RUN dotnet add Instana.Tracing.Core.Rewriter.Linux

# set CoreCLR tracing environment variables
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
ENV CORECLR_PROFILER_PATH=/app/instana_tracing/CoreProfiler.so
ENV DOTNET_STARTUP_HOOKS=/app/Instana.Tracing.Core.dll
 
重要:
  • コンテナーが使用する lib のフレーバーに基づく以下の 2 つの異なるパッケージが提供されます。

    • Alpineベースのコンテナーによって使用される muslcには、 Instana.Tracing.Core.Rewriter.Alpine パッケージが必要です。

    • glibc。Alpine 以外のほとんどすべてのディストリビューションで使用され、Instana.Tracing.Core.Rewriter.Linux が必要です。

  • /app/ を、アプリケーションのルートへの実際のパスに置き換えます。

  • 必ず、 クラウド・ラン・サービスの構成 セクションで説明されている環境変数をセットアップしてください。

Python

Python アプリケーションで Google Cloud Run をサポートするには、以下の手順に従ってください:

  1. instana PIP パッケージをインストールします。

    pip install instana
     
  2. Google Cloud Run 用の Instana コレクターをアプリケーション・コードにインポートします。

    import instana
     
    重要: クラウド・ラン・サービスの構成 セクションで説明されている環境変数をセットアップすることを忘れないでください。

Cloud Run サービスの設定

注:

  • これらの手順は、Cloud Run 上のすべての Instana プロセス内コレクターのセットアップに共通です。

  • このセクションで説明するステップを実行する前に、アプリケーションが使用するランタイムに固有の指示に従ってコンテナー・イメージがビルドされていることを確認してください。

Cloud Run 上のすべての Instana プロセス・コレクターは、Instana バックエンドに接続して認証できるようにするために、共通の構成値のセットを必要とします。

  1. Cloud Run サービスのリビジョンを作成します。

    クラウド実行サービス・リビジョンの作成

  2. サービス・リビジョン構成ページで、 詳細設定 > 変数に移動します。

    コンテナー定義の編集

  3. 以下の 2 つの環境変数をコンテナー仕様に追加します。

    • INSTANA_ENDPOINT_URL: これがあなたのサーバーレス監視エンドポイントです。 https://serverless- で始まる領域に対して正しい値を使用していることを確認してください。
    • INSTANA_AGENT_KEY: エージェント・キー

メトリックの表示

メトリックを表示するには、以下のステップを実行します。

  1. Instana のUIのサイドバーで、 「インフラストラクチャ」 を選択します。
  2. 特定のモニター対象ホストをクリックします。

その後、収集されたすべてのメトリックとモニター対象プロセスを含むホスト・ダッシュボードを表示できます。

構成データ

サービス改訂ごとに以下の静的構成データが収集されます。

  • REGION,
  • サービス名
  • 構成名
  • 改訂名
  • プロジェクト ID
  • 数値プロジェクト ID (プロジェクト番号)
  • 改訂の作成時刻
  • 改訂ラベル

複数のリビジョンがあるCloud Runサービスの場合、GCP エージェントは最新のリビジョンのデータを収集します。

パフォーマンス・メトリック

メトリック 説明
要求カウント リビジョンに到達した要求の数。 コンテナー・インスタンスに到達しない要求 (例えば、無許可の要求、またはインスタンスの最大数に達した場合) を除外します。
要求待ち時間の 99 パーセンタイル 要求待ち時間 (ミリ秒) の分布に対する 99 パーセンタイル (リビジョンに到達した要求の場合)。
要求待ち時間の 95 パーセンタイル 要求待ち時間 (ミリ秒) の分布に対する 95 パーセンタイル (リビジョンに到達した要求の場合)。
要求待ち時間の 50 パーセンタイル 要求待ち時間 (ミリ秒) の分布に対する 50 パーセンタイル (リビジョンに到達した要求の場合)。
請求可能なインスタンス時間 改訂のすべてのコンテナー・インスタンスから集計された請求可能な時間。 特定のコンテナー・インスタンスについて、コンテナー・インスタンスが開始するか、少なくとも 1 つの要求が処理されている場合に、請求可能な時間が発生します。 請求可能な時間は、100 ミリ秒単位に切り上げられます。
コンテナー・メモリー割り振り 99 パーセンタイル リビジョンのコンテナー・メモリー割り振りの 99h パーセンタイル (ギガバイト-秒単位)。
コンテナー・メモリー割り振り 95 パーセンタイル リビジョンのコンテナー・メモリー割り振りの 95h パーセンタイル (ギガバイト-秒単位)。
コンテナー・メモリー割り振り 50 パーセンタイル リビジョンのコンテナー・メモリー割り振りの 50h パーセンタイル (ギガバイト-秒単位)。

すべてのメトリックの粒度は 60 秒です。