【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!
投稿日:2018/05/30
GCP のサービスや、 AWS のサービスに対して簡単にメトリクスの収集や警告の設定を行える Stackdriver Monitoring は、通知の設定も非常に簡単に行える機能を持っています。
Stackdriver Monitoring Premium Tier ではメール通知の他に、最近開発の現場で頻繁に使われるようになってきた Slack 、 HipChat といったチャットツールや、 SMS を経由した通知の設定をサポートしています。既に CI サーバの通知や Github の通知をチャットツールで受け取っている、という方には特にオススメできる機能です。
この記事では、監視ツールの警告でメールボックスが埋まるのは望ましくない、という方や、警告を自分が使っている複数のサービスを通じて即座に受け取りたい、といった方向けに、 Stackdriver Monitoring を利用した通知の設定を解説します。
この記事の目的
- Stackdriver Monitoring でメールによる通知設定を行おう。
- Stackdriver Monitoring で Slack による通知設定を行おう。
Alerting Policy にメールによる通知を設定してみる
ここからは、【第18回】 Stackdriver MonitoringでApp Engineの監視をするで設定を行なった Alerting Policy に対して、通知を設定し、実際に Slack で通知を受け取ってみるデモを行います。
まだ監視の設定を行なっていない方は上記の記事を参考に、 App Engine へのサンプルアプリケーションのデプロイと、監視の設定を行なって下さい。
監視の設定が完了したら、 Stackdriver のダッシュボードを開きます。
ダッシュボードを開いたら、左側に表示されているボタンの上から3つ目 “Alerting” から、 “Policies Overview” をクリックして開きます。すると、設定を行なった “5XX Check” という名前の Alerting Policy が表示されます。今回は、こちらの監視項目に通知を設定していきます。
まずは、 “Policy” の名前をクリックし、詳細画面に移動します。
詳細表示画面の右上に表示されている、 [Edit] をクリックすると、 Alerting Policy の更新画面に移動します。この画面に表示されている、 [Add notification] をクリックします。
下の図のように、通知を送信するチャネルを選択するボックスが表示されます。
チャネルは、 Basic Tier では Email と Cloud Console mobile app が、 Premium Tier では PagerDuty 、 SMS 、 HipChat 、 Campfire 、 Webhook そして Slack が使用可能です。
最も基本的な Email での通知は、指定したメールアドレスに通知を送ることが可能です。まず、 Email での通知を設定しますので、チャネルの選択を行うボックスで “Email” を選択します。
すると、通知を送信するメールアドレスを入力するためのフィールドが表示されますので、ここにメールアドレスを入力します。
入力が完了したら、 [Save Policy] をクリックしましょう。
これで設定は完了です。それでは、設定をテストしたいと思います。
今回設定した警告は AppEngine でレスポンスコードが 5XX であるものが発生した場合に警告が通知されるようになっていますので、アプリケーションを少し変更し、 500 のレスポンスを返すようにします。
ローカル環境で、 hello-world アプリケーションの main.py をエディタで開き、以下のように書きかえます。
# Copyright 2016 Google Inc.
#
# 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.
# [START app]
import logging
from flask import Flask, abort
app = Flask(__name__)
@app.route('/')
def hello():
abort(500)
return 'Hello World!'
@app.errorhandler(500)
def server_error(e):
# Log the error and stacktrace.
logging.exception('An error occurred during a request.')
return 'An internal error occurred.', 500
# [END app]
この状態でアプリケーションをデプロイします。
gcloud app deploy
デプロイが完了したら、アプリケーションを開きましょう。
gcloud browse app
何回かリロードを繰り返していると、 Alerting Policy で設定したメールアドレスにメールが届きます。
Slack による通知を設定する
次に、 Premium Tier で Slack に通知を送信する設定を行います。 Alerting Policy の更新画面に移動し、 “2. Notifications” で ”Email” に設定されているプルダウンメニューを “Slack” に変更します。
初めて Slack との連携を設定する場合、ここには “No Slack Channel notifications configured. Please visit the account settings page.” と表示されます。
アカウント設定ページから Slack Channel の連携を設定できますので、 [account setting page] をクリックしてアカウント設定ページに移動しましょう。
画面上部に表示されている、 [Add Slack Channel] をクリックすると、 [Authorize Stackdriver] というボタンが表示されたページに移動します。
このボタンをクリックすることで、 Slack の OAuth 設定を行うことが可能です。
Slack の OAuth 認証画面が表示されたら、 [Authorize] をクリックします。すると Stackdriver のアカウント設定ページに戻りますので、チャンネル名を入力し、 [Test Connection] をクリックします。
ここでテストに成功すれば、 [Save] ボタンがクリックできるようになっているはずです。 [Save] を押してチャンネルを保存しましょう。
ここまでで、 Stackdriver と Slack の連携の設定が完了しました。
再び、 Alerting Policy の編集画面に戻ります。今回は [Add Notification] をクリックした時に、 Slack を選択すると先ほど連携したチャンネルが表示されると思います。チャンネルが選択された状態で、 [Save Policy] をクリックします。
さて、先ほどメール通知の設定をテストした時に行ったのと同じように、 hello-world アプリケーションの main.py をエディタで書き換え、デプロイします。
アプリケーションを開き、何回かリロードを繰り返していると Slack に以下のようにメッセージが流れるかと思います。
これで、Slack による通知が正常に動作していることを確認できました。
おわりに
いかがでしたか。簡単に Slack と連携できることを実感していただけたのではないでしょうか。
Premium Tier ではこのほかにも、 SMS を使って携帯電話経由でメッセージを受け取ったり、 Webhook を使って独自の通知を設定することも可能です。ぜひ、試してみてください。
同じシリーズの記事
-
【GCP入門編・第22回】 Stackdriver Logging で収集したログに対して、フィルタの実行や警告を設定しよう!
-
【GCP入門編・第21回】 Stackdriver Logging でアプリケーションのログを収集しよう!
-
【GCP入門編・第20回】 手間いらずでログ管理ができる Stackdriver Logging のご紹介!
-
【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!
-
【GCP入門編・第18回】 Stackdriver Monitoring で Google App Engine の監視をしよう!
-
【GCP入門編・第17回】 Stackdriver Monitoring で Google Compute Engine を監視しよう!
-
【GCP入門編・第16回】アプリのパフォーマンスを視覚的に確認できる Stackdriver Monitoring を紹介!
-
【GCP入門編・第15回】 GCP から AWS までモニタリングできる Google Stackdriver を紹介!
-
【GCP入門編・第14回】 Cloud Functions を使ってサーバレスアーキテクチャを体験しよう!
-
【GCP入門編・第13回】 Cloud Datalab でデータの可視化を行ってみよう!
-
【GCP入門編・第12回】 BigQuery を使って気軽にビッグデータの解析を行ってみよう!
-
【GCP入門編・第11回】 Google Cloud Dataproc を使ってデータを解析しよう!
-
【GCP入門編・第10回】スケーラブルな NoSQL データベースサービス Cloud Bigtable を使ってみよう!
-
【GCP入門編・第9回】 Cloud Shell で、いつでもどこでも Google Cloud Platform (GCP) が操作可能に!
-
【GCP入門編・第8回】 Container Registry での Docker イメージの使用方法!
-
【GCP入門編・第7回】知らなきゃ損! Google Container Engine (GKE) での Dockerイメージを使ったコンテナの起動方法!
-
【GCP入門編・第6回】これは簡単! Google App Engine での Cloud Datastore の利用方法!
-
【GCP入門編・第5回】 Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!
-
【GCP入門編・第4回】すぐ出来なくても大丈夫!サンプルアプリで Google Compute Engine (GCE) の動作練習!
-
【GCP入門編・第3回】難しくない! Google Compute Engine (GCE) でのインスタンス起動方法!
-
【GCP入門編・第2回】まずは、ここから!知らないと恥ずかしい Google Cloud Platform (GCP) の事前準備!
-
【GCP入門編・第1回】エンジニア必読!今さら聞けない、Google Cloud Platform (GCP) とは?