2014-06-03

centosにfluentdをインストールしてrubyでデータを投げてみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ログをいい感じにいろいろ何かをしてくれる
fluentd
の話題をよく聞くような気がしたのでcentosにインストールしてみました。


まずは準備です。

vi /etc/security/limits.conf
に以下を追加します。
---------------
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
---------------

追加したら
reboot

再起動後
ulimit -n
として
65535
となることを確認します。

そして
vi /etc/sysctl.conf
以下を追加します。
---------------
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240    65535
---------------

そして設定を反映させます。
sysctl -w


fluentdをインストールします。
インストールの仕方にはいくつかあるのですが、以下の手段でインストールします。

curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh

これでfluentdがtd-agentという名前でインストールされます。

fluentdの起動は以下のとおりです。
/etc/init.d/td-agent start


設定ファイルは以下になります。
/etc/td-agent/td-agent.conf

インストールされて正しく動くことを確認です。
curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

以下を実行して上記のjsonの内容が出力されていることを確認します。
cat /var/log/td-agent/td-agent.log


fluentdがインストールできたので、rubyからデータを投げて見ます。

rubyからデータを投げるためにfluent-loggerを利用してみます。
他にもいくつかgemがありそうな気配ではあります。

まずはインストール
gem install fluent-logger

データを投げるプログラムを作ります。
vi test.rb
require 'fluent-logger'

log = Fluent::Logger::FluentLogger.new(nil, :host=>'localhost', :port=>24224)
unless log.post("debug.aaaa", {"agent"=>"foo","bbbb"=>"cccc"})
  p log.last_error # You can get last error object via last_error method
end

ruby test.rb
を実行して、以下に投げたjsonデータが出てきていることを確認します。
cat /var/log/td-agent/td-agent.log

コメントを投稿