Deploy application

進行状況を確認

/ 50

Create a Log bucket

進行状況を確認

/ 25

create the log sink

進行状況を確認

/ 25

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP1088

Google Cloud セルフペース ラボ

概要

Cloud Logging は、Google Cloud からのロギングデータとイベントを保存、検索、分析、モニタリングし、これらに関するアラートを発信できるフルマネージド サービスです。 このラボは、Cloud Logging で提供されている機能とツールについて学ぶことで、アプリケーションの分析情報を取得できるようになることを目的としたものです。

学習内容

このラボでは、次の方法について学びます。

  • Cloud Logging を効果的に使用して、Google Kubernetes Engine(GKE)で動作しているアプリケーションに関する分析情報を取得する。
  • ログ分析を使用してクエリを効果的に作成および実行する。

ラボで使用されているデモ アプリケーション

このラボでは、GKE クラスタにデプロイされているこのマイクロサービス デモアプリに基づいたシナリオを使用します。このデモアプリには、さまざまなマイクロサービスと、その依存関係が組み込まれています。

さまざまなマイクロサービスとその依存関係を示すチャート

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. インフラストラクチャ設定

GKE クラスタを確認する

GKE クラスタに接続し、そのクラスタが正しく作成されていることを確認します。

  1. Cloud Shell で、gcloud のゾーンを設定します。
gcloud config set compute/zone {{{project_0.default_zone|placeholder}}}
  1. 次のコマンドを使用して、クラスタのステータスを表示します。
gcloud container clusters list

次のようなステータスが表示されます。

NAME: day2-ops LOCATION: us-west1 MASTER_VERSION: 1.31.5-gke.1023000 MASTER_IP: 34.169.197.173 MACHINE_TYPE: e2-standard-2 NODE_VERSION: 1.31.5-gke.1023000 NUM_NODES: 3 STATUS: RUNNING

クラスタのステータスは「RUNNING」と表示されるはずです。まだ「PROVISIONING」の場合は、少し待ってから上記のコマンドを再び実行します。ステータスが「RUNNING」になるまでこれを繰り返してください。

Google Cloud コンソールで進行状況を確認することもできます。ナビゲーション メニューナビゲーション メニュー アイコン)で、[Kubernetes Engine] > [クラスタ] をクリックします。

  1. クラスタのステータスが「RUNNING」になったら、クラスタの認証情報を取得します。
gcloud container clusters get-credentials day2-ops --region {{{project_0.default_region|placeholder}}}

出力は次のようになります。

Fetching cluster endpoint and auth data. kubeconfig entry generated for day2-ops.
  1. ノードが作成されていることを確認します。
kubectl get nodes

出力は次のようになります。

NAME STATUS ROLES AGE VERSION gke-day2-ops-day2-ops-node-pool-0d9c7ef3-xc44 Ready <none> 11m v1.31.5-gke.1023000 gke-day2-ops-day2-ops-node-pool-b17ac6d6-tch7 Ready <none> 11m v1.31.5-gke.1023000 gke-day2-ops-day2-ops-node-pool-ed506ae8-wsc5 Ready <none> 11m v1.31.5-gke.1023000

タスク 2. アプリケーションのデプロイ

次に、Online Boutique というマイクロサービス アプリケーションをクラスタにデプロイし、モニタリング可能な実際のワークロードを作成します。

  1. 次のコマンドを実行してリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
  1. microservices-demo ディレクトリに移動します。
cd microservices-demo
  1. kubectl を使用してアプリをインストールします。
kubectl apply -f release/kubernetes-manifests.yaml
  1. すべてが正しく動作していることを確認します。
kubectl get pods

次のような出力になっている必要があります。次のステップに進む前に、すべての Pod が「Running」のステータスになるまでコマンドを再実行してください。

