概要
このラボでは、実行中のアプリケーションにおけるパフォーマンスの問題を Cloud Trace と Cloud Monitoring を使用して診断し、修正します。また、Cloud Monitoring を使用してアプリケーションのパフォーマンス指標を確認します。
目標
このラボでは、次のタスクの実行方法について学びます。
- Cloud Trace を有効にしてインストールし、構成する。
- トレース情報を表示して、パフォーマンスの問題を診断する。
- パフォーマンスの問題を修正し、パフォーマンスが改善されたことを確認する。
- Cloud Monitoring を使用して、Google Cloud Platform のプロダクトをモニタリングする。
設定と要件
ラボの設定
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
Qwiklabs にシークレット ウィンドウでログインします。
-
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
-
準備ができたら、[ラボを開始] をクリックします。
-
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
-
[Google Console を開く] をクリックします。
-
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
-
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud Shell の有効化
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

-
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
出力:
Credentialed accounts:
- @.com (active)
出力例:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project =
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注:
gcloud ドキュメントの全文については、
gcloud CLI の概要ガイド
をご覧ください。
タスク 1. ケーススタディ用アプリケーションを準備する
このセクションでは、Cloud Shell にアクセスしてクイズ アプリケーションを含む Git リポジトリのクローンを作成します。その後、環境変数を構成してアプリケーションを実行します。
Cloud Shell でソースコードのクローンを作成する
- 次のコマンドを実行して、クラスのリポジトリのクローンを作成します。
git clone --depth=1 https://github.com/GoogleCloudPlatform/training-data-analyst
- 作業ディレクトリへのショートカットとしてソフトリンクを作成します。
ln -s ~/training-data-analyst/courses/developingapps/v1.3/nodejs/stackdriver-trace-monitoring ~/stackdriver-trace-monitoring
ケーススタディ用アプリケーションを構成、実行する
- このラボのサンプル ファイルが含まれているディレクトリに移動します。
cd ~/stackdriver-trace-monitoring/start
- 次のコマンドを実行して、クイズ アプリケーションを構成します。
. prepare_environment.sh
プロンプトが表示されたら「Y」と入力して、未承認の呼び出しをすべて許可します。
注: このスクリプト ファイルを実行すると、以下の処理が行われます。
- App Engine アプリケーションを作成する。
- 環境変数
GCLOUD_PROJECT と GCLOUD_BUCKET をエクスポートする。
-
npm install を実行する。
- Cloud Datastore にエンティティを作成する。
- Cloud Spanner のインスタンス、データベース、テーブルを作成する。
- Google Cloud Pub/Sub のトピックを 2 つ作成する。
- Cloud Functions を 2 つ作成する。
- Google Cloud Platform のプロジェクト ID を出力する。
- 次のコマンドを実行して、このアプリケーションを実行するための Cloud Shell 環境を準備します。
gcloud iam service-accounts create quiz-account --display-name "Quiz Account"
gcloud iam service-accounts keys create key.json --iam-account=quiz-account@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com
export GOOGLE_APPLICATION_CREDENTIALS=key.json
gcloud projects get-iam-policy $DEVSHELL_PROJECT_ID --format json > iam.json
node setup/add_iam_policy_to_service_account.js
gcloud projects set-iam-policy $DEVSHELL_PROJECT_ID iam_modified.json
注: これらのコマンドを実行すると、以下の処理が行われます。
- サービス アカウントを作成する。
- サービス アカウントのキーファイルを作成してダウンロードする。
- キーファイルを参照する環境変数
GOOGLE_APPLICATION_CREDENTIALS をエクスポートする。
- サービス アカウントがすべての必要な API にアクセスできるように、必要な IAM 権限を作成する。
Compute Engine や Container Engine の本番環境では、カスタム サービス アカウントまたはスコープを使用して API へのアクセスを許可します。通常は、GCP に鍵のローテーションの管理を許可します。
タスク 2. Cloud Trace を活用する
このセクションでは、Trace API を有効にし、クイズ アプリケーションで Cloud Trace を作成して起動するコードを記述します。また、Cloud コンソールで複数のプロダクトにわたって、アプリケーションのタイミングを確認します。
Cloud Trace API を有効にする
-
Cloud コンソールのナビゲーション メニューで、[API とサービス] をクリックします。
- [ライブラリ] をクリックします。
- [API とサービスを検索] に「Google Trace」と入力します。
- [Cloud Trace API] をクリックします。
- この API が有効になっていない場合は、[有効にする] をクリックします。
Cloud Trace を設定するためのコードを記述する
-
Cloud Shell に戻ります。
- 次のコマンドを実行して、Cloud Trace 用に Node.js エージェントをインストールします。
npm install --save @google-cloud/trace-agent
-
Cloud Shell で [エディタを開く] をクリックして、新しいウィンドウで開きます。
-
stackdriver-trace-monitoring/start に移動します。
-
...frontend/app.js を開きます。
注: 次の文字列の間のコードを更新してください。
// TODO
// END TODO
学習効果を最大限に高めるために、コード、インライン コメント、関連する API ドキュメントを確認してください。
-
app.js ファイルの先頭で、'@google-cloud/trace-agent' モジュールを読み込み、start() で起動します。
frontend/app.js
// TODO: trace-agent を読み込んで起動する
// アプリケーションの他のコードよりも先に
// Trace を起動する必要があります。
require('@google-cloud/trace-agent').start({
projectId: config.get('GCLOUD_PROJECT')
});
// END TODO
- ファイルを保存します。
ウェブ アプリケーションを実行してトレースデータを表示する
- 次のコマンドを実行して、アプリケーションを開始します。
npm start
-
Cloud Shell で [ウェブでプレビュー] アイコン > [ポート 8080 でプレビュー] をクリックして、クイズ アプリケーションをプレビューします。
-
Cloud Platform Console に戻ります。
-
ナビゲーション メニューで [トレース] をクリックします。
注: トレースの概要ページが開きます。
最初のリクエストが取り込まれるまでには数分かかることがあります。
その後は数秒でトレースデータが表示されます。
- 最初のトレースが入力されるのを待つ間に、Cloud Shell ウィンドウに戻ってエラー メッセージを探します。
注: 場合によっては、API を有効にした後のタイミングの問題により、Cloud Trace エージェントや Debug エージェントに関するエラーが表示されることがあります。
エラーが表示された場合はクイズ アプリケーションを停止し、1 分後に再び開始してから、クイズ アプリケーションのホームページを更新してください。
-
Cloud Platform Console の [トレース] に戻ります。
- 最初のトレースが入力されたら、[トレースリスト] をクリックします。
注: リクエストのレイテンシ、HTTP メソッド、URL が表示されます。
- クイズ アプリケーションに戻り、[Create Question] をクリックします。
- フォームに以下の値を入力します。
|
フォームの項目
|
値
|
|
Author
|
[自分の名前]
|
|
Quiz
|
Google Cloud Platform
|
|
Title
|
Which Google Cloud product allows you to see request timing?
|
|
Answer 1
|
Debugger
|
|
Answer 2
|
Error Reporting
|
|
Answer 3
|
Logging
|
|
Answer 4
|
Trace([Answer 4] のラジオボタンを選択します)
|
- [保存] をクリックします。
-
Cloud Platform Console の Cloud Trace ウィンドウに戻り、自動再読み込みを有効にします。
注: トレースリストを確認します。
次の 2 つの新しいリクエストが表示されているはずです。
- GET /questions/add
- POST /questions/add
-
/questions/add URL に対する POST リクエストをクリックします。
注: このリクエストの処理にかかった合計時間と、Cloud Datastore に対する呼び出しが表示されます。
- クイズ アプリケーションに戻り、[Take Test] をクリックします。
- [People] をクリックします。
- テストを完了して、フィードバックを送信します。
-
Cloud コンソールの Cloud Trace ウィンドウに戻ります。
注: 再度トレースリストを確認します。一連の新しいリクエストが表示されているはずです。
以下のリクエストを見つけてクリックします。
- POST /api/quizzes/people
- POST /api/quizzes/feedback/people
これらは、クイズ アプリケーションに対するクライアント側のアプリケーションからの呼び出しを表します。
リクエストを完了するのにかかった合計時間が再び表示されます。
これらは順次呼び出しになっています。これは、Cloud Spanner に保存する解答データを Cloud Pub/Sub に送信するのに、Cloud Pub/Sub のリクエストで Cloud Datastore の Question エンティティから正解を取得する必要があるからです。
- クイズ アプリケーションで、ツールバーの [Quite Interesting Quiz] をクリックし、[Leaderboard] をクリックします。
-
Cloud コンソールの Cloud Trace ウィンドウに戻り、この新しいリクエストのトレースデータを確認します。
注: このリクエストには Cloud Spanner への呼び出しが含まれていることがわかります。
タスク 3. Cloud Trace でパフォーマンスの問題を診断する
このセクションでは、引き続き Cloud Trace を使用してクイズ アプリケーションを調査し、パフォーマンスの問題を見つけて解決します。
Cloud Trace でパフォーマンスの問題を特定する
- クイズ アプリケーションに戻り、[Take Test] をクリックします。
- [Places] をクリックします。
- テストを完了して、フィードバックを送信します。
-
Cloud コンソールの Cloud Trace ウィンドウに戻ります。
注: 再度トレースリストを確認します。一連の新しいリクエストが表示されているはずです。
以下のリクエストを見つけてクリックします。
- POST /api/quizzes/places
- POST /api/quizzes/feedback/places
これらは、クイズ アプリケーションに対するクライアント側のアプリケーションからの呼び出しを表します。
リクエストを完了するのにかかった合計時間が再び表示されます。
これらは順次呼び出しになっています。これは、Cloud Pub/Sub に解答データを送信するのに、Cloud Pub/Sub のリクエストで Cloud Datastore のデータが必要だからです。
注: その一方で、Cloud Pub/Sub への各呼び出しも順次呼び出しになっています。これは問題です。
- クイズ アプリケーションに戻り、[GCP] をクリックします。
- テストを完了して、フィードバックを送信します。
-
Cloud コンソールの Cloud Trace ウィンドウに戻ります。
注: 再度トレースリストを確認します。一連の新しいリクエストが表示されているはずです。
以下のリクエストを見つけてクリックします。
- POST /api/quizzes/gcp
- POST /api/quizzes/feedback/gcp
これらは、クイズ アプリケーションに対するクライアント側のアプリケーションからの呼び出しを表します。
リクエストを完了するのにかかった合計時間が再び表示されます。
これらは順次呼び出しになっています。これは、Cloud Pub/Sub に解答データを送信するのに、Cloud Pub/Sub のリクエストで Cloud Datastore のデータが必要だからです。
注: その一方で、今回も Cloud Pub/Sub への各呼び出しが順次呼び出しになっています。
このクイズには 4 つの質問があるため、これでは Cloud Pub/Sub メッセージの送信に 4 倍の時間がかかってしまいます。
これは明らかに問題です。
アプリケーション コードを修正してパフォーマンスの問題を解決する
-
Cloud Shell に戻り、コードエディタを起動します(まだ開いていない場合)。
-
stackdriver-trace-monitoring/start/ に移動します。
-
...frontend/api/index.js を開きます。
- 解答メッセージを順番にパブリッシュするステートメントを見つけて、並列処理で実行するように修正します。
注: この変更はとても簡単です。コードを次のように変更します。
変更前の api/index.js:
// TODO: 複数の解答を同時に Pub/Sub に送信する
// 複数の解答を順次 Pub/Sub に送信する
// 次のステートメントで順次送信を同時送信に変更する
sequence(answersWithCorrect.map(answer => () => publisher.publishAnswer(answer))).then(() => {
// すべての Pub/Sub メッセージが確認応答されてからクライアントに戻る
const score = answersWithCorrect.filter(a => a.answer == a.correct).length;
res.status(200).json({ correct: score, total: questions.length });
});
// END TODO
変更後の api/index.js:
// TODO: 複数の解答を同時に Pub/Sub に送信する
// 同時送信に変更済み
parallel(answersWithCorrect.map(answer => () => publisher.publishAnswer(answer))).then(() => {
// すべての Pub/Sub メッセージが確認応答されてからクライアントに戻る
const score = answersWithCorrect.filter(a => a.answer == a.correct).length;
res.status(200).json({ correct: score, total: questions.length });
});
// END TODO
Cloud Trace で問題の解決を確認する
-
Cloud Shell に戻り、Ctrl+C キーを押してアプリケーションを停止してから、再びアプリケーションを開始します。
- クイズ アプリケーションに戻り、[People]、[Places]、[GCP] の各テストをもう一度受けます。
-
Cloud コンソールの Cloud Trace ウィンドウに戻ります。
注: 再度トレースリストを確認します。一連の新しいリクエストが表示されているはずです。
以下のリクエストを見つけてクリックします。
- POST /api/quizzes/people|places|gcp
- POST /api/quizzes/feedback/people|places|gcp
これらは、クイズ アプリケーションに対するクライアント側のアプリケーションからの呼び出しを表します。
リクエストを完了するのにかかった合計時間が再び表示されます。
注: 今回は、すべての Pub/Sub メッセージが並行してディスパッチされています。
これにより、リクエストの処理にかかる時間が大幅に短縮されます。
タスク 4. Cloud Monitoring でアプリケーション指標を可視化する
このセクションでは、引き続きクイズ アプリケーションを調査するために Cloud Monitoring で指標を調べてダッシュボードを作成します。
Monitoring ワークスペースを作成する
Google Cloud プロジェクトに関連付けられた Monitoring ワークスペースを設定します。次の手順に沿って、Monitoring を無料でお試しいただける新しいアカウントを作成します。
-
Cloud コンソールで、ナビゲーション メニュー > [Monitoring] をクリックします。
-
ワークスペースがプロビジョニングされるまで待ちます。
Monitoring ダッシュボードが開いたら、ワークスペースの準備は完了です。

