Fluentdのin_httpをAWS ALBでロードバランシングする
in_httpとは
FluentdでHTTPリクエストを受信するのに利用するInputのプラグインで、
今回は前にブログにした、SendGridのWebHookをHTTPで受けるための仕組みをAWS上に作るために利用。
詳しいことは前にブログに書いたんだけど、これは我ながら結構いい仕組みなんじゃないかなぁと思う。
やっぱりそれなりに良い仕組みだと思うので、もうちょっと色々改変しまた書こうかなぁと思ったりしている。
ヘルスチェックをどうにかする
SendGridのイベントが記録できないととてもクリティカルではないのだけど、
最低限の冗長構成くらいは取りたかったのと、in_httpでSSL証明書の設定をするのは結構管理だったりが面倒だったので、今回はALBでロードバランシングすることにした。
in_httpプラグインは基本的にはPOSTリクエストでのみリクエストを受け付けているため、
ALBヘルスチェックはHTTPポートのGETリクエストのみであるため、ALBのヘルスチェックが通らない。
ALB上のヘルスチェックをどうにかするには、GETで別にリクエストを行えるエンドポイントを用意する必要があるのだが、
それはfluent-plugin-http-healthcheckを使えばよい。
そして、ヘルスチェックを行うHTTPポートについては別のポートに設定しておけば、
ヘルスチェックは通過するので、めでたしめでたしという感じになり、
FluentdでHTTPリクエストを受けて、別のFluentd集約サーバに転送できる。