NAME READY STATUS RESTARTS AGE adservice-55f94cfd9c-4lvml 1/1 Running 0 20m cartservice-6f4946f9b8-6wtff 1/1 Running 2 20m checkoutservice-5688779d8c-l6crl 1/1 Running 0 20m currencyservice-665d6f4569-b4sbm 1/1 Running 0 20m emailservice-684c89bcb8-h48sq 1/1 Running 0 20m frontend-67c8475b7d-vktsn 1/1 Running 0 20m loadgenerator-6d646566db-p422w 1/1 Running 0 20m paymentservice-858d89d64c-hmpkg 1/1 Running 0 20m productcatalogservice-bcd85cb5-d6xp4 1/1 Running 0 20m recommendationservice-685d7d6cd9-pxd9g 1/1 Running 0 20m redis-cart-9b864d47f-c9xc6 1/1 Running 0 20m shippingservice-5948f9fb5c-vndcp 1/1 Running 0 20m
  1. 次のコマンドを実行して、アプリケーションの外部 IP を取得します。
export EXTERNAL_IP=$(kubectl get service frontend-external -o jsonpath="{.status.loadBalancer.ingress[0].ip}") echo $EXTERNAL_IP

IP アドレスが返されるのは、サービスのデプロイが完了した後になります。そのため、外部 IP アドレスが割り当てられるまでこのコマンドを繰り返さなくてはならない場合があります。

IP アドレスが割り当てられると、次のような出力が表示されます。

35.222.235.86
  1. 最後に、アプリが起動して稼働していることを確認します。
curl -o /dev/null -s -w "%{http_code}\n" http://${EXTERNAL_IP}

確認結果は次のようになります。

200

アプリケーションがデプロイされたら、コンソールでステータスを確認することもできます。

  1. Kubernetes Engine ページの左側のペインで、[ワークロード] をクリックして、すべての Pod に問題がないことを確認します。

  2. 左側のペインで [Gateway、Service、Ingress] をクリックし、[Services] タブをクリックして、すべての Service が [OK] ステータスになっていることを確認します。

アプリケーションを開く

[Gateways、Services、Ingress] > [Services] で、Service frontend-externalエンドポイント IP をクリックします。

次のようなデモ ウェブページが開きます。

注: プロンプトが表示された場合は、[サイトへ移動] ボタンをクリックする必要があります。 デモ アプリケーションのウェブページ

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 アプリケーションをデプロイする

タスク 3. ログバケットの管理

ログ分析を有効にする方法は 2 つあります。一つは既存のバケットをアップグレードする方法で、もう一つはログ分析を有効にした新しいログバケットを作成する方法です。

既存のバケットをアップグレードする

既存のログバケットをアップグレードするには、以下の手順を行います。

  1. コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[すべてのプロダクトを表示] > [オブザーバビリティ] > [ロギング] をクリックします。[お気に入り] をクリックして、ラボの後半で簡単にアクセスできるようにします。

  2. [ログストレージ] をクリックします。

  3. 既存のバケット(デフォルトのバケット)の [アップグレード] をクリックします。

  4. 確認ダイアログで [アップグレード] をクリックします。

  5. ステータスが [アップグレード済み] に変わるまで待ちます。

  6. [開く] をクリックし、ビュー _AllLogs を選択します。

[ログ分析] ページが開きます。

新しいログバケットを作成する

新しいログバケットを作成するには、以下の手順を行います。

  1. 左側のペインで [ログストレージ] をクリックし、[ログストレージ] ウィンドウの上部にある [ログバケットを作成] をクリックします。

  2. バケットに対して「day2ops-log」のような名前を入力します。

  3. [ログ分析を使用するにはアップグレードしてください] と [このバケットにリンクする新しい BigQuery データセットを作成する] の両方をオンにします。

  4. BigQuery データセット名「day2ops_log」を入力します。

  5. [リージョン] フィールドで、[グローバル] オプションを選択します。

[このバケットにリンクする新しい BigQuery データセットを作成する] を選択すると、BigQuery でデータセットが作成されます(存在しない場合)。これにより、BigQuery でクエリを実行できます。

  1. [バケットを作成] をクリックしてログバケットを作成します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ログバケットを作成する

新しいログバケットに書き込む

ログエントリを新しいログバケットにルーティングするログシンクを作成する方法はいくつかあります。

  • ログルーターから直接作成する。
  • ログ エクスプローラから作成する。シンクを作成するときに、ログクエリを実行して目的のログを選択およびフィルタできます。このアプローチの長所は、ログクエリがシンクの構成にフィルタとして自動的にコピーされることです。
  1. 左側のペインで [ログ エクスプローラ] をクリックします。

  2. 右上で [クエリを表示] を有効にして、クエリ フィールドで次のクエリを実行します。

