fluentdをさわってみたわけで

最近よく出てきたキーワードというかプログラムをさらりと幾つか上げてみると

monit・supervisor・zabbix・openflow・fluentd・docker・openstack?

などなどですが、この辺はすべて、~~を一括で~~できるよ!!というやうなものですが、最近のトレンドというか、流行りというか、これが今の時代な感じと思われ。

兎も角、色々とクラウド化なわけで、それはとっても大規模なわけで、そうなってくるとやっぱり一括管理というのは大事なわけで。

fluentdというのもログの一括管理ができるもので、自分が使うのかどうかは置いておいて、ちょこっと触ってみたわけで。

インストールしてみる

インストールする方法は、rubyを使っているのでgemで入れるか

gem install fluentd --no-ri --no-rdoc

rpmパッケージからFluentdを入れるかのどちらかな模様。

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

ここはまぁ、安定版のrpmの方で進めたいと思いますが、まず、公式に注意書きがしてあります。

ログ内に無効なタイムスタンプが入ることを防ぐために
ノード上でntpdを設定することを強くお勧めします。

という事なので、やっとくのが大吉なわけで。

# sudo yum list ntp
Installed Packages
ntp.x86_64                4.2.6p5-1.el6                @anaconda-ScientificLinux-201401271129.x86_64

あなこんだ。さあ入った!と、その前に、monlist機能の無効をしないとね。
天災は忘れたころにやってくるわけで。

# vi /etc/ntp.conf
disable monitor

こんな風にdisable monitorを追加しておこう。

ではインストールに進みます。

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

このコマンド1つでレポジトリの追加と、インストールまで全部やってくれるようです。
では起動してみます。

# sudo  /etc/init.d/td-agent start
Starting td-agent:                                         [  OK  ]

なんなく起動しました。

試しにログを拾ってみると

ひとまず、インストールが終わったら、テスト。

# curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

# tail -n1 /var/log/td-agent/td-agent.log
2014-08-09 00:48:19 +0900 debug.test: {"json":"message"}

これで表示されれば、OKと思われ。

では、色々とサイトを巡って出来上がったconfファイルはこんな感じです。apacheのログを別のファイルに記述するという、意味を考えてはいけないものなわけで。

# cat /etc/td-agent/td-agent.conf
## Input
<source>
  type tail
  path /var/log/httpd/access_log
  format apache2
  pos_file /var/log/td-agent/tmp/apache.access.log.pos
  tag apache.access
</source>

## Output
<match apache.access>
    type file
    path /var/log/td-agent/apache.access
    time_slice_format %Y%m%d
    time_format %Y%m%dT%H%M%S%z
</match>

では順番に忘備録てきな感じで書いていきます。

まず基本ですが、confファイルの中身はsourceとmatchに分かれますが、sourceに記述するものは元ログ→fluentdで、matchに記述するものはfluentd→ログとなります。

最初に書いたように、一括管理する事に長けているので、matchに複数のサーバーを記述することもできます。もっともっとできます。

そんな感じです。

 

・type
インプットのタイプ、アウトプットのタイプを指していて、なんとなく単語の意味そのままのようです。

・path
こちらも、単語そのままの意味ですが、権限に注意しないと上手く動かないので注意箇所でした。

・format
こちらはログをパースするもので、有名なものであればテンプレートな感じでapache2とかできます。オリジナルなこともできる模様。

・pos_file
ファイルの書き込みに使っているバッファみたいな感じ(たぶん)。

ほかにもあるけれど、だいたいこんな感じですね。

では!取れたログを見てみるとこんな風になっています。

 # tail -1 /var/log/td-agent/apache.access.20140809.b50020b1bf23e9610
20140808T163247+0000    apache.access   {"host":"***.***.***.***","user":null,"method":"GET","path":"/","code":403,"size":3822,"referer":null,"agent":"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"}

うむ、非常に見やすくなっております。しかも、こいつは既存のログはそのまま。

こういう風に幾つものサーバーのログを整形して、一括でログサーバーとして管理できるという事が可能になっていました。

だいぶ前にopenstackを触りましたが、クラウド環境にはかなり使えそうな感じですね。

そろそろお盆ですなぁ。

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *