Amazon Kinesisに入力されたデータをtd-agentで取り出します。
Amazon Kinesisのデータの取り出しには、kinpiraさんが作ったfluent-plugin-in-kinesis( http://qiita.com/kinpira/items/cefaf9050429325498aa )というプラグインを使わせて頂きます。
今回の環境
今回は以下の環境を使います。
1.Amazon Kinesis
・ストリーム名:test-stream
2.Amazon EC2
・Ubuntu 14.04
・「1」で作成したストリームを操作可能なIAM Roleを付与
・AWS CLIをインストール
以降の操作はすべて「2」で作成したEC2上で実施します。
td-agentインストール
まずEC2にtd-agentをインストールします。
$ curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sh
$ td-agent --version
td-agent 0.12.20
fluent-plugin-in-kinesisインストール
Amazon Kinesisのデータを取得するプラグイン「fluent-plugin-in-kinesis」をインストールします。
$ sudo td-agent-gem install fluent-plugin-in-kinesis
$ td-agent-gem list --local |grep fluent-plugin-in-kinesis
fluent-plugin-in-kinesis (0.0.2)
td-agent.confを書き換え
td-agent.confを下記のように書き換え
<source>
type kinesis
stream_name test-stream
region ap-northeast-1
load_records_limit 1000 # 一度に取得できるレコード数
load_shard_interval 10 # 対象のストリームに存在するシャード一覧を確認する間隔(10秒に1回シャード一覧を確認する)
load_record_interval 1 # データを取得する間隔
tag test.stream
state_dir_path /var/log/td-agent/save # Kinesisのデータを何処まで読み込んだか記録しておく為のディレクトリ
format json
</source>
<match test.stream>
type file
path /var/log/td-agent/test-stream
</match>
state_dir_pathで指定したディレクトリを作成し、td-agentを再起動
$ sudo mkdir /var/log/td-agent/save
$ sudo chown td-agent.td-agent /var/log/td-agent/save
$ sudo service td-agent restart
$ sudo service td-agent status
* td-agent is running
Amazon Kinesisからtd-agentでデータを取り出し
AWS CLIを使ってKinesisにデータを投入し
投入したデータをtd-agentで取得出来ている事を確認します。
Kinesisにデータ投入
$ aws kinesis put-record --stream-name test-stream --data '{"data":"test-data"}' --partition-key test-key --region ap-northeast-1
{
"ShardId": "shardId-000000000000",
"SequenceNumber": "49559397709724644070674617403929989783736592900930142210"
}
td-agentでデータが取得出来ているか確認します。
$ tail -f /var/log/td-agent/test-stream.20160221.b52c48f9481c0ca59
2016-02-21T15:00:15+00:00 test.stream {"data":"test-data2"}