ようへいの日々精進XP

よかろうもん

logstash を試す(2)

概要

  • logstash で複数のホストからログを収集する手順を試してみる
  • 複数ホストから収集する場合に redisbroker(ブローカー = 仲買人)として利用されている
  • fluentd から Redis を扱う場合の参考にする

あらためて構成を確認する

f:id:inokara:20130908043149p:plain

それぞれの役割を整理してみる。

名前(上図) 役割 メモ
shipper broker にログを送る 意味として荷主
broker shipper から送られたログを一時的に保管、選別し indexer に渡す 意味として荷仲介人、ここで Redis が使われる
indexer broker から渡されたログを elasticsearch や storage に渡す

検索エンジンとしては Elasticesearch が使われる。また、Storage としては Plugin を見ると Amazon S3 等も利用出来る。


試す

※上記の shipperindexerWebUI ごとに Javaインスタンスを起動しなければいけないので、メモリをあまり積めない仮想マシンだとちょっち辛いかも。

shipper

サーバー上でログを収集するエージェント的な役割を担う。

設定ファイル

起動

java -jar logstash-1.2.1-flatjar.jar agent -f mylogstash.conf

indexer の設定

broker から送られたログを elasticsearch に渡す為に redis-server からログを取り出す。

設定ファイル

起動

java -jar logstash-1.2.1-flatjar.jar agent -f indexer.conf

WebUI

WebUI も個別のインスタンスとして起動する。引数に web を渡せばイイみたい。

起動

java -jar logstash-1.2.1-flatjar.jar web

特に代わり映えのしない画面。

f:id:inokara:20130908070000p:plain


broker としての redis について

redis にはどのようにレコードが登録されているのか?

shipper の設定の中で data_type => "list" と設定され LIST 型 で登録されている。登録に関しては RPUSH を利用しているみたい。ただ、redis-cli で覗いてもキーが全く登録されていないので本当に redis を使っているのか疑問に思ったので MONITOR してみた。

MONITOR で確認してみる

f:id:inokara:20130908071852p:plain

あくまでもキャッシュ的(またはキュー的)な使い方をしているようでログを indexer に渡した後はキーを削除するような挙動。


ということで

  • 思ったりよりも簡単に logstash でログの集中管理を試すことが出来た
  • 検証した環境はホスト 1 台で shipperindexer を動かしていたが、実際に複数台で行う場合には shipper を追加することになる
  • プラグイン等をもう少し試していきたい

fluentd と比較してみて

  • kibana3 が同梱されていてすぐに可視化出来る環境が整っているところがイイと思った
  • ログの収集に logstash 以外の技術(redis)が必要になってしまうところがイケてないとおもった
  • logstash は Java で fluentd は Ruby とどちらも土台となる実行環境を用意する必要があるが、Java よりは Ruby の方がイイと思った

参考