jinugasachio / advanced-ecs-on-fargate

0 stars 0 forks source link

ログ管理 #15

Open jinugasachio opened 3 years ago

jinugasachio commented 3 years ago

※ ごちゃごちゃしているのでこのチケットの全てのコメントの要点をまとめたものをここに書く


ログの分類

ログの目的

収集対象

BIツール

結論

ログの分析・可視化

WIP 結論

考慮した選択肢

ログ構成図

FAQ

FireLens経由でS3バケットへログ保存するのにKinesis Data Firehoseは必要なの?

FireLensのFluent Bitコンテナが予期せぬ停止をしてしまうと、送信頻度によってはログを消失する可能性があります。 Kinesis Data Firehoseを間に挟むことでログのバッファリングが可能なので、高頻度の送信によるニアリアルタイムでログを保管することができます。

jinugasachio commented 3 years ago

昔はfargateだと柔軟に転送先を選べなかったっぽいけど今はFireLensで実現できるらしい

fluentdからelasticsarchとs3双方にログを転送し直近のログは一定期間のみ前者で扱えるようにするとかするとコストは抑えられる。当たり前だが長期保存はs3のようなオブジェクトストレージが向いている。


firehoseを挟む場合と挟まない場合とでのメリデメがいまいちわかっていない

jinugasachio commented 2 years ago

ログドライバーはawslogsよりもFireLensの方が各所でお勧めされている FireLensとFluent Bitの併用でcloud watch logとs3に同時に転送・出力できたり、片方にのみ転送・出力できたりする

FireLensではFluentdとFluent Bit 両方選択できるがAWS的にはリソース効率が良いFluent Bitを推奨している Fluentdはruby製、Fluent BitはC製

yukio-ugajin commented 2 years ago

papertrailの代わりとなる可視化ツールは何にしたらいいのか、 やはりdatadog? newrelicはメトリクス収集はできそうだけどログは一元的に見れるのか?

jinugasachio commented 2 years ago

herokuから移行したケースだとやっぱpapertrail使いたいって感じたらしい

yukio-ugajin commented 2 years ago
jinugasachio commented 2 years ago

ログ可視化に良さそう

発表内容でも触れましたが、一般的にSIEM(Security Information and Event Management)の機能としては以下の3つです。

  • ログを統合的に管理する
  • 複数のログを相関的に分析する
  • インシデントを発見し管理する

elastic apmも入れればkibanaで完全に一元管理できそう https://www.elastic.co/jp/blog/monitoring-applications-with-elasticsearch-and-elastic-apm

jinugasachio commented 2 years ago

メモ

jinugasachio commented 2 years ago

スクリーンショット 2021-11-25 13 46 24(2) スクリーンショット 2021-11-25 13 54 42(2) スクリーンショット 2021-11-25 13 56 13(2)

jinugasachio commented 2 years ago

ログ可視化ツール選択肢(間違っている可能性もある)


メドピアはAWS config + Athena + QuickSightっぽい。 https://tech.medpeer.co.jp/entry/2021/10/01/090000

jinugasachio commented 2 years ago

メモ

スクリーンショット 2021-11-25 17 24 59(2)

jinugasachio commented 2 years ago

コンテナロギングの手法まとめ(結論FireLensが良さそうではある)from 参考資料

スクリーンショット 2021-11-25 18 05 29(2) スクリーンショット 2021-11-25 18 07 20(2) スクリーンショット 2021-11-25 18 07 27(2)

構成例

スクリーンショット 2021-11-25 18 13 47(2)

jinugasachio commented 2 years ago

コンテナ定義に書くかfluentbitの設定ファイルに書くかの違いは 前者はfirelensを使用、後者はfluentbitのプラグインを使用ということかも。

例えばコンテナ定義の方でfirehoseにもdatadogにも送るみたいな複数の設定ができないとしたら、fluentbitの設定ファイルの方に書く。みたいな感じかな


fluentbitのdatadogプラグインはあるっぽい https://docs.datadoghq.com/ja/integrations/fluentbit/


タスク定義のlogConfigurationのoptionは最終的にfluentbitの設定ファイルに反映されるっぽい。 この違いが分からずモヤモヤしてたが、やっとすっきりした✨

であるならば最初から設定ファイルに全部書いておいた方が疎結合なので良さそうではある

logConfiguration オブジェクトのオプションとして指定されたキーと値のペアは、Fluentd または Fluent Bit 出力設定の生成に使用されます。Fluent Bit 出力定義のコード例は次のとおりです。

from https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/firelens-taskdef.html

jinugasachio commented 2 years ago

が結論な気がしてきた

jinugasachio commented 2 years ago

S3にログを集約するときのprefix規則性が参考になる

jinugasachio commented 2 years ago

よい