PapertrailはLinuxサーバやWebアプリケーション等の様々なログをオンラインで集約し、閲覧・検索することができるサービスです。rsyslogやsyslog-ng等のsyslogデーモンに数行追記するだけで導入できるほか、Heroku等のPaaSからもプラグインとして利用することが出来ます。
同様のサービスには、LogglyやLogentriesがあります。また、オープンソースだと、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以上のログを通知するだけでも十分に有用に使用できそうです。