LogstashをAWS RDSに接続するときの注意点

こんにちは。 エキサイト株式会社の三浦です。

DBからデータをどこかに同期する(例えば、DB内のデータをElasticsearchに同期する)場合、いろいろな方法がありますが、その一つにLogstashを使うというものがあります。 LogstashはElasticsearchと同じくElastic社が提供しているアプリケーションであり、Elastic社の説明によれば

無料かつオープンのサーバーサイドデータ処理パイプラインです。膨大な数のソースからデータを取り込み、変換して、お好みの格納庫(スタッシュ)に送信します。

https://www.elastic.co/jp/logstash

というものとなっています。

Elastic社が提供しているということでElasticsearchと相性がよく、使っている方もいるかと思いますが、今回は実体験をもとに、AWS RDSをソースとしたときのある注意点について説明します。

問題の発生

弊社のあるサービスでは、AWS RDSのデータをLogstashを使ってElasticsearchと同期しています。 最近、変更を加えるためにTest環境にLogstashをデプロイしたところ、大きな変更ではなかったにも関わらずエラーが発生し、正しく動かなくなってしまいました。

エラーをよく見てみるとRDSとの接続エラーのようでしたが、その時の変更点はRDSとのコネクションに関わる部分ではなかったため、どうやらコードの変更が原因ではないようです。 RDSと接続するために使用しているJDBCライブラリの更新なども行ってみましたが、特に改善は見られません。

色々調べた結果、ある記事を発見しました。

解決

stackoverflow.com

この記事によると、 useSSL オプションが悪さをしているとのこと。 本来はSSLでのコネクションでは正しく動かないのですが、デフォルトで使ってしまうので、オプションで useSSL=false をつけることで回避できる、とのことでした。

実際にこのオプションを付けることでコネクションができるようになりました。

最後に

今回はRDS側の設定もLogstash側のRDSとの接続設定も触っていないにもかかわらず突然コネクションができなくなったので、どこでどんな変更が起きた結果エラーになるようになったのかはわかりませんが、なにはともあれLogstashをRDSと接続させるにはSSLを使用しない設定にする必要があるようです。