読者です 読者をやめる 読者になる 読者になる

Sentryをインストールして実行してみる

Python Django Sentry

複数台あるアプリケーションサーバーのエラーログを集めて見たり、メール通知するのだとSentryは結構使いやすそう。
http://sentry.readthedocs.org/en/latest/
とりあえず、動かしてみる。

インストール

virtualenvでeasy_installのオプション指定にてインストール。mysqlを使う場合だと、

(venv)$ easy_install -ZU sentry[mysql]

とすればいいようだ。
DBはPostgreSQLが推奨されてる。

設定ファイルの作成

Djangoのsettings相当のファイルを作成する。
Sentryのinitサブコマンドでデフォルトのファイルを作成してくれる。

(venv)$ sentry init sentry.conf.py

設定ファイルはPythonスクリプトなので、Pythonコードを書ける。

sentry.conf.py

最低限だとこのぐらい書けば動かせる。

# coding: utf-8
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # We suggest PostgreSQL for optimal performance
        'NAME': 'sentry',
        'USER': 'sentry',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        'OPTIONS': {
        }
    }
}

SENTRY_URL_PREFIX = 'http://localhost:9000'

SENTRY_KEY = 'secretkey'

SENTRY_WEB_HOST = '127.0.0.1'  # ローカルのみなら127.0.0.1
SENTRY_WEB_PORT = 9000
SENTRY_WEB_OPTIONS = {
    'workers': 2,
    'worker_class': 'egg:meinheld#gunicorn_worker',
    'daemon': True,
}

SENTRY_WEB_OPTIONSはgunicornのオプションになるので、gunicornのドキュメントも参照すると良い感じ。
Configuration Overview — Gunicorn 19.6.0 documentation
worker_classはデフォルトだとSyncWorkerなので、本番でログの受付にHTTPを使うならgeventとかmeinheldを使うとよさそう。
HTTPをログの閲覧ぐらいにしか使わないのであれば、デフォルトで十分。
デフォルト以外のworker_classを使うなら、必要に応じて追加でインストールしておく。
デーモン起動したい場合はdaemonにTrueを指定する。supervisorやupstartで動かすのでもいいと思う。

データベーステーブル作成

起動

開始はsentryコマンドのstartサブコマンドで実行する。
初回だけ、データベーステーブルが作成されて、マイグレーションが実行される。

(venv)$ sentry --config=sentry.conf.py upgrade

このとき、スーパーユーザーを作成しますかって聞かれるので、適当に作っておく。後からだとcreatesuperuserコマンドで作れる。

(venv)$ sentry --config=sentry.conf.py start

ウェブブラウザで http://127.0.0.1:9000/ を開くとログイン画面が表示された。作成しておいたユーザーでログインできる。
ravenクライアントでテストして問題なし。

ぶっちゃけ、Vさんの記事に必要なことが大体まとまってるのでこれでいいのでは。