簡単にscribedにログを転送するためのエージェント scribeline を作った
まあ実際のコード自体はずいぶん前に書き上がっててGitHubにあったんだけど。
tagomoris/scribe_line · GitHub
何で作ったの
scribedはログ収集サーバとしてはグッドなんだけど、なぜかエージェント側、ログを送出する側のコード例が極めて貧弱で、たとえば俺はいますぐApacheのログをscribedに送り付けたいんだ! というときにどうしたらいいのかがよくわからない。というか簡単な方法が世の中に転がっていないように見える。
ので、しょうがないから作った。
ついでにデフォルト設定ファイルを読むようにしたりとか、各ログファイルの転送を一発で開始/終了できるようにしたりとか、接続先の scribed が死んだらセカンダリサーバに接続をフェイルオーバできるようにしたりとか、してある。前に 障害に強いscribeサーバ構成と設定 - tagomorisのメモ置き場 で書いた設定のサーバに対して使うような感じ。*1
対象のファイルが rotate されても新しい方を開き直すようにしてあるので、普通のApacheのログ設定で動いているところにそのまま適用できるはず。*2
あとは配布をラクにするためにrpm化が必須だったので spec も書いてある。リポジトリにあるので、使いたい人は使うと良いかも。
どういうものなの
scribed はどっかに立ってるとして、ログの送出側ホストで、とりあえずインストール。
# rpmの作りかたはREADMEに書いてあるから頑張れ! $ rpm -i scribeline-1.1-original.x86_64.rpm # もしくは社内yumサーバとかある人はそっちに置いてyum $ yum install scribeline
設定ファイル /etc/scribeline.conf を適当にいじる。
RUN="true" # デフォルトは false なんで、trueに変えること # SERVERNAME[:PORTNUM] # port number is optional. PRIMARY_SERVER="scribe-deliver.local:1463" # secondary server setting is optional... SECONDARY_SERVER="scribe-central.local:1463" LOGS=$(cat <<"EOF" # カテゴリ ログのパス の順 serviceX /var/log/apache2/servicex.access.log servicey /var/log/apache2/servicey.access.log EOF )
できたら、起動する。
$ sudo /etc/init.d/scribeline start
これで LOGS に書いたパスのログが追記されるたびに scribed に送られる。止めたくなったら stop すればいいし、設定ファイルを書き換えたら restart すればいい。
まあ、これでそれなりに簡単に使えるようになったんじゃないかなー。