Fastly のログを Papertrail にストリーミングする にて、Papertrail で Fastly のログを受け取ることができるようになりました。次はそのログを使って何をするか、ということになりますが、まずは特定のレスポンスコード(例:404 とか)を検知した時に、Slack へ通知を投げるということをやってみたいと思います。
下準備
Fastly のログを Papertrail にストリーミングしている状態であることを前提としています。もしまだ設定がない場合は、Fastly のログを Papertrail にストリーミングする を参考に設定を作ってください。
通知を受ける Slack アカウントが必要です。新規作成される方は、Slackを導入する方法という良記事がありますので参考にしつつ Slack アカウントを作成してください。
Slack の設定
受け取る側の Slack では、どのユーザまたはチャンネルで受け取るかを指定します。Slack の App Directory で Papertrail を検索するか、slack.com - New Papertrail Integration に行くと、Slack の Papertrail 設定追加画面が表示されます。
通知を受け取る Channel を指定するか、新規作成します。
作成すると、Webhook URL が生成されますので、これを次のステップで使います。
Papertrail の設定
Papertrail から Slack へ通知を送る際には、そのきっかけとなるイベントを作る必要があります。そのためには、Event Viewer から Search を作成し、Alert を関連付けます。Search を作ることで特定の条件を指定(例:HTTP エラー 404 を検知する)し、Alert で通知を投げる(今回は Slack の Webhook URL に投げる)、という流れです。
Search を使うと任意の条件を基にログを検索することができますが、今回は、ログに 404 という文字列があったらという条件を作ってみます。敢えて 404 が出るようなリクエストを発行して事前にログに 404 を残しておくとわかりやすいと思います。
Event Viewer の画面に行くと、画面下の方に検索バーがあります。ここに 404 と入力し、「Search」してみましょう。
検索バー右側にある「Save Search」をクリックして、検索条件を保存しましょう。今回は「404 - Errors」としました。保存した検索条件は検索バーの真ん中辺にある、「All Systems」とあるところの右側にある小さなボタンをクリックすると見ることができます。
保存された検索条件を選択すると、検索バーの一番右の方に「Create Alert」というボタンが表示されますので、これをクリックします。
「Create an Alert」画面が表示されます。Slack は右側の「Chat」のところにありますので、これをクリックします。
Alert 設定画面が表示されます。「Slack Details」の「Integration's URL for Webhook URL」に、先ほど Slack で作った「Webhook URL」を入力して「Create Alert」をクリックします。これで設定は完了です。「Alert Details」で検索頻度、しきい値、タイムスタンプだったりを設定できます。
404 エラーが発生すると、Slack にメッセージが届く
設定を確認するために、あえて 404 を発生する URL を叩いてみました。頻度を10分にしちゃったので、ちょっと時間がかかりましたが、Slack に Alert を送ることができました。
このように Papertrail を活用して、ログを使ったアラートシステムを構築することも可能です。Papertrail は他にも色々なアプリケーションと連携ができるので、想像が膨らみますね。Amazon SNS とも連携できるようですよ。
参照
Slack integration guide for Papertrail:http://help.papertrailapp.com/kb/integrations/slack/