Help us understand the problem. What is going on with this article?

Sentryを使って、Webアプリで起きた例外をキャプチャしてオンラインで見られるようにする

More than 5 years have passed since last update.

概要

Sentryは、PythonやJavaScript、Ruby、PHPなど、様々な言語で実行時に捕捉されなかった例外を自動的にトラップし、オンラインで閲覧可能にするツールです。

元々はDisqusの社内で開発され(当時の社内ブログ)、その後、オープンソースとして公開されました。

Sentryは、オープンソースなので、比較的簡単にLinuxサーバやHerokuなどのPaaS上にも入れることが出来るほか、Webサービスとしても提供されており、ユーザ登録することで使用することも出来ます。

Sentryを使うと、特に500エラーなど、ユーザが実際に目にする例外をオンラインで簡単に監視することが出来るため、非常に便利です。

サービスへの登録

今回は、Webサービス版を使用してみたいと思います。Webサービス版は、個人で使用し、秒間2回以下の例外を捕捉する場合には、無料で使用することが出来ます。

まずは、こちらからユーザ登録を済ませ、自分のチームを作成します。

次に、新しいプロジェクトを作成し、Platformで「Flask (Python)」を選択します。

これで、オンラインでの登録処理は完了です。

プログラムへの導入

まず、必要であれば、virtualenvを作成します。

% virtualenv --no-site-packages .venv
% source .venv/bin/activate

次に、必要なライブラリを導入します。

% pip install flask raven blinker

そして、以下のように、エラーを出すだけの機能を持ったFlaskアプリケーションに、導入してみます。

test.py
from flask import Flask
app = Flask(__name__)

from raven.contrib.flask import Sentry
app.config['SENTRY_DSN'] = 'https://[APP_CODE]@app.getsentry.com/20258'
sentry = Sentry(app)

@app.route("/err")
def err():
    raise RuntimeError('Error')


if __name__ == "__main__":
    app.run()

([APP_CODE]はWebサービスの管理画面で取得可能なURLに置き換えてください)

必要はコードは三行程度です。あとはRavenが自動的に例外を捕捉し、サーバサイドに送信してくれます。

実装状況の確認

作成したFlaskアプリケーションを実行し、curlで、/errにアクセスしてみます。

% python test.py
% curl localhost:5000/err

そうすると、上で登録した管理画面上に例外をあらわした項目が下記のように作成されているはずです。

default   Sentry.png

さいごに

Sentryは、実行時エラーを全て捕捉して管理することの出来る非常に優れたツールだと思います。無料で簡単に導入可能ですし、皆さんも導入検討されてみてはいかがでしょうか。

ikuyamada
Co-founder, CTO, Studio Ousia http://www.ousia.jp/
http://www.ikuya.net
ousia
”賢い”コンピュータを実現するための自然言語処理や質問応答に関する研究及び製品開発を行っています。
http://ousia.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした