こんにちは。バクラク事業部Platform Engineering部DevOpsチームの@civitaspoです。
7月はLayerXエンジニアブログを活発にしよう月間 ということで、この記事ではAWS FireLensに関する情報をクイズ形式でお届けします。
みなさんはAWS FireLensを使っていますか?弊社ではAmazon ECS上にアプリケーションをホスティングしており、AWS FireLensを利用してログ収集・ログ送信を行っています。AWS FireLensは非常に便利です。一方、AWS FireLensは奥が深い挙動をすることもあります。この記事ではそんなAWS FireLensを深く理解するための情報をクイズ形式でお届けしてみることにしました。僕が知る限りの情報を詰め込んでみたのでAWS FireLensを深く理解したい方に届けばいいなと思います。
- AWS FireLensとは
- クイズパート:AWS FireLens編
- Q1. Amazon ECS上でlogDriver=awsfirelensを指定したとき、どのような経路でAWS FireLensコンテナにログが送られるでしょうか?
- Q2. AWS FireLensを使用するECS TaskをnetworkMode=bridgeで起動する場合に気をつけなければならないことはなんでしょうか?
- Q3. AWS FireLensで使用されるFluent BitとOSSのFluent Bitの主な違いは何でしょうか?
- Q4. AWS FireLensとして起動したFluent Bitの設定ファイル/fluent-bit/etc/fluent-bit.confには、起動直後、何が起こりますか?
- Q5. AWS FirelensでFluent Bit用の独自設定ファイルを使用する方法は事前にDocker Image内に格納しておく以外にどういう方法がありますか?
- Q6. ログが長すぎて複数行に分割されてしまう閾値は何KBでしょうか?
- Q7. 複数行に分割された長いログをFluent Bit内で再結合するにはどうすればよいでしょうか?
- Q8. AWS FireLensでログの欠損を防ぐために追加で入れておくべき設定はなんでしょうか?
- クイズパート:Fluent Bit編
- おわりに
AWS FireLensとは
クイズに入る前にAWS FireLensについておさらいしておきます。AWS FireLensは2019年に発表されたAmazon ECSのカスタムログルーティングツールです。設定を行うとAmazon ECS上にデプロイしたコンテナの標準出力、標準エラー出力を任意の場所に送信することができます。AWS FireLensはAmazon ECSのTaskにサイドカーコンテナとしてデプロイされ、コンテナ内部で実処理を行うのはFluent BitまたはFluentdです。語弊を恐れずに言えばAWS FireLensはFluent BitやFluentdをAmazon ECSに最適化した形でホスティングする軽量ラッパーと言えるでしょう。
つまり、AWS FireLensを真に理解するには実処理を行っているFluent BitやFluentdも深く理解する必要があります。本記事ではAWS FireLensの内部で処理を行うのはFluent Bit、という想定でクイズを作成しています。全部で12問あります。
それではクイズを見ていきましょう。
クイズパート:AWS FireLens編
Q1. Amazon ECS上でlogDriver=awsfirelens
を指定したとき、どのような経路でAWS FireLensコンテナにログが送られるでしょうか?
Q2. AWS FireLensを使用するECS TaskをnetworkMode=bridge
で起動する場合に気をつけなければならないことはなんでしょうか?
Q3. AWS FireLensで使用されるFluent BitとOSSのFluent Bitの主な違いは何でしょうか?
Q4. AWS FireLensとして起動したFluent Bitの設定ファイル/fluent-bit/etc/fluent-bit.conf
には、起動直後、何が起こりますか?
Q5. AWS FirelensでFluent Bit用の独自設定ファイルを使用する方法は事前にDocker Image内に格納しておく以外にどういう方法がありますか?
Q6. ログが長すぎて複数行に分割されてしまう閾値は何KBでしょうか?
Q7. 複数行に分割された長いログをFluent Bit内で再結合するにはどうすればよいでしょうか?
Q8. AWS FireLensでログの欠損を防ぐために追加で入れておくべき設定はなんでしょうか?
クイズパート:Fluent Bit編
Q9. Fluent Bitが書かれている言語は何でしょうか?
Q10. Fluent Bitを、Fluent Bitが書かれている言語以外で拡張することはできますか?できる場合、どんな言語で拡張できますか?
Q11. Fluent Bitで特定のタグが付いたログを複数の送信先に送りたい。どうすればよいでしょうか?
Q12. Fluent Bitで特定のタグが付いたログを複数の送信先に送りたい。そして、特定の送信先にログを送るときはFilter Pluginで整形したい。どうすればよいでしょうか?
おわりに
お疲れ様でした。本記事ではAWS FireLens(Fluent Bit利用版)に関してクイズ形式で細かな挙動を紹介しました。 全部知ってた!という方はどれくらいいらっしゃったでしょうか。おそらく他にも奥が深い挙動があると思うので「もっとマニアックなことを知ってるぞ」という方は、ぜひ@civitaspoまでご連絡ください。
最後に、LayerXでDevOpsを一緒にやるメンバーを大大大募集しています!いつでもカジュアル面談をお待ちしているので以下のページからご登録をよろしくお願いします!