Google Cloud の外部で実行されているアプリケーションのプロファイリング

このページでは、Google Cloud の外部で実行されているアプリケーションのプロファイリングについて説明します。

このシナリオでは、Google Cloud の外部でアプリケーションと Cloud Profiler エージェントを実行し、プロファイリング データを Cloud Profiler のインターフェースで分析します。

Profiler のインターフェースでプロファイリング データを分析するには、Google Cloud プロジェクトが必要です。任意の場所で実行されているプロファイリング エージェントから分析用のプロファイルを受信できるようにする必要があります。そのためには、以下の操作を行います。

  1. Google Cloud プロジェクトを作成し、API を有効にします。
  2. プロファイリング エージェントの認証情報を取得します。この情報は、プロファイルをアップロードするときに使用します。
  3. この認証情報と Google Cloud プロジェクトの ID を使用するようにエージェントを構成します。

Google Cloud プロジェクトを作成する

Google Cloud Console のプロジェクト セレクタのページで、[プロジェクトを作成] をクリックして新しい Google Cloud プロジェクトの作成を開始します。

プロジェクト セレクタに移動

Profiler API を有効にする

  1. Google Cloud コンソールのナビゲーション パネルで [API とサービス] を選択し、[API とサービスの有効化] をクリックして、Cloud Profiler API を有効にします。

    [Profiler API] 設定に移動

  2. [API が有効です] が表示されている場合、API はすでに有効になっています。そうでない場合は、[有効にする] ボタンをクリックします。

エージェントの認証情報を取得する

エージェントが使用する認証情報を取得する方法は 2 つあります。

  • エージェントに秘密鍵認証でサービス アカウントを使用させる。
  • エージェントにアプリケーションのデフォルトの認証情報(ADC)を使用させる。

サービス アカウントを使用する

エージェントが秘密鍵認証でサービス アカウントを使用するように設定するには、次の操作を行います。

  1. サービス アカウントを作成します。たとえば、Google Cloud CLI を使用すると次のようになります。

    gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
    

    詳細については、サービス アカウントの作成をご覧ください。

  2. プロファイリング データを書き込めるように、サービス アカウントに roles/cloudprofiler.agent ロールを付与します。たとえば、Google Cloud CLI を使用すると次のようになります。

     gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
         --member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \
         --role roles/cloudprofiler.agent
    

    詳しくは、サービス アカウントへのロールの付与をご覧ください。

  3. サービス アカウントに JSON キーを作成します。たとえば、Google Cloud CLI を使用すると次のようになります。

     gcloud iam service-accounts keys create \
         ~/key.json \
         --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
    

    詳しくは、サービス アカウントキーの作成をご覧ください。

  4. プロファイリング エージェントが稼働しているマシンで、次の操作を行います。

    1. 上で作成した JSON キーを含むファイルのコピーを配置します。
    2. GOOGLE_APPLICATION_CREDENTIALS 環境変数に、JSON キーを含むファイルの完全修飾名を設定します。プロファイリング エージェントを実行するプロセスがこの環境変数を参照できるようにします。プロセスの実行にスクリプトや Dockerfile を使用している場合は、そこに環境変数を含めます。

アプリケーションのデフォルト認証情報を使用する

エージェントがアプリケーションのデフォルト認証情報を使用できるようにするには、ウェブフローからユーザーアクセスの認証情報を取得し、アプリケーションのデフォルト認証情報ライブラリから参照できる場所に配置します。これらの認証情報は、サービス アカウントの代わりとして機能します。

アプリケーションのデフォルト認証情報を使用するには、次の Google Cloud CLI コマンドを実行します。

 gcloud auth application-default login

コマンドの指示に従って操作を行います。

エージェントと Google Cloud プロジェクトをリンクする

プロファイルをアップロードできるように、プロファイリング エージェントが Google Cloud プロジェクトの ID を使用するように構成する必要があります。この構成方法は言語によって異なります。

Go

追加のパラメータ ProjectIDprofiler.Config オブジェクトに指定します。詳しくは、Go アプリケーションのプロファイリングをご覧ください。

 profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}

Java

Java 呼び出しで、追加の Java エージェント構成フラグ cprof_project_id を指定します。

 -cprof_project_id=GCP_PROJECT_ID

アプリケーションが Compute Engine メタデータ サーバーにアクセスできない場合、次のようなメッセージが表示されます。

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
こうしたメッセージが表示されないようにするには、エージェント構成フラグに -cprof_zone_name=VALUE を追加して、アプリケーションを再起動します。このシナリオでは、VALUE を「test」などのわかりやすい文字列に置き換えます。

Node.js

追加のパラメータ projectIDserviceContext オブジェクトに指定します。詳しくは、Node.js アプリケーションのプロファイリングをご覧ください。

projectId: 'GCP_PROJECT_ID',
serviceContext: {
  ...
}

Python

追加のパラメータ project_idstart メソッド呼び出しで指定します。詳しくは、Python アプリケーションのプロファイリングをご覧ください。

googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')

次のステップ