ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Google Cloud のアラート

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 中級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

概要

このラボでは、アプリケーションを App Engine にデプロイし、そのアプリケーションにアクセスできなくなった場合やエラーが生成された場合に通知するアラート ポリシーを作成します。

目標

このラボでは、次のタスクの実行方法について学びます。

  • GitHub からサンプルアプリをダウンロードする
  • アプリケーションを App Engine にデプロイする
  • 稼働時間チェックとアラートを作成する
  • (省略可)CLI でアラート ポリシーを作成する

設定と要件

各ラボでは、新しい 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 のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。ナビゲーション メニュー アイコン

最初のログイン手順を完了すると、プロジェクト ダッシュボードが表示されます。

Google Cloud プロジェクトのダッシュボード

Google Cloud Shell の有効化

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

Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

    ハイライト表示された Cloud Shell アイコン

  2. [続行] をクリックします。

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

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 の概要ガイド をご覧ください。

次のコマンドを実行して Python 環境を更新します。

python3 -m pip install --upgrade pip python3 -m venv myenv source myenv/bin/activate

タスク 1. GitHub からサンプルアプリをダウンロードしてテストする

  1. GitHub から Cloud Shell 環境に Google Training Data Analyst のクローンを作成します。このリポジトリには、この演習の要件に最適な、シンプルなアプリケーションが含まれています。

    git clone --depth 1 https://github.com/GoogleCloudPlatform/training-data-analyst.git
  2. クローンの作成が完了したら、リポジトリの deploying-apps-to-gcp フォルダに移動します。このフォルダにサンプルアプリが含まれています。

    cd ~/training-data-analyst/courses/design-process/deploying-apps-to-gcp
  3. main.py ファイルを Cloud Shell エディタで開きます。プロンプトが表示されたら、[新しいウィンドウで開く] をクリックします。少し時間をかけて、この基本的な「Hello GCP」Python Flask アプリケーションを確認します。

    edit main.py
  4. エディタを閉じて Cloud Shell ターミナルに戻り、右上にある [ターミナルを開く] をクリックしてターミナル ウィンドウを開きます。プログラムをテストするために、Python アプリケーションの依存関係をすべて読み込んでアプリを起動します。

    pip3 install -r requirements.txt python3 main.py
  5. プログラムが実行されていることを確認するために、Cloud Shell のツールバーにある [ウェブでプレビュー] ボタンをクリックし、[ポート 8080 でプレビュー] を選択します。

[ウェブでプレビュー] の [ポート 8080 でプレビュー] オプション

新しいブラウザタブが開いて「Hello GCP」というメッセージが表示されるはずです。

  1. そのタブを閉じて Cloud Shell に戻り、Ctrl+C キーを押して実行中の Flask サーバーを終了します。

タスク 2. アプリケーションを App Engine にデプロイする

アプリケーションが機能することがわかったので App Engine にデプロイします。

  1. Cloud Shell コードエディタに切り替えます(または再度開きます)。左側のエクスプローラ ツリーで training-data-analyst/courses/design-process/deploying-apps-to-gcp フォルダを展開します。

  2. [File] メニューから [New File] を選択し、app.yaml という名前の新しいファイルを作成します。

  3. 作成したファイル内に次のコードを貼り付けます。

    runtime: python312
  4. ファイルが確実に保存されるように、[File] > [Save] を選択します。

どのプロジェクトでも、App Engine アプリケーションを使用するには、まずそれを作成する必要があります。この作業は、コンソールまたは gcloud app create コマンドを使用してプロジェクトごとに 1 回だけ行います。いずれの場合も、アプリを作成するリージョンを指定する必要があります。

  1. Cloud Shell ターミナルで次のコマンドを実行します。変更を加えるために Cloud Shell の承認を求められる場合があります。

    gcloud app create --region={{{project_0.startup_script.app_region|Region}}}
  2. この基本的なアプリケーションを App Engine にデプロイします。次のコマンドを実行すると、現在のディレクトリでアプリケーションが検索されます。Python アプリケーションを宣言している app.yaml ファイルが見つかると、フォルダのその他の内容がアプリケーションそのものであると見なされて、main.py がアプリケーションの開始点として使用されます。依存関係が読み込まれ、アプリケーションがパッケージ化されて、App Engine にサービスとしてデプロイされます。

    gcloud app deploy --version=one --quiet
  3. アプリケーションのデプロイが完了するまで待ちます。

  4. Google Cloud コンソール ウィンドウのナビゲーション メニューナビゲーション メニュー アイコン)で、[すべてのプロダクトを表示] > [サーバーレス] > [App Engine] > [ダッシュボード] をクリックします。

  5. ダッシュボードの右上に、デプロイされたアプリケーションのリンクが以下のように表示されます。

