faultlineでNode.jsのエラートラッキングをしてみる
OSSのエラートラッキングツールfaultlineでNode.jsのエラートラッキングをしてみたので覚書です。 インストール $ git clone https://github.com/faultline/faultl […]
広告ここから
広告ここまで
目次
OSSのエラートラッキングツールfaultlineでNode.jsのエラートラッキングをしてみたので覚書です。
インストール
$ git clone https://github.com/faultline/faultline.git
$ cd faultline
$ npm install
config.ymlの設定
バケットの設定などを行います。
config.default.yml
の内容を元に書き換えていきましょう。
config.default.yml
# faultline service name
serviceName: faultline
# AWS deploy region
region: ap-northeast-1
# S3 bucket name
s3BucketName: (EDITME)
# Dynamodb table prefix
dynamodbTablePrefix: faultline
# Dynamodb Read Capacity Units
dynamodbReadCapacityUnits: 1
# Dynamodb Write Capacity Units
dynamodbWriteCapacityUnits: 1
# Error tracking count interval (year / month / day / hour / minute)
timeunit: minute
# faultline API Key for full control (!This is not API Gateway API Key!)
masterApiKey: (EDITME)
# faultline API Key for POST errors only (!This is not API Gateway API Key!)
clientApiKey: (EDITME)
# faultline error data Retention (days / -1 is unlimited)
errorDataRetentionInDays: -1
# faultline functions CloudWatchLogs Retention (days / -1 is unlimited)
logRetentionInDays: 180
# Use AWS KMS Key to encrypt POST params (notifications) ( 0 or 1 )
useKms: 0
# AWS KMS Key alias
kmsKeyAlias: faultline
config.yml example
個人的にメモしておきたいところ
faultline API Key
は任意のランダムな文字列を入れます。errorDataRetentionInDays
がunlimited
になっているので、必要に応じて変更する- s3バケット / DynamoDBテーブルはCloudFormationが作ってくれるので、自分で作る必要はありません
# faultline service name
serviceName: faultline
# AWS deploy region
region: ap-northeast-1
# S3 bucket name
s3BucketName: faultline-test
# Dynamodb table prefix
dynamodbTablePrefix: faultline-test
# Dynamodb Read Capacity Units
dynamodbReadCapacityUnits: 1
# Dynamodb Write Capacity Units
dynamodbWriteCapacityUnits: 1
# Error tracking count interval (year / month / day / hour / minute)
timeunit: minute
# faultline API Key for full control (!This is not API Gateway API Key!)
masterApiKey: 0mTk4gTwbYgW
# faultline API Key for POST errors only (!This is not API Gateway API Key!)
clientApiKey: s4V63ZhO092a
# faultline error data Retention (days / -1 is unlimited)
errorDataRetentionInDays: -1
# faultline functions CloudWatchLogs Retention (days / -1 is unlimited)
logRetentionInDays: 180
# Use AWS KMS Key to encrypt POST params (notifications) ( 0 or 1 )
useKms: 1
# AWS KMS Key alias
kmsKeyAlias: faultline
デプロイ
デプロイはServerless FWを利用して行われます。
最後に生成結果が出ますので、APIのURLだけ控えておきましょう。
$ AWS_PROFILE=XXxxXXX npm run deploy
...
CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - faultline-v0
Serverless: Stack update finished...
Service Information
service: faultline
stage: v0
region: ap-northeast-1
stack: faultline-v0
api keys:
None
endpoints:
GET - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects
DELETE - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}
POST - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors
GET - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors
GET - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors/{message}
PATCH - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors/{message}
DELETE - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors/{message}
GET - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors/{message}/occurrences
GET - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/projects/{project}/errors/{message}/occurrences/{reversedUnixtime}
POST - https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0/encrypt
functions:
projectsList: faultline-v0-projectsList
projectsDelete: faultline-v0-projectsDelete
errorsPost: faultline-v0-errorsPost
errorsList: faultline-v0-errorsList
errorsGet: faultline-v0-errorsGet
errorsPatch: faultline-v0-errorsPatch
errorsDelete: faultline-v0-errorsDelete
occurrencesList: faultline-v0-occurrencesList
occurrencesGet: faultline-v0-occurrencesGet
callNotifications: faultline-v0-callNotifications
deleteExpiredErrors: faultline-v0-deleteExpiredErrors
encrypt: faultline-v0-encrypt
Stack Outputs
ErrorsGetLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-errorsGet:1
EncryptLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-encrypt:1
ErrorsDeleteLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-errorsDelete:1
OccurrencesListLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-occurrencesList:1
ErrorsPatchLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-errorsPatch:1
OccurrencesGetLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-occurrencesGet:1
DeleteExpiredErrorsLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-deleteExpiredErrors:1
ServerlessDeploymentBucketName: faultline-v0-serverlessdeploymentbucket-1spgr5g27e44a
ProjectsDeleteLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-projectsDelete:1
ProjectsListLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-projectsList:1
ErrorsListLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-errorsList:1
ErrorsPostLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-errorsPost:1
CallNotificationsLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:999999999999:function:faultline-v0-callNotifications:1
ServiceEndpoint: https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0
これでトラッキングするための基盤の準備ができました。
サンプルデータを送信する。
トラッキングするものがないとなので、サンプルコードを作ってみます。
まずはディレクトリを作成します。
$ cd ../
$ mkdir faultline-example
$ cd faultline-example
faultline-js
でデータを送信できるので、インストールしましょう。
$ npm init -y
$ npm install --save faultline-js
以下のようなexample.js
を作成します。
var faultlineJs = require('faultline-js');
var faultline = new faultlineJs({
project: 'faultline-js',
apiKey: 's4V63ZhO092a', // your clientApiKey
endpoint: 'https://XXXXXX.execute-api.ap-northeast-1.amazonaws.com/v0',
notifications: []
});
faultline.notify('example');
console.log('notification sent');
実行してnotification sent
が出ればOKです。
$ node example.js
notification sent
GUIを作成する
最後にトラッキングデータを確認する画面を作ります。
ソースコードをDLします。
$ cd ../
$ git clone [email protected]:faultline/faultline-webui.git
$ cd faultline-webui
$ npm install
config.example.jsを参考にconfig.jsを作ります。
var config = {
endpoint: 'https://XXXXX.execute-api.ap-northeast-1.amazonaws.com/v0', // faultline endpoint here
masterApiKey: '0mTk4gTwbYgW' // faultline API Key, here
};
あとはindex.htmlをひらけばOKです。
$ open index.html
下の画像のように、送信されたデータがトラッキングされるようになりました。
そのほか
Node.jsではなくブラウザ上のJSやPHPなどのエラートラッキングにも使えるので、「トラッキングツールを使ってみたいけど予算が・・・」というかたはとりあえずこれから初めてみるといいかなと思います。