【documentDB】ecs fargateのfluentdインスタンスでdocumentdbに接続

aws

※プロモーションページが含まれる場合があります

fluentdとdocumentDBの接続の確認をしていたが、なかなかおもうようにいかなかったので

こちらで備忘録を書いておきます。

やろうとしていること

ecsのfargateで立ち上げたfluetndのコンテナタスクからdocumentdbに接続を確認して、documentdbにデータの登録ができるようになる

fluentdはfluent-plugin-mongoを使用していて、mongodbの形式でデータを保存したい。

fluentdの設定

fluentdの初学者でsouceとmatchっていまいちまだなれないのでinputとoutputで書いていきます

input(souce)

今回は接続を確認したいだけだったのでdummyを使用した

こちらの

{"hello":"world"}

がdbに登録されれば確認完了。

output(match)

アウトプットはこれ

fluent.conf

ポイントは

ssl true  
ssl_ca_cert /fluentd/etc/rdc-combined-ca-bundle.pem  # 証明書をダウンロードしたパス
host 1234hogehogehoge.docdb.amazonaws.com # host名
port 27017 # port
user hoge  # documentDBに登録したuser名
password hogepass  # documentDBに登録したpassword名

です。

host名とか証明書とかはどこから参照するかというとここから↓

documentdbの接続とセキュリティタブということろに書かれています。

それぞれ青マルをしているところから情報を拾ってくる

fluentdのdockerfile

fluentdコンテナのdockerfileはこちら

point1

証明書をダウンロードしておく

RUN cd /fluentd/etc/ && \ 
       wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
# 任意の場所に証明書をダウンロード
# ダウンロード方法はdocumentdbに記述されているものコピペ
point2(一番ハマった)

現在の最新1.6.0はreadwriteがデフォルトでtrueになるので下記エラーがでる。documentdbはmongoと互換があるがreadwriteがfalseの場合しかないらしい。なのでreadwriteがtrueになっているとエラーが起きるようだ

 fluent-gem install fluent-plugin-mongo:1.5.0 
# 今回の最難関だったところ。最新1.6は下記エラーで動作しなかったのでひとつバージョンが古い1.5.0を指定する
# エラー内容↓
 Retryable writes are not supported (on docdb-1234-hogehogehoge.ap-northeast-1.docdb.amazonaws.com:27017, modern retry, attempt 1)"

設定完了

上記で気を付ける事は設定できたので実際に確認してみる。

※ 今回流し込みたいcollectionsとdbはあらかじめ作っておきましょう。今回はcollectionsはlogsdbはapp_logsにしました。

確認方法は

1.ecs execでfluentdのコンテナに入り

2.そこからdocumentdbの内部に入る 

3.db.app_log.find()でデータの中身を確認。

確認してみる

こんな感じでfluendのdummyで流した内容がdocumentdbに登録されていることを確認できました。

ヨシ!

コメント

タイトルとURLをコピーしました