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を触りましたが、クラウド環境にはかなり使えそうな感じですね。

そろそろお盆ですなぁ。

 

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です