稼働時間アラートの設定

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

目標

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

料金

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

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

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

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

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

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

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

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

    cd getting-started-python/1-hello-world
    
  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 Console に移動
  2. ナビゲーション パネルで [Monitoring] を選択します。

    Cloud Monitoring を初めて使用する場合は、Google Cloud Console の [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 アプリで表示するには、ビュー関数を使用します。

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        """Return a friendly HTTP greeting."""
        return 'Hello World!'
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1', port=8080)
  2. Hello World アプリから HTTP 404 エラーコードが返されるようにするには、return 行を変更して戻り値の 2 番目の部分に 404 値を追加します。

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

    gcloud app deploy

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

クリーンアップ

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

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

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

  1. Cloud Console で [リソースの管理] ページに移動します。

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

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