Posted at

Papertrailを使って、ログを気軽にオンラインで閲覧可能にしてみる

More than 5 years have passed since last update.

PapertrailはLinuxサーバやWebアプリケーション等の様々なログをオンラインで集約し、閲覧・検索することができるサービスです。rsyslogやsyslog-ng等のsyslogデーモンに数行追記するだけで導入できるほか、Heroku等のPaaSからもプラグインとして利用することが出来ます。

同様のサービスには、LogglyLogentriesがあります。また、オープンソースだと、logstashや、全て構造化してFluentd+Hive等で処理する、という方法もありそうです。

また、集約されたログをS3上に自動的に保管する機能も利用することが出来ます。S3上のデータはHiveのWHERE文で直接扱えるフォルダ形式になっており、別途Amazon EMRでクエリすることもできます。


導入

Papertrailにユーザ登録すると、管理画面からlogs.papertrailapp.com:PORT_NUMBERのようなログの送信先を取得することが出来ます。

実際に、rsyslogに導入するにはrsyslog.confに以下のように追記します。

*.* @logs.papertrailapp.com:PORT_NUMBER

rsyslogなので、例えば、

*.warn @logs.papertrailapp.com:PORT_NUMBER

などと指定することで、例えば、WARNING以上のログのみを転送し容量を節約するような運用も可能です。

また、上記設定の場合は、UDPで送信されますが、TLSで暗号化して送信することもできます。

これで、Papertrailのサイトからサーバログをリアルタイムに閲覧することができるようになります。


アラートの作成

Papertrailは、検索条件をあらかじめ指定しておくことで、それにマッチしたログがあった場合に、通知することが出来ます。通知先には、メールやHipChatなどを選ぶことが出来ます。

例えば、特定のキーワードがログに出てきた場合や、severity:(err crit alert emerg)などのように指定し、err以上のログレベルの通知があった場合などに自動的にメールやHipChatに通知する、というような運用が可能です。


さいごに

Papertrailはログのサイズが月100MBまでは無料で使うことができます。ログのボリュームが多いようであれば、例えば、上記のように、WARN以上のログを通知するだけでも十分に有用に使用できそうです。