LoginSignup
3
2

More than 5 years have passed since last update.

faultline-jsを使ってJavaScriptのエラートラッキングにfaultlineを利用する

Last updated at Posted at 2017-05-15

faultlineとは

オープンソースのエラートラッキングツールです。

faultline-js

JavaScriptのエラートラッキングにfaultlineを利用するときには、faultline-js が利用できます。

インストール

Webpack等を利用している場合はnpmでインストールしてください

$ npm install faultline-js --save

レガシーな感じで設置する場合は dest/client.min.jsdest/client.min.map を設置してください。

<script src="path/to/faultline-js/dist/client.min.js"></script>

使い方

<head> などで以下のようなコードを読みこめばOKです。

var faultline = new faultlineJs.Client({
                  project: 'faultline-js', 
                  apiKey: 'xxxxXXXXXxXxXXxxXXXXXXXxxxxXXXXXX', // clientApiKeyを設定してください
                  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: 10,
                      threshold: 1,
                      timezone: 'Asia/Tokyo'
                    }
                  ]
                });

Webpackなどを利用しているのであれば

var faultlineJs = require('faultline-js');
var faultline = new faultlineJs({
                  project: 'faultline-js', 
                  apiKey: 'xxxxXXXXXxXxXXxxXXXXXXXxxxxXXXXXX', // clientApiKeyを設定してください
                  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: 10,
                      threshold: 1,
                      timezone: 'Asia/Tokyo'
                    }
                  ]
                });

などでもOKです。

notifications の設定を暗号化する

GitHub Issueの連携にはGitHubのAPI Tokenが必要です。

SlackのIncoming WebhookのURLならまだしも、GitHubのAPI Tokenが外部に漏れるのはかなりマズいです。

そのため faultline v0.7.0 からKMSによる暗号/復号化機構を搭載しました。
(config.yml で useKms を true にすることで利用可能です)

暗号化

faultlineをデプロイしたAWSのprofileで、 aws-cliの aws kms encrypt でnotificationsの設定を暗号化します。

例えば、先ほどのSlackの設定を暗号化するには

$ AWS_PROFILE=XXxxXXX aws kms encrypt --key-id alias/faultline --plaintext '{"type":"slack","endpoint":"https://hooks.slack.com/services/XXXXXXXXXX/B2RAD9423/WC2uTs3MyGldZvieAtAA7gQq","channel":"#random","username":"faultline-notify","notifyInterval":10,"threshold":1}' --query CiphertextBlob --output text --region ap-northeast-1

で暗号化できます。

また、faultline v0.8.0 からAPIに /encrypt を提供していますので、AWSのprofileを共有せずにfautlineの apiKey のみ ( clientApiKey ではありません ) での暗号化も可能です。

基本的にAPIを利用するほうが簡単で良いでしょう。

$ curl -X POST -H "x-api-key:0123456789012345678901234567890" -H "Content-Type: application/json" https://xxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v0/encrypt -d '{"type":"slack","endpoint":"https://hooks.slack.com/services/XXXXXXXXXX/B2RAD9423/WC2uTs3MyGldZvieAtAA7gQq","channel":"#random","username":"faultline-notify","notifyInterval":10,"threshold":1}'
{
  "status": "success",
  "encrypted": "VJrcSNSvM/KxZ3IIa/+aaEZMfYQgKrGqmGwzgAAASYwggEiBgkqhkiG9w0BBwagggETMIIBDwIBADCCAQCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMkrC8qGdnuIcfRlX9AgEQgIHaanVWXANlr/QkgYFIpSRy5QLmJohU4ltwGKwOFA/uRZfKw3kAMCuH7H/QJJyVA0mxzqMnQT/WUf6nG2AckhPQ4fTmgQgpXzw7jF4ToUvXL49a"
}

取得した暗号化されたテキストをnotificationsに追加するだけで、通常通り利用できます。

var faultline = new faultlineJs.Client({
                  project: 'faultline-js', 
                  apiKey: 'xxxxXXXXXxXxXXxxXXXXXXXxxxxXXXXXX', // clientApiKeyを設定してください
                  endpoint: 'https://xxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v0',
                  notifications: [
                    'VJrcSNSvM/KxZ3IIa/+aaEZMfYQgKrGqmGwzgAAASYwggEiBgkqhkiG9w0BBwagggETMIIBDwIBADCCAQCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMkrC8qGdnuIcfRlX9AgEQgIHaanVWXANlr/QkgYFIpSRy5QLmJohU4ltwGKwOFA/uRZfKw3kAMCuH7H/QJJyVA0mxzqMnQT/WUf6nG2AckhPQ4fTmgQgpXzw7jF4ToUvXL49a'
                  ]
                });

簡単ですね!

結果

ss.png

というわけでJavaScriptでも安全にfaultlineが使えますよ!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2