【GCP入門編・第23回】 Stackdriver Error Reporting でアプリケーションのエラーを収集しよう!
- GCP入門編
- stackdriver
GCP のサービスの一部であり、監視やログ収集など、 Web アプリケーションの運用に便利な機能を多く備えた Stackdriver には、 Web アプリケーションのエラーを収集して通知する、 Stackdriver Error Reporting という機能が存在します。
この記事では、 Stackdriver Error Reporting を利用して、 App Engine 上にデプロイされたエラーの収集や通知の設定について解説します。
目次
この記事の目的
- Stackdriver Error Reporting の機能や特徴を知ろう。
- アプリケーションのエラーを収集して通知の設定をしてみよう。
Stackdriver Error Reporitng とは
Stackdriver Error Reporting は、 Stackdriver のサービスの中でも比較的新しいサービスです。2016年の3月にベータ版がリリースされました。
その名の通り、アプリケーションのエラーをレポートし、デプロイした Web アプリケーションのバグ修正や障害の対応に役立てる情報を提供するためのサービスとなっており、先行するサービスとしては New Relic が挙げられるでしょう。
Stackdriver Error Reporitng の特徴
Stackdriver Error Reporting の特徴としては、 App Engine であれば特別な設定なしにすぐに利用可能なところがあります。もちろん、 Compute Engine にデプロイしたアプリケーション中でも利用可能なのですが、 その場合は自分で Stackdriver Logging agent や Stackdriver Error Reporting API を使用して、エラーを送信する必要があります。
どちらの方法を用いても、アプリケーション内部で発生したエラーをリアルタイムにモニタリングすることや、通知を受け取ること、 Issue Tracker との連携などを行うことが可能です。
現状、プログラミング言語としては Java 、 Python 、 JavaScript 、 Ruby 、 C# 、 PHP そして Go がサポートされています。
Stackdriver Error Reporting で App Engine のエラーを収集する
それでは、実際に Stackdriver Error Reporing を使って、 App Engine 上にデプロイしたアプリケーションのエラーを収集してみます。
今回使うサンプルアプリケーションは【GCP入門編・第5回】App Engine でのアプリケーション起動法!で使用した hello-world アプリケーションです。
まず、こちらのアプリケーションがエラーを出力するように修正してから App Engine にデプロイし、 Stackdriver Error Reporting でどのようにエラーが表示されるかを確認していきます。
先ほどの記事を参考に、 hello-world アプリケーションのディレクトリを作成し、依存ライブラリのインストールを行ってください。ここまでの作業で、ディレクトリの構成は以下の通りになっています。
hello_world
├ README.md
├ app.yaml
├ appengine_config.py
├ main.py
├ main_test.py
├ requirements.txt
└ lib/
次に、 main.py
を編集し、エラーが発生するように変更します。以下のように 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
app = Flask(__name__)
@app.route('/')
def hello():
raise Exception("Bang!")
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]
hello 関数が exception を raise するように変更していますので、アプリケーションをブラウザで開いたら例外が発生するようになっています。
変更が完了したら、 gcloud コマンドでデプロイします。
gcloud app deploy
デプロイが完了したら、以下のコマンドでアプリケーションを開いてみます。以下のように、 "An internal error occurred." というメッセージが表示されるかと思います。
次に Stackdriver Error Reporting でこのエラーを確認してみます。 GCP のコンソールを開き、左側のメニューをクリックして表示されたメニューから、 [Error Reporting] をクリックします。
以下のように、先ほど追加した "Bang!" というエラーが表示されているかと思います。
[Exception: Bang!] と表示されている箇所をクリックすると、エラーの詳細が以下のように表示されます。
この画面に表示されているように、エラーの起こった回数や HTTP のステータス、エラーの起こった回数と時間を示すグラフ、スタックトレースが表示され、エラーについて詳しく調べることが可能です。
次に、エラーに対する通知を設定してみましょう。通知を設定するには、まず先ほどのエラーの詳細ページの右上にあるメニューボタンをクリックし、 [Turn on new error notification on this project] をクリックします。
すると、通知が設定されます。通知は今のところメールのみとなっており、ドキュメントには Gmail の転送機能を使って Slack にも送れる、と書いてあります。このあたりは、今後の改善を待ちたいところです。
おわりに
いかがでしたか。サービスがリリースされてからまだ時間が立っていないこともあり、まだまだこれからのサービスといった感はありますが、 App Engine 上にデプロイしてあればエラーの通知が自動で行える、という点は十分に便利なのではないでしょうか。
今後より便利になっていくであろう Stackdriver Error Reporting を、今のうちから使い始めてみてはいかがでしょうか。
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
お問合せはこちら
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!