今年のカレンダーも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を参照してください.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を参照してみてください.
v0.14.0pre1
v0.14は次のバージョンで,いくつかさらなる改善や機能追加があるんですが,すでにWindowsサポートとイベント時間のナノ秒対応が含まれているpre1がリリースされてます.絶賛テストしてくれる人を募集中です.
詳細はFluentd v0.14.0.pre.1のリリースの記事を参照してください.
エコシステム
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して実装が進んでいるようです.
Kafka Consumer for Fluentd
どういうものかはKafka Consumer for Fluentdという記事ですでに書いてます.海外だとKafkaはすでにポピュラーと言っていいと思ってるんですが,日本でもちょくちょくユーザを聞くようになってきたので,もしKafkaとFluentdを連携させる必要がある時には検討してみてください.Producerはまだ需要がないので実装してませんが,もし必要なら実装するかもしれません.ですが,まずはfluent-plugin-kafkaを検討してみてください.
Treasure DataによるFluentdサポート開始
今までTreasure Dataサービスを利用しているお客さんにはFluentd(td-agent)に問題があった時など,エンジニアがサポートしていたのですが,Treasure Dataサービスを使っていなくても,単独でFluentdのサポートが受けられるようになりました.前々から勉強会などで「サポートはないのか?」みたいな質問を受けることがちょくちょくあったので,やっとという感じです.すでにお客さんがついているので,やはり需要はあったんだな,と実感しています.
日本だとSRA OSSさんと協業しています.興味がある方はアナウンス記事も参照してみてください.
SRA OSSとトレジャーデータがログ収集基盤ソフトウェア Fluentd で協業、「Fluentdエンタープライズサポートサービス」を開始
ユーザのさらなる拡大
昨年はGCPやk8sで採用されたのが一つの大きなイベントでしたが,今年はさらに色々なところで名前を聞くようになりました.DatadogのエージェントがFluentd監視サポート,Dockerの標準logging driverがFluentdもサポート,ELKスタックを対象としていたlogz.ioがFluentdもサポート,Microsoftが提供しているOMS AgentやぷらっとホームのPlat'Data ProcessingがコアにFluentdを利用,など色々なところでFluentdが活躍するようになってきました.
メーリングリストを見ていると,他のログコレクタで疲弊した人がFluentdを採用するケースも未だに増えていて,コツコツと使いやすさや運用のしやすさを改善してきたことが色々と実っている感じがします.
最後に
2015年も,パッチを投げてくれた人,バグを報告してくれた人,記事を書いてくれた人などなど,皆さんにはお世話になりました.来年にはv0.14の後,ついにv1を出したいと思っています.もっと便利により柔軟でロバストになると思いますので,これからもよろしくお願いします!