こんにちは、FL.OPSの中の人、じゅんちゃんです。

謎の新メンバーも登場しやっと技術ブログっぽくなってきました。
DAOが担当する「ITIL」、ガシMAXの「Chef」、ウッシーの「Zabbix」、ジョンの「git」
そして私が担当するのは、、なんと!!


タイトルでバレバレですが「Fluentd」です。
よろしくお願いします。

さて「Fluentd」ざっくり言うと、ログの収集と出力を行ってくれるソフトウェアでして、機能については以前このブログで紹介したので省略します。
以前のブログはこちら
今日はさっそく構築をやってみます。
大きくは以下の3ステップです。

(1)インストール
(2)動作確認 httpリクエストのログ収集
(3)ログ収集テスト apache accessログの収集

サーバの環境は「CentOS 6.4」です。ではスタート!

(1)インストール

インストール方法はいろいろありますが、今回はTreasure Data社の安定版配布パッケージからインストールします。
Fluentdは事前にRubyをインストールする必要がありますが、Treasure Data社のパッケージにはRubyの環境も含まれているため、Rubyのバージョンを意識せずにFluentdを使うことができるとのこと。

で、インストールですが、以下のコマンドを入力するだけらしい。

curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh
01
あっさり終わりました。

ためしにサービスを起動してみましょう。

/etc/init.d/td-agent start
02
あっさり起動しました。
Treasure Data社のパッケージはすばらしい!!

flentdの起動ログを見てみましたが、errorやwarningもなさそうです。

cat /var/log/td-agent/td-agent.log
03

とりあえずインストール完了。

(2)動作確認 httpリクエストのログ収集

次は動作確認です。
デフォルトでポート8888へのhttpのリクエストをログへ出力するように設定されていますので、Fluentdの設定ファイルを見てみると

vi /etc/td-agent/td-agent.conf
<source>
type http
port 8888
</source>
05
たしかに「port 8888」「type http」の指定があります。
<source>~</source>は入力側、<match>~</match>は出力側の定義です。

では、以下のコマンドで、ポート8888へPOSTリクエストしてみます。

curl -X POST -d ‘json={“json”:”message”}’ http://localhost:8888/debug.test

ログを見てみると

cat /var/log/td-agent/td-agent.log
04
「debug.test: {“json”:”message”}」が出力されているので、動作確認OKです。

(3)ログ収集テスト apache accessログの収集

次は、apacheのaccessログをFluentdで収集し別ファイルに出力してみます。

/etc/td-agent/td-agent.conf に以下の設定を追加します。

入力ソースの type tail は、コマンドの tail -f のようなものです。

<source>
type tail
format apache2
pos_file /var/log/td-agent/httpd-access.log.pos
path /var/log/httpd/access_log
tag local.apache.access
</source>

<match local.**>
type file
path /var/log/td-agent/access
</match>
06

サービスを再起動して、fluentdの起動ログを見るとエラーが大量に!!
07
ログをみると、fluentdを起動している「td-agent」ユーザが、/var/log/httpd/access_logにアクセスできないというエラーだった。

パーミッションを変更してサービス再起動。

今回はエラーなし。

ブラウザから、apacheへアクセスしログを見ると

/var/log/td-agent/access
08
ログが記録されてた!

今回はローカル環境で行ったので、次回はサーバ間でテストします。