多くの方はFluentdを業務で利用しているかと思います。私も普段の業務で使っており、ログの収集、転送、分析、加工にと大変はかどっています。
その話もどこかでノウハウをまとめて共有しようと思っていますが、ここでは扱いません。
このエントリーでは私の家庭でのFluentd活用の話をします。家にあるサーバと手元のノートでFluentdを動かしており、連携させながら、プライベートな処理をぐりぐり動かしています。
自由度高くかつ心配事少く気軽に運用がはかどっているので、その一端をご紹介しします。
Fluentdを動かす環境
Raspberry PiにRaspbianを入れ、rbenv + ruby-buildでRubyを導入した上で、Fluentdをインストールしています。
Fluentd本体やプラグインを含め、全てのgemの管理はbundlerにゆだねています。
このマシンで完結する処理の場合
Raspberry Piは速くない、SDカードしか指してないのにストレージに限りがあるという問題以外は、普段仕事で使っているのと同じく、プラグインを入れて、fluent.confを書いてやるだけです。
他のマシンのFluentdと連携させたい場合
普段使いのノートPCのストリームをRaspberry PiのFluentdに流しています。といっても、out/in_forwardでつなげているわけではないです。
外に向けて待ち受けるものを作ると不安事や対策しなければならない事が増えるので、そういう事はやりたくありませんでした。
そこで、https://github.com/ixixi/fluent-plugin-sqs を用いて、Amazon SQSを利用しています。これによってキューという状態を持つ部分を管理しなくて済み、ごちゃごちゃになりがちなプライベート環境をImmutableに仕立てやすくなります。また流し込まれる側はポートを開いて待ち受ける必要がないので運用時の不安事が減ります。
config例
ノートPCからはAmazon SQSにストリームを流し、Raspberry PiはAmazon SQSからストリームを取り出しています。
具体的には、ノートPCが稼働している間、ハートビートをRaspberry Pi経由で色々なところに流し込んでいます。この例ではidobataに流しています。
ノートPC側
<match maclate2010.**>
type copy
<store>
type sqs
aws_key_id XXXXXXXXXXXXXXXXX
aws_sec_key YYYYYYYYYYYYYYYYYYYYYYY
queue_name VVVVVVVVVVVVVVVVVVVVVVVV
sqs_endpoint sqs.ap-northeast-1.amazonaws.com
</store>
<store>
type stdout
</store>
</match>
<source>
type exec
command date | tail -n 1
keys k1
tag maclate2010
run_interval 300s
</source>
```
#### Raspberry Pi側
```
<match bash0C7.**>
type copy
<store>
type idobata
webhook_url https://idobata.io/hook/ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
message_template <%= record[:body] %>
</store>
<store>
type null
</store>
</match>
<source>
type sqs
aws_key_id XXXXXXXXXXXXXXXXX
aws_sec_key YYYYYYYYYYYYYYYYYYYYYYY
sqs_url https://sqs.ap-northeast-1.amazonaws.com/VVVVVVVVVVVVVVVVVVVVVVVV
sqs_endpoint sqs.ap-northeast-1.amazonaws.com
receive_interval 30
tag bash0C7
</source>
```
なお現時点では、https://github.com/ixixi/fluent-plugin-sqs のSQS Input Pluginはgemとしてまだリリースが行われていないので、Gemfileでgithub側を指すようにしてください。
## もちろんスタンドアロンでも捗る!
Twitter検索 -> 画像取得 -> tumblr投稿を自作railsアプリからFluentdベースに移植した話は後で書きます。
## 次回予告
明日は私の元"向かいの人"で、技術の高さに熱意の凄さにと常々リスペクトしている [@suzu_v](https://twitter.com/suzu_v) 先生です。寒い冬を沸かせる超絶技巧エントリを期待しましょう。
## 参考資料
このエントリーの内容を含む話を、[Fluentd Casual Talks #3](http://atnd.org/events/45386) でLTしました。
資料は下記で公開していますのでご参照ください。
https://speakerdeck.com/bash0c7/fluentd-in-my-sweet-home