Open jinugasachio opened 3 years ago
昔はfargateだと柔軟に転送先を選べなかったっぽいけど今はFireLensで実現できるらしい
fluentdからelasticsarchとs3双方にログを転送し直近のログは一定期間のみ前者で扱えるようにするとかするとコストは抑えられる。当たり前だが長期保存はs3のようなオブジェクトストレージが向いている。
firehoseを挟む場合と挟まない場合とでのメリデメがいまいちわかっていない
ログドライバーはawslogsよりもFireLensの方が各所でお勧めされている FireLensとFluent Bitの併用でcloud watch logとs3に同時に転送・出力できたり、片方にのみ転送・出力できたりする
FireLensではFluentdとFluent Bit 両方選択できるがAWS的にはリソース効率が良いFluent Bitを推奨している Fluentdはruby製、Fluent BitはC製
papertrailの代わりとなる可視化ツールは何にしたらいいのか、
やはりdatadog? newrelicはメトリクス収集はできそうだけどログは一元的に見れるのか?
herokuから移行したケースだとやっぱpapertrail使いたいって感じたらしい
ログ可視化に良さそう
発表内容でも触れましたが、一般的にSIEM(Security Information and Event Management)の機能としては以下の3つです。
- ログを統合的に管理する
- 複数のログを相関的に分析する
- インシデントを発見し管理する
elastic apmも入れればkibanaで完全に一元管理できそう https://www.elastic.co/jp/blog/monitoring-applications-with-elasticsearch-and-elastic-apm
container -> kinesis data firehose -> s3
container -> kinesis data firehose -> s3 -> redshift spectrum or athena
container -> kinesis data firehose -> kinesis data streams -> kinesis data analytics
container -> cloud watch
container -> kinesis data firehose -> open search + kibana
メドピアはAWS config + Athena + QuickSightっぽい。 https://tech.medpeer.co.jp/entry/2021/10/01/090000
コンテナ定義に書くか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
が結論な気がしてきた
S3にログを集約するときのprefix規則性が参考になる
※ ごちゃごちゃしているのでこのチケットの全てのコメントの要点をまとめたものをここに書く
ログの分類
ログの目的
収集対象
BIツール
結論
考慮した選択肢
ログの分析・可視化
WIP 結論
考慮した選択肢
ログ構成図
FAQ
FireLens経由でS3バケットへログ保存するのにKinesis Data Firehoseは必要なの?
FireLensのFluent Bitコンテナが予期せぬ停止をしてしまうと、送信頻度によってはログを消失する可能性があります。 Kinesis Data Firehoseを間に挟むことでログのバッファリングが可能なので、高頻度の送信によるニアリアルタイムでログを保管することができます。