個人的にfluentdをちゃんと分かっていないと思ったので、勉強の意味もこめて改めて纏めてみました。
fluentdってそもそもどういうものか
公式サイトはこちらです。
fluentdを一言で言えばイベントログ収集ツール。Treasure data方が作成されたもので、ログの収集や転送などができます(複数台のサーバのログを収集できる)。プラグインがあって、様々なシステムで利用することができます。
fluentdを使ってみる
インストール
方法は幾つかあるようです。
*gemで入れる
*yumで入れる
試しに使う
サンプルとしてローカルで動かしているrailsアプリケーションのログをfluentdを使って収集してみます。
まずはfluentdの設定ファイルを作成します。
<source>
type tail
format none
path /usr/local/*****/****/log/development.log
tag hoge_log.access
</source>
<match hoge_log.access>
type file
path /usr/local/****/fluent_log/test.log
</match>
sourceで指定しているpathの値はサンプルrailsアプリのログの出力先です。
matchのpathはfluentdが収集したログを出力する先(今回はtypeをfileで指定してファイルとして出力)です。
それでは起動してみます。
fluentd -c fluentd.conf -vv &
上のように設定ファイルを指定して起動します。プロセスをチェックして起動出来ていることを確認してみると
で、railsアプリを起動して適当に動かしてみると・・
左がrailsアプリのログで右がfluentdのログですが、ログ出力されているなーというのが分かるかと思います。
fluentdの設定を見てみる
fluentdの設定ファイルの記述方法について整理します。
source
ログの入力先を定義します。入力もととしては標準入力、ファイル、ポート指定のHTTP通信などがあります。
type
ログの入力もとを指定
- forward: 標準出力
- tail: ファイル(上の例ではこちら)
- http: http通信
path
入力もとファイルのパス
tag
matchディレクティブで指定しているもの。sourceで入力を定義し、matchで出力を定義しますが、tagはsourceで入力されたものをどのmatchで受け取るか関連付けるもの。
match
収集したログの出力先を定義します。先ほどの例のようにファイルに出力する方法もあれば、標準出力、他のfluentdに転送するなど色々あります。
type
収集したログの出力先を指定
- stdout: 標準出力
- file: ファイル(上の例ではこちら)
- http: http通信
path
入力もとファイルのパス
include
他のfluentd設定ファイルをincludeすることができます。
他のfluentdとの連携
ここはその2で書きます。