akishin999の日記

調べた事などを書いて行きます。

Sentry をインストール

商用サービスもあるオープンソースのイベントログ収集ツール Sentry をインストールしてみたのでメモ。

getsentry/sentry
https://github.com/getsentry/sentry

AirbrakeオープンソースErrbit 辺りと同じ系統のサービスな感じです。

インストールした環境は CentOS 6.5 x86_64 です。

MySQL のインストール

まずは MySQL をインストール。
5.1 で試したら途中 sentry upgrade 実行時にエラーになったので、公式リポジトリから 5.6 を入れました。

yum リポジトリを追加してインストール。

# yum install -y http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum install -y mysql-community-server mysql-community-devel

設定ファイルを変更。

# vi /etc/my.cnf

mysqld セクションに以下を追記します。

[mysqld]
character-set-server = utf8

mysqld を起動。

# service mysqld start

起動したら mysql_secure_installation を実行し root パスワードの設定などを行っておきます。

# mysql_secure_installation

mysql_secure_installation の実行が終わったら設定したパスワードでログインします。

# mysql -uroot -p

sentry 用の DB とユーザを作成します。
パスワード等は適宜変更して下さい。

mysql> CREATE DATABASE IF NOT EXISTS sentry DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON sentry.* TO sentry@localhost IDENTIFIED BY 'sentry';
mysql> FLUSH PRIVILEGES;
mysql> exit

Sentry のインストール

setuptools をインストール。

# yum install -y python-devel python-setuptools

easy_install コマンドを使って Sentry をインストールします。

# easy_install -UZ sentry[mysql]

インストール完了までそれなりに時間がかかるので、しばらく待ちます。

インストールが完了したら、以下のコマンドを実行して設定ファイルを作成。

# sentry init /etc/sentry.conf.py

作成した設定ファイルを編集します。

# vi /etc/sentry.conf.py

以下の箇所を先ほど作成したデータベース接続情報に変更します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sentry',
        'USER': 'sentry',
        'PASSWORD': 'sentry',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}

また、設定ファイル内の SENTRY_URL_PREFIX の値をインストールしたサーバのホスト名または IP アドレスに変更します。

#SENTRY_URL_PREFIX = 'http://sentry.example.com'  # No trailing slash!
SENTRY_URL_PREFIX = 'http://192.0.2.1'  # No trailing slash!

設定ファイルを保存したら DB のマイグレーションなどを実行する upgrade コマンドを作成した設定ファイルを指定して実行します。

# sentry --config=/etc/sentry.conf.py upgrade

createsuperuser サブコマンドを実行して管理用のユーザを作成します。

# sentry --config=/etc/sentry.conf.py createsuperuser

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! SENTRY_URL_PREFIX is not configured !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Username: akishin
Email address: akishin@example.com
Password:
Password (again):
Superuser created successfully.

これでインストールは完了です。
以下のコマンドでサーバを起動するとポート 9000 番で Sentry が起動します。

# sentry --config=/etc/sentry.conf.py start

軽く試すだけならこのままでも問題ないと思いますが、このままだと起動・終了が面倒なので、supervisord でプロセスを管理するよう設定します。
起動が確認できたら一旦 Ctrl-C などで sentry サーバを停止しておきます。

sentry を supervisor で管理する

以下のコマンドで supervisor をインストールします。

# easy_install supervisor

設定ファイルを作成。

# echo_supervisord_conf > /etc/supervisord.conf

作成した設定ファイルを編集します。

# vi /etc/supervisord.conf

ファイル末尾の以下の行をアンコメントし、ディレクトリパスを修正します。

[include]
files = /etc/supervisord.d/*.conf


設定ファイルで指定したディレクトリを作成。

# mkdir /etc/supervisord.d

supervisor 用の起動スクリプトを clone して設置します。

# cd /usr/local/src/
# git clone git://github.com/Supervisor/initscripts.git
# cp initscripts/redhat-init-jkoppe /etc/init.d/supervisord
# cp initscripts/redhat-sysconfig-jkoppe /etc/sysconfig/supervisord
# chkconfig --add supervisord

このままではデフォルトの設定ファイルと pid ファイルの場所が異なるので、以下を編集します。

# vi /etc/sysconfig/supervisord

ここでは /etc/supervisord.conf 側に合わせたので、以下のように変更しました。

#PIDFILE=/var/run/supervisord.pid
PIDFILE=/tmp/supervisord.pid

これで supervisor の準備は出来たので、Sentry 用の設定ファイルを作成します。

# vi /etc/supervisord.d/sentry.conf

以下のような内容にしました。

[program:sentry-web]
command=/usr/bin/sentry --config=/etc/sentry.conf.py start http
user=sentry
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/sentry-web.log

指定した起動用ユーザを作成します。

# useradd -s /sbin/nologin -M sentry

supervisord を起動します。

# service supervisord start
Starting supervisord:
sentry-web                       STARTING

これで supervisord 経由で sentory の起動・停止が出来るようになりました。

Nginx の設定

このままでは 9000 番ポートを指定してアクセスする必要があります。
80 番ポートでアクセスできるようにするため、Nginx 経由で Sentry にアクセスできるように設定します。

まずは Nginx をインストール。

# yum install -y http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# yum install -y nginx

設定ファイルを編集します。

# vi /etc/nginx/conf.d/default.conf

location / の設定を以下のように変更しました。

location / {
  proxy_pass         http://localhost:9000;
  proxy_redirect     off;

  proxy_set_header   Host              $host;
  proxy_set_header   X-Real-IP         $remote_addr;
  proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
  proxy_set_header   X-Forwarded-Proto $scheme;
}

設定したら Nginx を起動します。

# service nginx start

以上で Sentry のインストールは完了です。

これでブラウザからポート 9000 を付けなくても Sentry にアクセス出来るようになります。
アクセスするとログイン画面が表示されるので、作成したユーザ情報でログインします。

ログインすると、初回ログインではチームの作成画面が表示されます。

チームを作成すると次はプロジェクト作成画面が表示されます。

プロジェクトを作成すると以下のような設定画面が表示されます。

商用サービスもあるだけあって大部分日本語化されているようです。
使い易そうですね。

ちょっと長くなったので、実際の使い方はまた次回にでもまとめたいと思います。