App Engine のリンク

メモ: デフォルトでは、App Engine への URL は https://project-id.wl.r.appspot.com の形式になっています。
  1. そのリンクをクリックして、新たにデプロイされたアプリをテストします。先ほど Cloud Shell で実行したときとまったく同じように機能するはずです。

  2. Google Cloud がサンプルデータを収集できるように、更新ボタンを数回クリックします。

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

タスク 3. App Engine のログを調べる

  1. コンソールに戻り、左側の [App Engine] の下にある [バージョン] リンクをクリックします。

  2. [診断] 列から [ログ] を選択します。

[診断] メニューでハイライト表示されている [ログ] リンク

  1. 先ほどのリクエストがログに表示されます。まだ表示されない場合は、数秒待ってから [現在の位置に移動] ボタンをクリックします。

タスク 4. App Engine のレイテンシに関するアラートを作成する

アプリケーションが実行されるようになったので、レイテンシが異常に大きくなった場合に生成されるアラートを作成します。まず、アプリケーションの現在のレイテンシを確認します。

アプリケーションの現在のレイテンシを Metrics Explorer で確認する

  1. Google Cloud コンソールのナビゲーション メニューで [すべてのプロダクトを表示] をクリックし、[オブザーバビリティ] > [Monitoring] > [Metrics Explorer] に移動します。

  2. [指標を選択] プルダウンをクリックし、[Active] オプションのチェックボックスをオフにします。

  3. [指標] を [GAE Application] > [Http] > [Response latency] に設定し、[適用] をクリックします。稼働時間チェックではなく App Engine の指標であることを確認してください。稼働時間チェックはまだないため、2 つ目のオプションは機能しません。

  4. [集計] フィールドのプルダウンをクリックし、[99 パーセンタイル] を選択します。

  5. 少し時間をかけてグラフを確認します。

データは多くはありませんが、アプリケーションの平均レスポンス タイムのグラフを表示するには十分なはずです。これは処理時間の短い 99% のリクエストの平均レスポンス タイムで、残りの 1% は異常値として切り捨てられています。

同じ指標に基づいてアラートを作成する

現時点のアプリケーションのパフォーマンスは想定どおりです。最初にアプリケーションを起動したときにレスポンスが遅れることがあったとしても、平均すると、レスポンス タイムは 200 ミリ秒未満になるはずです。

では、レスポンス タイムが 5 秒を上回る状態が 1 分を超えたら通知するアラートを作成しましょう。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[すべてのプロダクトを表示] > [オブザーバビリティ] > [Monitoring] > [アラート] をクリックします。

  2. 上部にある [EDIT NOTIFICATION CHANNELS] をクリックし、[Email] セクションまでスクロールします。[Add New] をクリックして、自分のメールアドレスを有効な通知チャンネルとして追加します。[Display Name] に任意の名前を入力し、[Save] をクリックします。

  3. [アラート] のメインページに戻り、[Create Policy] をクリックします。

  4. [指標を選択] をクリックし、[Active] オプションのチェックボックスをオフにします。先ほどと同じ Metrics Explorer のページが表示されます。[指標] を再度 [GAE Application] > [Http] > [Response latency] に設定し、[適用] をクリックします。[ローリング ウィンドウ] を [1 分] に設定し、[Next] をクリックします。

