公開日:2013.05.10

FuelPHPでSentryパッケージを作りました

テクログ

Javascriptで発生した予期せぬエラーを監視できないか調べたところ、
Sentry というのを見つけました。

Javascript以外にも、PHP、Ruby、Python などいろいろ対応しておりますが、
今回はPHPとJavascriptに対応したFuelPHP用のSentryのパッケージを紹介します。

※Sentryのインストールについては、後日シゲさんが紹介してくれるはずです。

1.Sentryパッケージのインストール

FuelPHP1.6 以降は、Composer の使用を推奨します。
Packagist へ登録もしております。

■Composer を使用する場合
FuelPHP インストールディレクトリにある composer.json に Sentry を追加します。


"require": {
?"php": ">=5.3.3",
?"monolog/monolog": "1.5.*",
?"fuelphp/upload": "2.0",
?"core-tech/fuel-packages-sentry": "1.*" ←ここを追加
},

次に、以下のコマンドを実行します。


$ cd 【FuelPHP インストールディレクトリ】
$ php composer.phar install # 2回目以降であれば「update」になります

■Composer を使用しない場合
弊社の GitHub からダウンロードして、fuel/packages/sentry として配置します。
Gitのサブモジュールでも構いません。

次に、Sentryパッケージが使用する外部ライブラリのインストールを行います。
以下のコマンドを実行します。


$ cd fuel/packages/sentry
$ php composer.phar install

2.FuelPHPにSentryパッケージ追加

fuel/app/config/config.php の always_load.packages に
Sentryパッケージを追加します。


"always_load" => array("packages" => array(
?"sentry",
?...

3.Sentry設定

fuel/packages/sentry/config/sentry.php を
fuel/app/config にコピーして編集します。
※環境毎に設定できるようにしていますが、FuelPHP1.6 以降を対象とした「Fuel::STAGING」の記述になっていますので、ご注意下さい

主な変更点は、下記になります。


"php" => array(
?"enabled" => true,
?"dsn" => "http://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}",
),
"js" => array(
?"enabled" => true,
?"dsn" => "http://{PUBLIC_KEY}@{HOST}/{PATH}{PROJECT_ID}",
)

enabled は、true にすれば監視可能となります。
dsn は、http://【Sentryサーバ】/【Team】/【Project】/docs/
にて記載されているDSNになります。

PHPの場合は、ここまでの設定で予期せぬエラーが出たら
Sentryサーバに通知されます。
※全てのエラーをハンドリングするために、Error クラスをオーバーライドしております

4.Javascript設定

Javascriptの場合は、上記3.の他にも設定が必要になります。

■アプリケーション側の設定
head タグに下記を追加します。



■Sentryサーバ側の設定
Sentryサーバ設定画面(http://【Sentryサーバ】/【Team】/【Project】/settings/)の
「Client Security」にて、アプリケーションのドメインを登録します。

5.任意箇所で通知

アプリケーションの任意の箇所で、Sentryサーバに通知することができます。
※Sentryサーバへの通知はHTTP通信が発生するため、多用するとレスポンスの速度低下の原因になりますのでご注意下さい

■PHP


Sentry::send_exception(new Exception("message"));

■Javascript



6.オプション設定

Sentryにエラー通知する際に、オプションを設定できます。
fuel/app/config/sentry.php にて設定可能です。
任意箇所で通知する場合は下記になります。

■PHP
参照URL:raven-php


$opt = array("tags" => array("app" => "message"));
Sentry::send_exception(new Exception("message"), $opt);

■Javascript
上記5.のアプリケーション側の設定部分を変更します。
参照URL:raven-js


"test"); ?>

今回、Sentryパッケージを紹介しましたが、
今後、弊社の GitHub が盛り上がってくるはずなので、お楽しみに~

この記事を書いた人

core-corp

入社年2010年

出身地東京都

業務内容インフラ

特技または趣味ドライブ

core-corpの記事一覧へ

テクログに関する記事一覧