最近よく出てきたキーワードというかプログラムをさらりと幾つか上げてみると
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を触りましたが、クラウド環境にはかなり使えそうな感じですね。
そろそろお盆ですなぁ。