Metrics Explorer の標準ウィンドウの左下に新しい [Configuration] セクションが追加されます。

  1. 条件を設定します。[しきい値の位置] で [しきい値より上] を選択して、[しきい値] を「8000 ms」に設定します。この条件が満たされるとアラートがトリガーされます。

  2. [条件名] を「Response latency [MEAN] for 99th% over 8s」に設定します。

  3. 少し時間をかけてアラートのグラフを確認します。先ほど Metrics Explorer で作成したのと同じグラフですが、今度は 8 秒の位置にアラートの線があります。

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

  5. [通知と名前] で、[通知チャンネル] を展開して自分のチェックボックスをオンにし、[OK] をクリックします(このセクションで前に作成した通知チャンネル)。

  6. このアラートに「Hello too slow」という名前を付けて、[NEXT] をクリックします。アラートを確認し、[ポリシーを作成] をクリックします。

  7. アプリケーション コードを更新して遅延を追加します。Cloud Shell コードエディタに戻り、左側のエクスプローラ ツリーで training-data-analyst/courses/design-process/deploying-apps-to-gcp フォルダを展開します。

  8. main.py をクリックしてエディタで開きます。次の import ステートメントを 2 行目に追加します(一部は後ほど使用します)。

    import time import random import json
  9. 現在の main() 関数を次の内容に置き換えます。この新しいバージョンには sleep コマンドが追加されており、各リクエストの途中でコードが 10 秒間一時停止します。これはしきい値を十分上回る長さです。

    @app.route("/") def main(): model = {"title": "Hello GCP."} time.sleep(10) return render_template('index.html', model=model)
  10. 次のコマンドを再実行してアプリケーションを再デプロイします。

    gcloud app deploy --version=two --quiet
  11. 再デプロイが完了するまで待ちます。

  12. コマンドが完了したら、[サーバーレス] > [App Engine] > [ダッシュボード] に戻り、リンクが機能することを確認します。

  13. 一貫した負荷を生成するために、Cloud Shell で次のコマンドを入力します。

    while true; do curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/ | grep -e "<title>" -e "error";sleep .$[( $RANDOM % 10 )]s;done
メモ: このコマンドは、この App Engine アプリへのリクエストをループで繰り返します。grep コマンドにより、リクエストが成功するとページのタイトルが表示され、失敗するとエラーが表示されます。リクエストが繰り返されるたびに、スレッドが 1 秒未満のランダムな時間一時停止しますが、レスポンス タイムに 10 秒の遅延があるため、停止時間ははるかに長く見えます。
  1. しばらく待ちます。アラートを通知するメールが数分(通常は約 5 分)後に届くはずです。メールが届いたら、Cloud Shell ターミナルに戻り、Ctrl+C キーを押して負荷テスターのループを停止します。

  2. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[すべてのプロダクトを表示] > [オブザーバビリティ] > [Monitoring] > [アラート] をクリックします。

アラートが発生してインシデントが作成されたことを確認します。

  1. そのインシデントをクリックして詳細を表示します。

  2. 詳細ページを調べ、一番上までスクロールして [インシデントを確認する] を選択します。

  3. [アラート] のメインページに戻って変更を確認します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 App Engine のレイテンシに関するアラートを作成します。

タスク 5. (省略可)CLI でアラート ポリシーを作成する

コードやスクリプトでアラート ポリシーを適用する場合は、アラートの CLI(および API)を使用すると非常に効果的です。

  1. Cloud Shell コードエディタに戻り、左側のエクスプローラ ツリーで training-data-analyst/courses/design-process/deploying-apps-to-gcp フォルダを選択します。

  2. [File] メニューから [New File] を選択し、ファイルに app-engine-error-percent-policy.json という名前を付けます。

  3. 500 エラーの数をレスポンスの合計数で割った値が 0.01 を超えると(500 エラーの割合が 1% を超えると)トリガーされるアラート ポリシーを作成します。作成したファイル内に次のコードを貼り付けます。

