Fluentd update 2015


今年のカレンダーも1年のまとめから入ります．2015年はfluentd v0.12が開発のメインへと移行し，td-agent 2もv0.12を同梱するようになったので，v0.10からv0.12への移行がそれなりに進んだ年でした．また，11月にはv0.14のpreバージョンもリリースされ，来年のv1リリースを目指して着々と準備が出来た年でした．

いつものようにFluentd本体にどういう更新があったのかや，エコシステム周りを含め書きます．

## Fluentd本体

現在の各バージョン別の最新バージョンは以下です．

- old stable: 0.10.61
- current stable: 0.12.17
- edge version: 0.14.0.pre

td-agent 2がv0.12を同梱しているのもそうですが，v0.12が現在のメインバージョンです．v0.10を今から使う理由はないですし，ナノ秒対応などの機能が入ったv0.14は現在テスト段階という感じです．

### プラグインの設定項目の表示 (v0.12.16)

`--show-plugin-config`が追加され，`config_param`などで設定が用意されている場合に，それをコマンドラインから確認出来るようになりました．以下が`dummy` Inputプラグインの例です．

```
fluentd --show-plugin-config input:dummy
2015-08-26 13:59:54 +0900 [info]: Show config for input:dummy
2015-08-26 13:59:54 +0900 [info]: 
tag: string: <nil>
rate: integer: <1>
auto_increment_key: string: <nil>
dummy: : <[{"message"=>"dummy"}]>
```

現在では`desc`を使ってconfig_paramに説明を追加することも出来るようになっており，書いておくとそれも表示されます．built-inのプラグインから今対応を初めています

### config_paramの強化 (v0.12.10/v0.12.11)

config_paramで定義出来るフォーマットに`enum`を追加したり，設定をダンプする時にデータをマスクする`secret`オプションが追加されたりしました．APIキーやパスワードなどは実際の値が表示されなくなったので，`in_monitor_agent`で見えなくなりますし，最初の起動ログも貼り付けやすくなりました．

### `forward` Outputプラグインの強化 (v0.12.13)

DNSラウンドロビンやハートビートを行わないなどの設定を用意し，さらに利用ケースが増えました

### RPC機能の実装 (v0.12.9)

今までFluentdのプロセスをマネージするにはsignalが一般的でしたが，数に限りがあるのとWindowsなどではうまく使えない，という制限を回避するため，HTTPによるRPC機能を実装しました．`<system>`に`rpc_endpoint`を設定すれば，そのエンドポイント経由でバッファのフラッシュなどが行えます．

