こんにちは、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
あっさり終わりました。
ためしにサービスを起動してみましょう。
/etc/init.d/td-agent start
あっさり起動しました。
Treasure Data社のパッケージはすばらしい!!
flentdの起動ログを見てみましたが、errorやwarningもなさそうです。
cat /var/log/td-agent/td-agent.log
とりあえずインストール完了。
(2)動作確認 httpリクエストのログ収集
次は動作確認です。
デフォルトでポート8888へのhttpのリクエストをログへ出力するように設定されていますので、Fluentdの設定ファイルを見てみると
vi /etc/td-agent/td-agent.conf
<source>
type http
port 8888
</source>
たしかに「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
「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>
サービスを再起動して、fluentdの起動ログを見るとエラーが大量に!!
ログをみると、fluentdを起動している「td-agent」ユーザが、/var/log/httpd/access_logにアクセスできないというエラーだった。
パーミッションを変更してサービス再起動。
今回はエラーなし。
ブラウザから、apacheへアクセスしログを見ると
/var/log/td-agent/access
ログが記録されてた!
今回はローカル環境で行ったので、次回はサーバ間でテストします。