aws-fluent-plugin-kinesis v0.3.0リリースされました。待望のPutRecords対応。
ただし、入力プラグインはまだマージされてません。風の噂によると近いリリースでマージされるとか、されないとか…
https://github.com/awslabs/aws-fluent-plugin-kinesis/pull/10
本家にマージはされていないのですが、フォークしたリポジトリから直接インストールすれば、Kinesisの入力プラグインが使えます。
git clone https://github.com/winebarrel/aws-fluent-plugin-kinesis.git cd aws-fluent-plugin-kinesis git checkout add_in_plugin bundle install bundle exec rake install
以下のような設定でfluentdを起動すると、ストリーム「my-stream」から最新のレコードを適用に読み込みます。
<source> type kinesis stream_name my-stream tag debug.kinesis shard_iterator_type LATEST db /tmp/kinesis.db json_data true </source> <match debug.**> type stdout </match>
json_data
がtrue
の場合、レコードデータをJSONとしてパースしてfluetndに取り込みます。
駆け込みでプルリクエストに追加したので、本家にマージされるかは微妙ですが…
で、雑にデータを突っ込みたかったのでkinesis_catというcliを作りました。gemでインストールできます。
gem install kinesis_cat
fluent-cat
のKinesis版で、標準入力からJSONデータを読み込んでKinsisに投げるツールです。
以下のようにJSONのデータをKinesisに入力すると…
echo '{"key":"val"}' | kinesis-cat --stream-name my-stream
fluentdでデータを集約することができます。
2015-01-12 23:26:31 +0900 debug.kinesis: { "sequence_number":"49546909991764836347635699150894029849815117811545014274", "partition_key":"1421072787", "shard_id":"shardId-000000000000", "key":"val" } (整形済み)
で?
えーっと何がよいかというと、データを送る側にfluentdが不要な点です。あとネットワークが別でもログが入れられるとかもありますね。
まあ、fluentdをインストールして起動しておくのもたいした手間ではないんですが台数が増えると結構めんどくさいですし、stream名を指定してKinesisに投げておくだけで、よきに計らってくれるのは結構便利かな…と。