どういうAPIが現状あるかはドキュメントの[RPC](http://docs.fluentd.org/articles/rpc)を参照してください．Inputプラグインを止める`stopSources`みたいなのは今後入るかもしれません．

### tail Inputプラグインの強化

- 64bit inodeのサポート (v0.12.4)
- multilineというprefixがついているparserをmultilineモードで扱う (v0.12.5)
- `exclude_path`オプションによる監視リストから任意のファイルを無視する機能 (v0.12.7)
- `read_lines_limit`オプションによる，1回の最大読み込み量の制御 (v0.12.9)

### record_transformer Filterプラグインの強化

かなりユーザが多いのもあり，細かな改善が多いです

- `<record>`内でのキーでのplaceholder対応 (v0.12.7)
- `renew_time_key`による，イベント時間の置き換え (v0.12.10)
- `auto_typecast`による，元のフィールドの型にあわせて結果を埋め込む (v0.12.13)

### `@`が必要なシステムパラメータ

`@type`，`@id`，`@label`，`@log_level`はプラグイン本体の設定ではなくてFluentdコアの設定ということで，`@`をつけることでわけることにしました．`type`，`id`，`log_level`も互換性維持のために残していますが，新しく設定を書くときは`@`をつけることをオススメします．

以上v0.12で一通りユーザに影響がありそうなやつをさらってみました．もちろん他のコア部分やプラグインも改善やバグ修正がされているので，気になる方は[ChangeLog](https://github.com/fluent/fluentd/blob/v0.12/ChangeLog)を参照してみてください．

### v0.14.0pre1

v0.14は次のバージョンで，いくつかさらなる改善や機能追加があるんですが，すでにWindowsサポートとイベント時間のナノ秒対応が含まれているpre1がリリースされてます．絶賛テストしてくれる人を募集中です．

詳細は[Fluentd v0.14.0.pre.1のリリース](http://qiita.com/repeatedly/items/04d32738a609d0c25a02)の記事を参照してください．

## エコシステム

### td-agent

最新版はtd-agent 2.2.1です．v0.12.18を出したら今週か来週辺りに2.2.2を出す予定です．去年に比べてAmazon Linuxをサポートしたりなど，いくつかサポート環境が増えています．

### fluent-bit

Fluentdはメモリのフットプリントがデフォルトで低いこともあり，そんなに性能がよくない環境でも動かせたりします．が，それでも本当に小さいembeddedな環境だと厳しいのは確かです．なので，そういう環境でもちゃんと動くようにCで実装されたfluent-bitがリリースされました．今はEmbedded Linuxにfocusして実装が進んでいるようです．

http://fluentbit.io/

### Kafka Consumer for Fluentd

どういうものかは[Kafka Consumer for Fluentd](http://qiita.com/repeatedly/items/d2680cdc0cd7296b48e0)という記事ですでに書いてます．海外だとKafkaはすでにポピュラーと言っていいと思ってるんですが，日本でもちょくちょくユーザを聞くようになってきたので，もしKafkaとFluentdを連携させる必要がある時には検討してみてください．Producerはまだ需要がないので実装してませんが，もし必要なら実装するかもしれません．ですが，まずはfluent-plugin-kafkaを検討してみてください．

### Treasure DataによるFluentdサポート開始

今までTreasure Dataサービスを利用しているお客さんにはFluentd(td-agent)に問題があった時など，エンジニアがサポートしていたのですが，Treasure Dataサービスを使っていなくても，単独でFluentdのサポートが受けられるようになりました．前々から勉強会などで「サポートはないのか？」みたいな質問を受けることがちょくちょくあったので，やっとという感じです．すでにお客さんがついているので，やはり需要はあったんだな，と実感しています．

日本だとSRA OSSさんと協業しています．興味がある方はアナウンス記事も参照してみてください.

[SRA OSSとトレジャーデータがログ収集基盤ソフトウェア Fluentd で協業、「Fluentdエンタープライズサポートサービス」を開始](https://www.treasuredata.com/jp/press_release/20151014_fluentd_support_sra)

### ユーザのさらなる拡大

昨年はGCPやk8sで採用されたのが一つの大きなイベントでしたが，今年はさらに色々なところで名前を聞くようになりました．[DatadogのエージェントがFluentd監視サポート](https://www.datadoghq.com/blog/monitor-fluentd-datadog)，[Dockerの標準logging driverがFluentdもサポート](http://docs.docker.com/engine/reference/logging/fluentd/)，[ELKスタックを対象としていたlogz.ioがFluentdもサポート](http://logz.io/blog/elk-role-based-access-s3-fluentd/)，[Microsoftが提供しているOMS Agent](http://blogs.technet.com/b/momteam/archive/2015/11/04/oms-agent-for-linux-now-available.aspx)やぷらっとホームの[Plat'Data Processing](https://pd.plathome.com/ja/emitter)がコアにFluentdを利用，など色々なところでFluentdが活躍するようになってきました．
メーリングリストを見ていると，他のログコレクタで疲弊した人がFluentdを採用するケースも未だに増えていて，コツコツと使いやすさや運用のしやすさを改善してきたことが色々と実っている感じがします．

## 最後に

2015年も，パッチを投げてくれた人，バグを報告してくれた人，記事を書いてくれた人などなど，皆さんにはお世話になりました．来年にはv0.14の後，ついにv1を出したいと思っています．もっと便利により柔軟でロバストになると思いますので，これからもよろしくお願いします！