このエントリは、Bluemix Advent Calendar 2015の17日目のエントリーです。
ここでは、Bluemixを例に挙げていますが、Cloud FoundryベースのPaaS (Cloudn, Pivotal Web Service, Pivotal Cloud Foundry, Cloud Foundryなど)であれば、同じように利用できると思います。
みなさんはBluemixで展開したアプリのログを見たいときどうしてますか?一般的には下記の2つの方法があると思います。
Bluemix UIからログを確認する方法
cf logs
でコマンドラインからログを確認する方法
ログの設定
$ cf logs kimiphp1217
$ cf logs kimiphp1217 --recent
ここからgrep
かけてログを解析してもいいのですが、アプリの再起動時にログが消えてしまいます。そこで、サードパーティのログ管理サービスに出力する方法をとりたいと思います。ログ管理サービスは色々ありますが、Herokuで利用されている方も多い「papertrail」というとってもイケてるログ管理サービスを使用したいと思います。
Papertrailでログ管理
ログの転送
- https://papertrailapp.com でメールアドレスを登録します
- Dashboardで、Add Systemsをクリックし、Sender requires port 514をクリックします。
- I use Heroku or Cloud Foundryを選択して、"What should we call it?"で、任意の名前を登録します。(例: kimibluemix)
- cfコマンドで、生成されたURLにログを転送する設定を行い、アプリを再ステージします。
cf cups papertrail-syslog -l syslog://logs3.papertrailapp.com:(port番号)
cf bs kimiphp1217 papertrail-syslog
cf restage kimiphp1217
これで、Papertrailのダッシュボードから登録した名前(例: kimibluemix)をクリックすると、ログが収集されているのがわかると思います。うーん、検索機能が使いやすいですね〜!! (下記スクリーンショットはサンプルのものです。)
Slackにアラートを飛ばす
Papertrailは検索機能がとてもいけてるだけでなく、AlertをメールやSlackにも飛ばすことができます。試しにSlackに飛ばしてみたいと思います。
- 検索キーワードをいれて、Save Searchでその検索を保存し、Save & Setup an Aleartをクリックします。
- Slackを選択し、new Papertrail integrationをクリックします。
- Channelを選択し、ピンク色で生成されたURLをコピーしておきます。
- PapertrailのDashboardに戻り、保存した検索の右の編集アイコンをクリックし、FrequencyやSend messages with timestamps inを設定し、最後にIntegration's Webhook URLに先ほどコピーしたURLを設定します。
- Send Test Dataをクリックして正しくメッセージが届けば設定は終わりです。
いい感じに、お好みの検索キーワードでログをSlackに飛ばすことができました。
他にも、S3にログをアーカイブしたり、Hadoopなどでログを解析させたりできるようです。時間があれば、Xplrentyなどを試してみたいです。