resource.type="k8s_container"
  1. [操作] > [シンクを作成] をクリックします。

  2. シンク名に「day2ops-sink」と入力します。

  3. [次へ] をクリックします。

  4. シンクサービスのプルダウン リストで [Logging バケット] を選択します。

  5. 先ほど作成した新しいログバケットを選択します。

新しいログバケットは次のようになります。

projects/qwiklabs-gcp-00-xxxxxxx/locations/global/buckets/day2ops-log
  1. [次へ] をクリックします。

フィルタにはすでにリソースタイプのクエリが表示されています。

  1. [シンクを作成] をクリックします。

1 分ほど待つとシンクが作成されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ログシンクを作成する

新しいログバケットから読み取る

左側のペインで、[ログ エクスプローラ] に移動します。[フィールド] リストの [リソースタイプ] セクションには、ログのリソースタイプが多数あります。

  1. 新しいログバケットのログを表示するには、ログ エクスプローラのウィンドウの左上にある [プロジェクトのログ] > [ログビュー] > 新しいログバケット(作成したばかりのログバケット)をクリックします。

  2. [適用] をクリックします。

リソースタイプとして Kubernetes コンテナのみが表示され、ログエントリが少なくなっています。これは、フィルタされたログのみがバケットに送信されるためです。

タスク 4. ログ分析

  • 左側のペインで [ログ分析] をクリックして [ログ分析] ページを開きます。

クエリ フィールドが空の場合、または使用するテーブルを忘れた場合は、[クエリを実行] ボタンをクリックしてサンプルクエリを再表示します。

クエリ フィールドで独自のクエリを実行できます。このタスクでは、いくつかの例を示します。

重要: FROM 句のログビュー名は、ログバケットによって異なります。正しいビュー名を使用していることを確認してください。確認するには、前の手順を使用します。

最小、最大、平均のレイテンシを見つけるためのクエリの例

右側のペインで、[<> SQL] を選択します。[クリア] ボタンをクリックして、クエリエディタから既存のコンテンツを削除します。クエリをエディタに貼り付け、[クエリを実行] を選択して、コンテナから最新のエラーを取得します。

このクエリを使用すると、フロントエンド サービスの期間における最小、最大、平均のレイテンシが表示されます。

SELECT hour, MIN(took_ms) AS min, MAX(took_ms) AS max, AVG(took_ms) AS avg FROM ( SELECT FORMAT_TIMESTAMP("%H", timestamp) AS hour, CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64 ) AS took_ms FROM `{{{project_0.project_id | "PROJECT_ID"}}}.global.day2ops-log._AllLogs` WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR) AND json_payload IS NOT NULL AND SEARCH(labels, "frontend") AND JSON_VALUE(json_payload.message) = "request complete" ORDER BY took_ms DESC, timestamp ASC ) GROUP BY 1 ORDER BY 1

プロダクト ページのアクセス数を調べるクエリの例

次のクエリを使用すると、ユーザーが過去 1 時間に特定のプロダクト ページにアクセスした回数が表示されます。

SELECT count(*) FROM `{{{project_0.project_id | "PROJECT_ID"}}}.global.day2ops-log._AllLogs` WHERE text_payload like "GET %/product/L9ECAV7KIM %" AND timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)

ショッピング カートでの購入手続きで終了するセッション数を調べるクエリの例

次のクエリを使用すると、チェックアウトで終了したセッションの数(/cart/checkout サービスへの POST 呼び出し)が表示されます。

SELECT JSON_VALUE(json_payload.session), COUNT(*) FROM `{{{project_0.project_id | "PROJECT_ID"}}}.global.day2ops-log._AllLogs` WHERE JSON_VALUE(json_payload['http.req.method']) = "POST" AND JSON_VALUE(json_payload['http.req.path']) = "/cart/checkout" AND timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) GROUP BY JSON_VALUE(json_payload.session)

お疲れさまでした

Cloud Logging を使用して GKE で動作しているアプリケーションに関する分析情報を取得し、ログ分析を使用してクエリを作成および実行しました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2026 年 1 月 15 日

ラボの最終テスト日: 2026 年 1 月 15 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。