Ruby
rsyslog

rsyslogに直接ログを送りつけるモジュール達

候補

ruby 実装のrsyslog クライアントでめぼしいものは以下2つ。

remote_syslog_logger

https://github.com/papertrail/remote_syslog_logger
ActiveSupportのLoggerを差し替えることができる。Railsを使っていたならこれが一番。

remote_syslog_sender

https://github.com/reproio/remote_syslog_sender
単体で機能するrsyslogのクライアント。ActiveSupportとか関係なく、単体のRubyスクリプトに組み込むならこちらが良い。

そもそもなんのためのもの?

rsyslogは普通は、マシンのsyslogから同期をとるような形でログを集約するのがよくある使い方。ところが、syslog自体がCentOSとUbuntuで違うし、rsyslogの設定も個別。極めつけはMacやWindowsで開発するときにはどこにsyslogがあるかも怪しい。

そうなるとOSの機能に任せるのではなく、自前で直接ログを集約したくなる。Windows上で動くツールからでもガシガシログを溜め込みたい。ということで、プログラムから直接ログを集約したいよね。

他にもログを集約するツールはありそうだけど

あるだけどいつでもすごい分散データベースを使って分析したいわけじゃぁない。普通のログローテーションができて、それが一つのサーバに集まっているだけでいい。さらに、rsyslogのいいところは、UDPが選べるというところ。ログサーバーとの通信がいまいちでもそれがクライアントを待たせることがない。最悪ログが欠落するんだけど、ログ書き出しのトラブルがサービスを止めるという本末転倒なトラブルを防ぐことができる。これはよい。

ということで、UPDで安上がりに複数サーバからロギングしてもらうには、rsyslogクライアントがいいねって話です。

ちなみに、Rubyじゃなくて、Pythonのrsyslogクライアントもある。
https://csl.name/post/python-syslog-client/

実装そのものはシンプルなので、もはやライブラリとかじゃなくて、単体のスクリプトでもいいのかなって思う。