faultlineとは
オープンソースのエラートラッキングツール。
AWS上に構築する。
node-faultline-proto
今回作成したのは、Nodejsのエラートラッキングにfaultlineを使うためのnpmモジュール。
GitHub sinofseven/node-faultline-proto
インストール
npm install node-faultline-proto
使い方 明示的な方法
var faultlineJs = require('node-faultline-proto');
var faultline = faultlineJs.createClient({
project: 'faultline-js',
apiKey: 'xxxxXXXXXxXxXXxxXXXXXXXxxxxXXXXXX',
endpoint: 'https://xxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v0',
notifications: [
{
type: 'slack',
endpoint: 'https://hooks.slack.com/services/XXXXXXXXXX/B2RAD9423/WC2uTs3MyGldZvieAtAA7gQq',
channel: '#random',
username: 'faultline-notify',
notifyInterval: 1,
threshold: 1,
timezone: 'Asia/Tokyo'
}
]
});
faultline.notify(new Error("test"));
使い方2 自動的な方法
var faultlineJs = require('node-faultline-proto');
var faultline = faultlineJs.createClient({
project: 'faultline-js',
apiKey: 'xxxxXXXXXxXxXXxxXXXXXXXxxxxXXXXXX',
endpoint: 'https://xxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v0',
notifications: [
{
type: 'slack',
endpoint: 'https://hooks.slack.com/services/XXXXXXXXXX/B2RAD9423/WC2uTs3MyGldZvieAtAA7gQq',
channel: '#random',
username: 'faultline-notify',
notifyInterval: 1,
threshold: 1,
timezone: 'Asia/Tokyo'
}
]
});
faultline.handleExceptions();
throw new Error("test");
faultline.handleExceptions();
を使うことでキャッチされない例外が投げられたときに自動でfaultlineに送ってくれる。
*注意*
処理は例外が投げられたところで止まるようなので、AWS Lambdaなどでは使いにくいかもしれない。
そもそもAWS Lambdaだと例外が投げられたらLambda側がcatchして再度throwするみたいなので自分でtry catchした方がよさそう。 (2017/06/21 追記)
課題
大きくわけると3つ。
- そもそもfaultlineの仕組みやAPIなどを理解しきれていない。
- ベースとなったnpmモジュールの仕組みを理解しきれていない。
- テストコードや自動テストなどの整備もできていない。
基本的には自分の技術力不足が原因。
いずれは理解して、テストも整備したいと思って入るけどもモチベーション次第(やらない可能性もある)。
npmモジュールの自動テストなど参考になりそうなものを教えていただけると非常に有り難いです。