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はlogs
、dbはapp_logs
にしました。
確認方法は
1.ecs execでfluentdのコンテナに入り
2.そこからdocumentdbの内部に入る
3.db.app_log.find()でデータの中身を確認。
確認してみる
こんな感じでfluendのdummyで流した内容がdocumentdbに登録されていることを確認できました。
ヨシ!
コメント