たごもりすメモ

コードとかその他の話とか。

LogstashからFluentdにデータを転送する

このエントリはFluentd Advent Calendar 2015の12月25日分の記事です。4日遅れ!

で、本題ですが、もうタイトルそのまんま、logstash-output-fluentd を作りました。
logstash-output-fluentd | RubyGems.org | your community gem host
tagomoris/logstash-output-fluentd · GitHub

How to install / use

先日書いたものと全く一緒ですが、いちおう書いておきます。

とりあえずインストール。

$ bin/plugin install ../logstash-output-fluentd-0.1.0.gem 
Uninstalling logstash-output-fluentd
Validating ../logstash-output-fluentd-0.1.0.gem
Installing logstash-output-fluentd
Installation successful

そしたら以下の設定ファイルを用意します。stdinから読み込んで 127.0.0.1 (のデフォルトポート 24224)に送るやつ。

input {
  stdin {}
}
output {
  fluentd {
    host => "127.0.0.1"
    tag => "logstash"
  }
}

起動すればもう使えます。簡単ですね!

$ bin/logstash -f example.conf 
Settings: Default filter workers: 2
Logstash startup completed
line 1
line 2
line 3
line 4

https://i.gyazo.com/1205f1400186157524418e9ad4f0c3ef.png

Yay!

注意点など

まだごくシンプルに指定したホストの in_forward に向けてデータを投げ付けるだけですが、まあ、使えなくもないかなというところです。Fluentdのforwardプロトコルにはいろいろと機能があるんですが、そのへんやover SSL*1やらはまだ全くしておりません。また複数ホストへのロードバランスやら死活確認(つまりHA)やらも対応しておりません。
そのうちやろうかなあ、どうしようかなあ。

バッファは logstash-output-treasure_data と同じでオンメモリに適当に持っているだけです。デフォルトは短めで50イベントもしくは5秒。これも flush_size および flush_interval で制御できます。正常にシャットダウンすればflushされるけどその時に失敗したり異常終了したりしたらイベントが失われるのも同じです。

まとめ

Enjoy logging!

*1:つまりin_secure_forward対応