fluent-plugin-aws-elasticsearch-serviceでIAM権限でAmazon Elasticsearch Service繋ごうと思うのですが、IAM権限やアクセスポリシー変更しながらの疎通テストをしたいと思い。簡単に疎通テスト用の手順書きました。
Amazon Linux2にログオン
クリーンなAmazon Linux2の起動後から作業を記載します。疎通テストだけならt3.nanoで十分です。 まずはec2-userでログオンします。
td-agentインストール
本家の手順の通り。
$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh
~省略~
Complete!
Installation completed. Happy Logging!
fluent-plugin-aws-elasticsearch-serviceのインストール
fluent-plugin-aws-elasticsearch-serviceのインストールと一緒にfaraday_middleware-aws-sigv4も更新しておきます。
$ sudo td-agent-gem install fluent-plugin-aws-elasticsearch-service $ sudo td-agent-gem update faraday_middleware-aws-sigv4
設定ファイルと疎通用のデータ準備
以下をコピペして実行します。
TARGET_FILE_PATH=/tmp/temp.csv AWS_REGION=ap-northeast-1 CLUSTER_URL=https://vpc-otomo3-d-cete23husipqtyaww3lg3fqfay.ap-northeast-1.es.amazonaws.com cat << EOF >${TARGET_FILE_PATH} a,aa,aaa b,bb,bbb c,cc,ccc d,dd,ddd EOF cat <<EOF > ./temp.conf <source> @type tail path ${TARGET_FILE_PATH} read_from_head true <parse> @type csv keys value1,value2,value3 </parse> tag es.connection.test </source> <match es.**> type "aws-elasticsearch-service" logstash_format true include_tag_key true flush_interval 1s <endpoint> url ${CLUSTER_URL} region ${AWS_REGION} </endpoint> </match> EOF
上記の場合はEC2にアタッチされたIAMロールの権限でESにつなぎにいきます。
必要に応じてIAM部分やアクセスキーは調整かけます。<endpoint>
の辺りと、ES側のアクセスポリシーなどがポイントになります。以下も参考にします。
https://github.com/atomita/fluent-plugin-aws-elasticsearch-service#iam
疎通テスト
後は実行してみて、エラーが出たら内容見てという感じで疎通テストします。
$ td-agent -vvv -c ./temp.conf
以下のように、作成したデータをBulkで挿入できたログが表示されるはずです。
2019-11-06 12:07:42 +0000 [trace]: #0 fluent/log.rb:281:trace: bulk request: {"index":{"_index":"logstash-2019.11.06","_type":"_doc"}} {"value1":"a","value2":"aa","value3":"aaa","@timestamp":"2019-11-06T12:07:40.103534224+00:00","tag":"es.connection.test"} {"index":{"_index":"logstash-2019.11.06","_type":"_doc"}} {"value1":"b","value2":"bb","value3":"bbb","@timestamp":"2019-11-06T12:07:40.103618692+00:00","tag":"es.connection.test"} {"index":{"_index":"logstash-2019.11.06","_type":"_doc"}} {"value1":"c","value2":"cc","value3":"ccc","@timestamp":"2019-11-06T12:07:40.103714963+00:00","tag":"es.connection.test"} {"index":{"_index":"logstash-2019.11.06","_type":"_doc"}} {"value1":"d","value2":"dd","value3":"ddd","@timestamp":"2019-11-06T12:07:40.103778094+00:00","tag":"es.connection.test"}
エラーがでなければデータ入っているはずです。