【Fluentd翻訳】 Configuration File

Fluentdのドキュメントをザックリ訳してみる。
※個人的に、Fluentdへの興味や、理解を深めるために行っています。公式サイトとは無関係です。正確な内容は公式サイトを参照ください。


Configuration File

構成ファイル

概要

構成ファイルにより、(1)選んでいる入出力プラグイン及び、(2)プラグインのパラメータを指定する ことで、Fluentdの入出力をコントロールできます。ファイルは、Fluentdが正しく動くことを要求します。

構成ファイルの場所

RPM or Deb

構成ファイルは以下の場所を指定されます。

$ sudo vi /etc/td-agent/td-agent.conf

Gem

以下のコマンドで、構成ファイルを作成することができます。SIGHUPシグナルを送り、構成ファイルをリロードします。

$ sudo fluentd --setup /etc/fluent
$ sudo vi /etc/fluent/fluent.conf

ディレクティブのリスト

構成ファイルは、これらのディレクティブから成ります。

  1. sourceディレクティブは入力ソースを決定します。
  2. matchディレクティブは出力先を決定します。
  3. includeディレクティブは他のファイルを含めます。

sourceディレクティブ

sourceディレクティブを用いた望ましい入力プラグインを選び、設定することにより、Fluentdの入力ソースが作動します。Fluentd標準の入力プラグインは、httpfowardを含みます。

## 4224/tcp からイベントを受信
## これはログ・フォワーディングとFluentdのcatコマンドにより用いられます
<source>
  type forward
  port 24224
</source>

## http://this.host:9880/myapp.access?json={"event":"data"}
<source>
  type http
  port 9880
</source>

各々のsourceディレクティブはtypeパラメータを含まなければいけません。typeパラメータは選択された入力プラグインを指定します。

ルーティング

sourceはFluentdのルーティングエンジンにイベントを送ります。イベントは、tag・time・recordの3つのエンティティから成ります。タグは'.'で区切られた文字列(例:myapp.access)で、Fluentdの内部ルーティングエンジンに使われます。

Timeはイベントが起こるUNIX時間です。RecordはJSONオブジェクトです。上記の例において、HTTP入力プラグインは下記のイベントをサブミットします。

## http://this.host:9880/myapp.access?json={"event":"data"} で発生します
tag: myapp.access
time: (現在時刻)
record: {"event":"data"}
プラグイン

プラグインを記述することによって、最初に提供されているものに加え、Fluentdの入力ソースを拡大する ことができます。Fluentdの入力プラグインに関する詳細は、入力プラグイン概要を参照してください。

matchディレクティブ

matchディレクティブを用いた望ましい出力プラグインを選び、設定することにより、Fluentdの出力先が作動します。Fluentd標準の出力プラグインは、filefowardを含みます。

## "myapp.access" イベントタグにマッチし、
## /var/log/fluent/access.%Y-%m-%d に保存します
<match myapp.access>
  type file
  path /var/log/fluent/access
</match>

<match myapp.log.**>
  type file
  format /var/log/fluent/myapp_hourly
  time_slice_format %Y%m%d%H
</match>

各々のmatchディレクティブは、マッチパターンとtypeパラメータを含まなければいけません。 マッチパターンはイベントにフィルタをかけるのに用いられます。タグがパターンにマッチするだけで、イベントは出力に送らます。typeパラメータは出力のプラグインを指定します。

例えば、 myapp.accesslog.** と file で、マッチしたすべてのパターンを、指定されたディレクトリのファイルに送ることができます。

プラグインを記述することによって、最初に提供されているものに加え、Fluentdの出力ソースを拡大する ことができます。Fluentdの出力先に関する詳細は、出力プラグイン概要を参照してください。

マッチパターン

以下のマッチパターンを利用できます。

  • * は1つの要素にマッチします

    • 例えば、a.* はa.bにマッチします。しかし、a や a.b.c にはマッチしません
  • ** は0以上の要素のにマッチします

    • 例えば、 a.** は a、a.b、a.b.c にマッチします
  • {X,Y,Z} は X、Y、Zにマッチします。X、Y、Zがマッチパターンです。

    • 例えば、{a,b} は a と b にマッチします。しかし、 c にはマッチしません
    • これは、* や ** と 一緒に使うことができます。例としては、a.{b,c}.* と a.{b,c.**}です。

includeディレクティブ

includeディレクティブを用いることで、別々の構成ファイルをインポートできます。

## ./config.d ディレクトリの構成ファイルを含めます
include config.d/*.conf


includeディレクティブは、通常のファイルパス・globパターン・http URLをサポートします。

## 絶対パス
include /path/to/config.conf

## もし相対パスを含んでいる場合、ディレクティブは 
## このファイルのディレクトリ名を拡張します
include extra.conf

## globマッチパターン
include config.d/*.conf

## http
include http://example.com/fluent.conf