メニュー

【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!

【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!

GCP

投稿日:2018/05/30 | 最終更新日:2018/06/21

【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!

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 のダッシュボードを開きます。

Stackdriver ダッシュボード

ダッシュボードを開いたら、左側に表示されているボタンの上から3つ目 “Alerting” から、 “Policies Overview” をクリックして開きます。すると、設定を行なった “5XX Check” という名前の Alerting Policy が表示されます。今回は、こちらの監視項目に通知を設定していきます。

まずは、 “Policy” の名前をクリックし、詳細画面に移動します。

Stackdriver ダッシュボード ポリシー

詳細表示画面の右上に表示されている、 [Edit] をクリックすると、 Alerting Policy の更新画面に移動します。この画面に表示されている、 [Add notification] をクリックします。

Stackdriver ダッシュボード ポリシー編集

下の図のように、通知を送信するチャネルを選択するボックスが表示されます。

チャネルは、 Basic Tier では Email と Cloud Console mobile app が、 Premium Tier では PagerDuty 、 SMS 、 HipChat 、 Campfire 、 Webhook そして Slack が使用可能です。

最も基本的な Email での通知は、指定したメールアドレスに通知を送ることが可能です。まず、 Email での通知を設定しますので、チャネルの選択を行うボックスで “Email” を選択します。

Stackdriver ダッシュボード 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” に変更します。

Stackdriver 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] をクリックします。

Stackdriver Slack チャネル設定

ここでテストに成功すれば、 [Save] ボタンがクリックできるようになっているはずです。 [Save] を押してチャンネルを保存しましょう。

ここまでで、 Stackdriver と Slack の連携の設定が完了しました。

再び、 Alerting Policy の編集画面に戻ります。今回は [Add Notification] をクリックした時に、 Slack を選択すると先ほど連携したチャンネルが表示されると思います。チャンネルが選択された状態で、 [Save Policy] をクリックします。

さて、先ほどメール通知の設定をテストした時に行ったのと同じように、 hello-world アプリケーションの main.py をエディタで書き換え、デプロイします。

アプリケーションを開き、何回かリロードを繰り返していると Slack に以下のようにメッセージが流れるかと思います。

Slack 通知

これで、Slack による通知が正常に動作していることを確認できました。

おわりに

いかがでしたか。簡単に Slack と連携できることを実感していただけたのではないでしょうか。
Premium Tier ではこのほかにも、 SMS を使って携帯電話経由でメッセージを受け取ったり、 Webhook を使って独自の通知を設定することも可能です。ぜひ、試してみてください。

PAGE TOP