user icon

Serverless未経験おじさんのfaultline導入記

実験用に自分のメアドで新しくAWSのアカウント作ろうと思ったら存在してました、muraveです。事務所引っ越す前の住所になってたので5年以上放置してた模様。

実験にはお安めのVPSを使うことが多いのですが、Serverlessという波にのるためにAWSを使わざるをえないのです。というか faultline を使いたい!

サーバーレスアーキテクチャなエラートラッキングツール faultline

きっかけは『PHPカンファレンス福岡2017』です。その時のスライド動画もきてました

コレだ! と思いましたね。

だいたい、今はまともなメールを送信するのも面倒じゃないですか?

某メール送信サービスを使おうと思ったこともあったのですが、エラーメール送信するには「利用者」の契約が必要とのことで、不特定多数の利用者が想定されるサービスでは使えません。そもそもエラー通知をメールで欲しいわけでもなく、今もメールから Slack に連携しています。

faultline は運用コストが低く(手間的にもマネー的にも)、そしてなによりクライアントの JavaScript についても利用できることに魅力を感じます。

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

前置きが長くなってしまいました。これからが本番。導入について、主にどこで引っかかったか、です。

faultline (https://github.com/faultline/faultline) は Concept に Simple deploy とあるとおり、とても良くできた deploy の仕組みをもっているのですが、基礎がわかってないのでそれなりにハマリました。

ステップ1

aws cli が必要。

「そこから!?」と思いましたね? おっちゃん、Serverless Framework について把握してないので何が必要なのかわかってないんよ。

aws cli configure までがんばる(アカウントに必要な権限は把握できてないので強いやつで突破)

ステップ2

README.md に書いてある通りすすめる。

$ git clone https://github.com/faultline/faultline.git
$ cd faultline
$ npm install

ステップ3

config.yml の調整。

masterApiKey と clientApiKey についてAWSに関係するのかしばらく悩みました。ちゃんとサンプルに書いてある通りの事なんですが、どちらもfaultline用なのでランダムな文字列を適当に書くだけでした。

もう一つ悩んだのが s3BucketName に設定した Bucket を事前に作るのか?deploy時に作ってくれるので「作らない」が正解。

あと、JavaScriptで使いたい場合 useKms を true に。これも設定しているとよろしくやってくれます。本当、親切。

ステップ4

デプロイします。

$ npm run deploy

私の場合は aws cli configure で default しか作ってないので AWS_PROFILE 指定してません。

デプロイされて「ひゃっはー!」って気分になります。

ステップ5

faultline-webui (https://github.com/faultline/faultline-webui) を準備します。簡単だったので詳細略。

ステップ6

Slack の Incomming Webhooks の準備をして sample-errors.json の notifications を調整、cURL で動作確認します(README.md 参照)。

ステップ7

faultline-webui でエラーが登録されていることを確認。 高まります。

Slack に通知が来ていないことに気づきます。 低まります。

ステップ8

いろいろと調べていて callNotifications でエラーが発生していることに気づきました。
Lambda 関数のログは AWS Lambda のダッシュボードから関数をクリック、「モニタリング」をクリック。

「CloudWatch のログを表示」をクリックしてたどり着きました。

ステップ9

github の issue で助けをもとめる。

https://github.com/faultline/faultline/issues/40

ステップ10

助言をいただいて Node のバージョンをv8系からv6系に変更してて deploy。
Slack への通知を確認。 いまココ。

k1LoWさんに感謝!

実は Slack に通知が来ない件の対処途中、導入予定(Laravel5.1)プロジェクトのブランチに faultline-php (https://github.com/faultline/faultline-php) を導入したらさっくり動いたので、その後の動作テストはcURLではなくそちらからしてました。

destroy についてのオマケ

config.yml に書いた S3 Bucket を削除して destroy するのが吉(おそらく)

実は私、 CloudFormation が使用している Bucket まで削除して失敗したり(その後、手作業で各サービスを削除するも CloudFormation についても削除の必要があるのに気付かずに deploy でハマリつづけるオマケ付)、それならと Bucket を削除せずにやって失敗したり(あたりまえ)で、未完走。

Facebooktwitterlinkedintumblrmail

タグ: ,

名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)