Google Cloud の外部で実行されているアプリケーションのプロファイリング
このページでは、Google Cloud の外部で実行されているアプリケーションのプロファイリングについて説明します。
このシナリオでは、Google Cloud の外部でアプリケーションと Cloud Profiler エージェントを実行し、プロファイリング データを Cloud Profiler のインターフェースで分析します。
Profiler のインターフェースでプロファイリング データを分析するには、Google Cloud プロジェクトが必要です。他の場所で実行されているプロファイリング エージェントから分析用のプロファイルを受信できるようにする必要があります。そのためには、以下の操作を行います。
- Google Cloud プロジェクトを作成し、API を有効にします。
- プロファイリング エージェントの認証情報を取得します。この情報は、プロファイルをアップロードするときに使用します。
- この認証情報と Google Cloud プロジェクトの ID を使用するようにエージェントを構成します。
Google Cloud プロジェクトを作成する
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Profiler API を有効にする
-
Enable the required API.
[API が有効です] が表示されている場合、API はすでに有効になっています。そうでない場合は、[有効にする] ボタンをクリックします。
エージェントの認証情報を取得する
エージェントが使用する認証情報を取得する方法は 2 つあります。
- エージェントに秘密鍵認証でサービス アカウントを使用させる。
- エージェントにアプリケーションのデフォルトの認証情報(ADC)を使用させる。
サービス アカウントを使用する
エージェントが秘密鍵認証でサービス アカウントを使用するように設定するには、次の操作を行います。
サービス アカウントを作成します。たとえば、Google Cloud CLI を使用すると次のようになります。
gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
詳細については、サービス アカウントの作成をご覧ください。
プロファイリング データを書き込めるように、サービス アカウントに 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
詳しくは、サービス アカウントへのロールの付与をご覧ください。
サービス アカウントに JSON キーを作成します。たとえば、Google Cloud CLI を使用すると次のようになります。
gcloud iam service-accounts keys create \ ~/key.json \ --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
詳しくは、サービス アカウントキーの作成をご覧ください。
プロファイリング エージェントが稼働しているマシンで、次の操作を行います。
- 上で作成した JSON キーを含むファイルのコピーを配置します。
GOOGLE_APPLICATION_CREDENTIALS
環境変数に、JSON キーを含むファイルの完全修飾名を設定します。プロファイリング エージェントを実行するプロセスがこの環境変数を参照できるようにします。プロセスの実行にスクリプトや Dockerfile を使用している場合は、そこに環境変数を含めます。
アプリケーションのデフォルト認証情報を使用する
エージェントがアプリケーションのデフォルト認証情報を使用できるようにするには、ウェブフローからユーザーアクセスの認証情報を取得し、アプリケーションのデフォルト認証情報ライブラリから参照できる場所に配置します。これらの認証情報は、サービス アカウントの代わりとして機能します。
アプリケーションのデフォルト認証情報を使用するには、次の Google Cloud CLI コマンドを実行します。
gcloud auth application-default login
コマンドの指示に従って操作を行います。
エージェントと Google Cloud プロジェクトをリンクする
プロファイルをアップロードできるように、プロファイリング エージェントが Google Cloud プロジェクトの ID を使用するように構成する必要があります。この構成方法は言語によって異なります。
Go
追加のパラメータ ProjectID
を profiler.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
追加のパラメータ projectID
を serviceContext
オブジェクトに指定します。詳しくは、Node.js アプリケーションのプロファイリングをご覧ください。
projectId: 'GCP_PROJECT_ID',
serviceContext: {
...
}
Python
追加のパラメータ project_id
を start
メソッド呼び出しで指定します。詳しくは、Python アプリケーションのプロファイリングをご覧ください。
googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')