fluentdで遊んでみる

| トラックバック(0)

どうも。

ハシモトです。

掲題の通り、fluentdで遊んでみようかと思います。
対象のログは自前運用のapacheログとmaillogです。

ログ出力サーバーの設定

まずyumのリポジトリを追加します。

$ vi /etc/yum.repos.d/td.repo

[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0

次にインストールをします。

$ sudo yum -y install td-agent

あっさりと終ります。

ログ解析サーバーへfluentdをインストール

rubyの1.9.2以上が必要なようですが、サーバーにインストール済でしたので、ここは割愛します。

gemでfluentdをインストールします。

$ gem install fluentd

さらにfluentdの稼働に必要なbson_extと、mongodbにデータを投入するプラグインもインストールします。

$ gem install fluent-plugin-mongo
$ gem install bson_ext -v=1.6.4

bson_extは先に入れたmongoのgemとバージョンを合わせないと警告がでるので注意です。

mongodbについても既にインストール済でしたので、ここでは割愛します。

設定(fluentd, td-agent)

まずapacheあたりから手始めに設定してみます。

ログ出力サーバー側のtd-agent.conf

$ vi /etc/td-agent/td-agent.conf
<source>
  type tail
  format apache
  path /var/log/httpd/access_log
  tag mongo.apache
</source>

<match mongo.apache>
  type forward
  flush_interval 10s
  <server>
    host 192.168.1.1 // ログ解析サーバ
    port 24224
  </server>
</match>

続いてログ解析サーバー側のfluentd設定

$ mkdir /etc/fluentd
$ vi /etc/fluentd/fluentd.conf

<source>
  type forward
  port 24224 // forward用に24224ポートで起動
</source>
<match mongo.apache>
  <store>
    type stdout
  </store>
  <store>
    type mongo
    database httpd
    collection accesslog
    host localhost // mongodbサーバ
    port 27017 // mongodbのポート番号
    flush_interval 10s
  </store>
</match>

ちなみにfluentdをログforwardさせて利用する場合、各々の死活監視にはudpを利用しているようなので、udpもファイアーウォールから空けておかないと、起動して少しすると下記のようなエラーになるので注意。

013-01-14 01:05:41 +0900: temporarily failed to flush the buffer, next retry will be at 2013-01-14 01:09:56 +0900. error="no nodes are available" instance=23456251016220
  2013-01-14 01:05:41 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.30/lib/fluent/plugin/out_forward.rb:148:in `write_objects'
  2013-01-14 01:05:41 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.30/lib/fluent/output.rb:439:in `write'
  2013-01-14 01:05:41 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.30/lib/fluent/buffer.rb:279:in `write_chunk'
  2013-01-14 01:05:41 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.30/lib/fluent/buffer.rb:263:in `pop'
  2013-01-14 01:05:41 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.30/lib/fluent/output.rb:303:in `try_flush'
  2013-01-14 01:05:41 +0900: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.30/lib/fluent/output.rb:120:in `run'

(参考 : http://d.hatena.ne.jp/oranie/20120323/1332498317)

apacheは上記でまぁうまく行きましたが、maillogの場合、日付フォーマットがsyslogの形式なので、webに転がってるformatの正規表現ではうまくいきませんでした。これは自前でプラグイン作れという事でしょうか...。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: fluentdで遊んでみる

このブログ記事に対するトラックバックURL: http://blog.chrhsmt.com/mt-tb.cgi/121