新しい話題ではないですが、エラーログのトラッキングサービスにSentryというものがあるので使ってみました。導入手順をまとめておきます。
環境
Laravel5.5
Sentryの仕組み
Sentryはアプリケーションサーバに出力されたログファイルを監視するのではなく、アプリケーション側にSentryにエラー情報を送信する仕組みを組み込む方式を取っています。
そのためエラーの情報だけがSentryに蓄積され、それらの傾向を見たり対策を立てることができます。
issueとしてSentry上でタスクとして管理することもできるため、エラー専用のタスク管理ツールとしても活用できます。
ただし、無料プランではプロジェクトの中にメンバーを追加できないため共有アカウントを使う等しないと複数人での利用は難しいです。本格的に使うなら有料プランが必須になりそうでした。
導入方法
sign up後、プロジェクトにLaravelを選んで作成します。
すると導入に必要なコードが出力されるのでそれに沿って作業を進めます。
composer require sentry/sentry-laravel:1.0.2
次にエラー内容を送信する処理を書きます。
public function report(Exception $exception)
{
if (app()->bound('sentry') && $this->shouldReport($exception)){
app('sentry')->captureException($exception);
}
parent::report($exception);
}
次に、Sentryの設定ファイル下記コマンドで生成します。
php artisan vendor:publish --provider="Sentry\Laravel\ServiceProvider"
最後に、.envにURLを指定します。
SENTRY_LARAVEL_DSN=https://XXXXXXXXXXXXXX
これで設定は完了です。
動作
動作確認のため、エラーを起こして見るとイベントが登録されているはずです。
メソッド名をちょっと変更して存在しないメソッド呼び出しにしたときのエラーです。
エラーの箇所と内容をわかりやすく表示してくれています。
そのほかにもリクエスト送信元の情報もあり
- リクエスト元のipアドレス
- 閲覧に使われたブラウザ
- 稼働中のPHPのバージョン
- 動作環境(stgかproductionか)
などを一箇所で見ることができます。
テキストログを眺めるよりは圧倒的に見やすく、検証の効率は良さそうです。
通知
Slackとの連携機能も可能です。
自分が作ったグループの設定ページからIntegrationメニューを選んだ先で選択可能です。
ここで設定したら次いはAlertの設定です。
Laravelのプロジェクトページに移動した後のメニュー画面からAlertの設定画面に行きます。
Alertは基準となるイベントと閾値を選択することで設定できます。
とにかく何かエラーが起きたら通知して見るためには
のように設定すれば良いです。これはerrorかfatalなログが送られてきたら発火する設定です。
また、この下にslackの通知設定も出てくるので、そこで通知したいグループを指定したらOKです。
通知内容はTagに含まれる内容であればカンマ区切りで指定可能です。
例えば、
environment,level,url,transaction
など。取得できる内容はエラー詳細ページにTagの一覧は載ってるのでそこから選べば良いです。
最後に
無料枠で試しましたが、Sentryはtextログと比べてエラーの調査をしやすくなるだろうなと思いました。有料版でしか使えない機能もたくさんあるので使える機会があったらいいなあと思った次第です。