{ "displayName": "HTTP error count exceeds 1 percent for App Engine apps", "combiner": "OR", "conditions": [ { "displayName": "Ratio: HTTP 500s error-response counts / All HTTP response counts", "conditionThreshold": { "filter": "metric.label.response_code>=\"500\" AND metric.label.response_code<\"600\" AND metric.type=\"appengine.googleapis.com/http/server/response_count\" AND resource.type=\"gae_app\"", "aggregations": [ { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_SUM", "groupByFields": [ "project", "resource.label.module_id", "resource.label.version_id" ], "perSeriesAligner": "ALIGN_DELTA" } ], "denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND resource.type=\"gae_app\"", "denominatorAggregations": [ { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_SUM", "groupByFields": [ "project", "resource.label.module_id", "resource.label.version_id" ], "perSeriesAligner": "ALIGN_DELTA" } ], "comparison": "COMPARISON_GT", "thresholdValue": 0.01, "duration": "0s", "trigger": { "count": 1 } } } ] }
  1. ファイルを保存します。現在のフォルダを調べて、アラート ポリシーが正しいフォルダに保存されていることを確認してください。

    cd ~/training-data-analyst/courses/design-process/deploying-apps-to-gcp ls
  2. 次のコマンドを使用してこのアラート ポリシーをデプロイします。

    gcloud alpha monitoring policies create --policy-from-file="app-engine-error-percent-policy.json"
  3. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[オブザーバビリティ] > [Monitoring] > [アラート] をクリックします。デプロイしたアラート ポリシーが [Policies] セクションに表示されるはずです。

  4. その「HTTP error…」ポリシーをクリックして詳細を表示します。通知チャンネルを編集して、アラートが発生するとメールが届くようにします。

  5. ランダムなエラーを含む App Engine アプリをデプロイして、このポリシーをテストします。Cloud Shell コードエディタに戻り、左側のエクスプローラ ツリーで training-data-analyst/courses/design-process/deploying-apps-to-gcp フォルダを展開します。

  6. main.py ファイルを Cloud Shell エディタで開きます。

  7. 現在の main() 関数を次の内容に置き換えます。この新しい関数は、先ほどの sleep コマンドの代わりに乱数ジェネレーターを使用して、約 2% の割合で 500 エラーを返します。これは、「HTTP error count…」ポリシーがトリガーされるのに十分な割合です。

@app.route("/") def main(): num = random.randrange(49) if num == 0: return json.dumps({"error": 'Error thrown randomly'}), 500 else: model = {"title": "Hello GCP."} return render_template('index.html', model=model)
  1. 次のコマンドを使用してアプリケーションを再デプロイします。

    gcloud app deploy --version=two --quiet
  2. 再デプロイが完了するまで待ちます。

  3. コマンドが完了したら、[App Engine] > [ダッシュボード] に戻り、リンクが機能することを確認します。

  4. Cloud Shell で、先ほどの負荷生成コマンドを再実行します。

    while true; do curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/ | grep -e "<title>" -e "error";sleep .$[( $RANDOM % 10 )]s;done

約 2% の割合でエラーがランダムに表示されるはずです。コマンドを実行したままにしておきます。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[オブザーバビリティ] > [Monitoring] > [アラート] をクリックし、さらに数分待つと、アラート インシデントが発生するはずです。メールも届きます。すぐには届かないため、しばらく待つ必要があります。

  2. メールが届き、インシデントが発生したことを確認したら、Cloud Shell に戻り、Ctrl+C キーを押してリクエストを停止します。

さらに数分待つと、インシデントが解決されて、また別のメールが届きます。

  1. プロジェクトの削除後にメールを受信しないようにするため、通知チャンネルを削除します。「HTTP error count…」ポリシーをクリックして詳細を表示します。[EDIT] リンクをクリックし、[通知チャンネル] を展開して自分のチェックボックスをオフにします。[通知チャンネルを使用] をオフにします。変更を保存した後、[DELETE] をクリックしてこのポリシーを削除します。

  2. 稼働時間チェックのアラート ポリシーに対して前の手順を繰り返します。

まとめ

この演習では、Google Cloud コンソールと CLI を使用してアラート ポリシーを作成し、テストしました。これで完了となります。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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