ダッシュボードを作成して指標を調べる
- 左側のペインで [ダッシュボード] をクリックします。
- [+CREATE DASHBOARD] をクリックします。
- [New Dashboard Name] に「Quiz Application Metrics」と入力します。
- [Line] をクリックします。
- [Resource & Metric] フィールドで、[VM Instance] > [CPU Utilization] プルダウンをクリックします。
- [アクティブなリソースと指標のみを表示] を有効にします。
注: アクティブなリソースの例としては、以下のものがあります。
- cloud_function
- datastore_request
- gae_app(Cloud Datastore によるもの)
- gcs_bucket
- global
- pubsub_subscription
- pubsub_topic
- spanner_instance
- 各リソースを順番にクリックして、関心のある指標をいくつか選択します。
注: たとえば次のような指標を調べます。
- cloudfunctions/function/execution_count
- datastore/api/request_count
- storage/api/request_count
- logging/log_entry_count
- pubsub/subscription/num_outstanding_messages
- pubsub/topic/message_sizes
- spanner/api/request_count
- 選択したリソースと指標を含むグラフをいくつか作成します。
注: 確認
他のどのコードよりも先に読み込む必要がある Google Cloud プロダクトはどれですか。
- Cloud Trace
- Cloud デバッガ
- Cloud Error Reporting
- Cloud Logging
Google Cloud Trace に統合されている GCP プロダクトはどれですか。
- Cloud Datastore
- Cloud Spanner
- Cloud Pub/Sub
- Cloud Storage
グラフを作成してアプリケーションのパフォーマンスを表示できる Cloud Monitoring の機能はどれですか。
- アラート
- 稼働時間チェック
- ダッシュボード
- グループ
タスク 5. 参考: クイズ アプリケーションを Container Engine または App Engine にデプロイする
該当するラボのメモを使用してこの作業を行います。アプリケーションをデプロイすると、フロントエンドと Google Cloud リソースの両方をモニタリングできるようになります。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。