fluent-plugin-aws-elasticsearch-service使ってElasticsearch Serviceに疎通確認作業

fluent-plugin-aws-elasticsearch-serviceでIAM権限でAmazon Elasticsearch Service繋ごうと思うのですが、IAM権限やアクセスポリシー変更しながらの疎通テストをしたいと思い。簡単に疎通テスト用の手順書きました。

github.com

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"}

エラーがでなければデータ入っているはずです。

f:id:yomon8:20191106204909p:plain