稼働時間アラートの設定

このチュートリアルでは、Cloud Monitoring を使用して App Engine フレキシブル環境で実行する Python Hello World アプリ用の稼働時間アラートを設定する方法を示します。稼働時間アラートは、アプリがトラフィックを処理していない場合に通知を行います。Compute Engine または Google Kubernetes Engine(GKE)で実行するアプリの稼働時間アラートを設定することもできます。

目標

  • 基本的な Hello World アプリを実行します。
  • アプリが HTTP「200」ステータス コードを返すかどうかを監視する稼働時間チェックを作成します。
  • 稼働時間チェックが失敗したときにメール メッセージを送信するアラートを作成します。
  • アプリを再起動してアラートをトリガーします。

料金

Monitoring は現在、ベータ版のユーザーに無償で提供されています。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

サンプルアプリのクローン作成

サンプルアプリは GitHub の GoogleCloudPlatform/getting-started-python で入手できます。

  1. リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/getting-started-python.git
    
  2. サンプル ディレクトリに移動します。

    cd getting-started-python/gce
    
  3. アプリは「Hello World!」を返すだけなので、設定は不要で、すぐに実行できます。

    gcloud app deploy
    
  4. 返されたメッセージを表示するには、ブラウザに次の URL を入力します。

    https://PROJECT_ID.REGION_ID.r.appspot.com

    以下を置き換えます。

プロジェクト用の Cloud Monitoring の構成

Monitoring を構成してアプリをデプロイすると、Monitoring を使用して稼働時間チェックを作成できます。チェックは、デプロイされたアプリに ping を継続的に実行し、アプリが正常なレスポンスを返すことを確認します。

Cloud Monitoring にアクセスする方法は、次のとおりです。
  1. Cloud Console で、Google Cloud プロジェクトを選択します。
    Cloud コンソールに移動
  2. ナビゲーション パネルで [Monitoring] を選択します。

稼働時間チェックの作成

  1. Cloud Console で、[Monitoring] に移動します。

    [モニタリング] に移動

  2. ナビゲーション パネルで [Uptime Checks] をクリックし、[Create an Uptime Check] をクリックします。

  3. チェックに Check Hello World などのタイトルを指定してから、[次へ] をクリックします。

  4. [ターゲット] セクションで、稼働時間チェックのモニタリング対象を指定します。

    1. App Engine にデプロイしたため、[Resource Type] を [URL] ではなく [App Engine] に変更します(URL は Compute Engine インスタンスでカスタム URL を生成するためのものです)。
    2. 稼働時間チェックでモニタリングする Service を選択します。
    3. [Path] を空白のままにすると、デフォルトでメイン インデックス ページが表示されます。
    4. [チェック頻度] は、デフォルトの [1] 分のままにします。
    5. [次へ] をクリックします。
  5. [レスポンスの確認] フィールドはデフォルト値のままにして、[次へ] をクリックします。

  6. [アラートと通知] セクションで、アラートが発生した場合の通知方法を指定します。

    • トグルのラベルが [アラートが有効] になっていることを確認します。
    • 名前と期間のフィールドはデフォルト値のままにします。
    • アラート ポリシーに通知チャネルを追加するには、[通知チャネル] というラベルのテキスト ボックスで ]メニュー] をクリックします。追加するチャネルを選択し、[OK] をクリックします。通知は、チャネルタイプごとにアルファベット順にグループ化されます。

      チェックボックス リストにエントリを追加するには、[通知チャネルを管理] をクリックし、指示に従います。このダイアログに戻ったら、[更新] をクリックします。

  7. [作成] をクリックします。作成アクションが成功すると、Check and alert created というメッセージが表示され、その後 [Uptime checks] ダッシュボード ページが表示されます。

    この [Uptime checks] ダッシュボードには、新しい稼働時間チェックが一覧表示されます。チェック名をクリックすると、その稼働時間チェックの詳細ビューが開きます。このビューには複数のグラフが表示され、稼働時間の割合と構成情報が表示されます。また、構成済みのアラート ポリシーも一覧表示されます。ポリシーを表示するには、その名前をクリックします。

    [アラート] ページから開始しても、アラート ポリシーを確認できます。アラートページの [ポリシー] ペインには、ポリシーのサブセットが一覧表示されます。すべてのポリシーを一覧表示するには、[すべてのポリシーを見る] をクリックします。

停止のシミュレーション

稼働時間チェックが作成されたので、HTTP 200 OK レスポンスではなく HTTP 404 Sorry, we can't find that page エラーで応答するようにアプリを変更して、停止をシミュレートできます。

  1. 次のコードを見ると、Hello World アプリは「Hello World!」というメッセージだけを返していて、レスポンスのステータス コードはデフォルトの 200 OK になっています。このコードを Hello World アプリで表示するには、ビュー関数を使用します。

    # Copyright 2019 Google LLC All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/', methods=['GET'])
    def say_hello():
        return "Hello, world!"
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1', port=8080, debug=True)
    
  2. Hello World アプリから HTTP 404 エラーコードが返されるようにするには、return 行を変更して戻り値の 2 番目の部分に 404 値を追加します。

    return 'Hello World', 404
  3. 新たに意図的にエラーを組み込んだアプリをデプロイします。

    gcloud app deploy

    30 分以内に、稼働時間チェックの失敗を示すメール メッセージが送信されます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除する手順は次のとおりです。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。