LoginSignup
26
11

More than 3 years have passed since last update.

firelensを使用した、ログ分割と監視処理

Last updated at Posted at 2019-10-23

■1〜3回の内容を再設計した記事を書きました。
FireLens/fluentbit構成の見直しと改修

はじめに

ここ最近、FireLensの機能選定を行っており
fluentbitのカスタムイメージを作成し、FireLensに接続するまでの機能調査を行いました。
1回目の記事です。

2回目 ローカルで、datadog/S3へデータを転送できるdockerイメージを作成する

3回目 Firelensで、datadog/S3へデータを転送できるdockerイメージを作成する

FireLens実装サンプル

概要

VPC内で稼働しているwebアプリケーションのEC2インスタンスを、fargate化したいという話がありました。
改修に伴い、fargateコンテナをステートレスにする為、ログの管理方法が話題に上がりました。

また、監視業務を内製化したいという要望もあった為、ログの検知システムも検討しました。

構成図

  • A:アクセスログ、B:エラーログ、C:アプリケーションログの三種類をS3に保存します。
  • B,Cのみログ監視を行い、特定の要件を満たした場合、slackにアラートを発報します。
  • 突然のコンテナの破棄に対して、ログが失われないように設計します(ステートレス)

開発構成図.png

検討した内容

Firelens,FluentBit,datadogを組み合わせて検討する事になりました。

FireLens

FireLensは、ECSのコンテナの標準出力を、fluentd/fluentbitにお手軽に転送できる機能です。

  • 簡単な転送なら、JSONの設定だけで、自動でfluentdのコンテナを起動し、転送してくれます。
  • 複雑な設定も、専用の設定ファイルを作成すれば可能です。
  • 標準の追加プラグインを使いたい場合は、カスタムしたfluentd/fluentbitのコンテナを作成すると、可能です。

Fluent Bit

Firelensの記事は、Amazon Kinesis Data Firehoseや、Amazon CloudWatch Logsとの
連携記事が多く見られますが、
bigqueryやazure等、組み込みoutput pluginへの出力も可能です。

Amazon / aws-for-fluent-bit (fluentbit v1.3.2)
https://hub.docker.com/r/amazon/aws-for-fluent-bit/tags
fluentbit output plugin
https://docs.fluentbit.io/manual/output
v1.2.0からサポートされている、datadogを使用する事にしました。

なお、fluentdでも同様の機能は実装可能ですが
コンテナ費用の事を考え、軽量なfluentbitを選択しました。

datadog

https://app.datadoghq.com
クラウド監視ツールですが、機能の一つとしてログ監視機能(datadog logs)があります。
元々使用経験もあり、ログの整形機能(pipeline)や、リアルタイムアラート機能
S3へのアップロード機能もあり、要件を満たせそうでした。

S3へのアップロード

datadogにはS3へのアップロード機能があり、ログを全種まとめてdatadogで管理する案もありましたが
アクセスログのレコード数が非常に多く、datadogを経由すると膨大なコストが掛かる可能性があり
アクセスログだけはdatadogの監視を通さず、fluentbitからs3に直接アップロードすることにしました。

実現可能なプラグインは存在しましたが、標準のfluentbitコンテナには搭載されていないので
カスタムのfluentbitのコンテナを作成する必要が出てきました。
https://github.com/cosmo0920/fluent-bit-go-s3

実装手順

  • ローカルで、datadog/s3へデータを転送できるdockerイメージを作成する
  • 作成したdockerイメージを元に、firelensで動作するように調整する

あと2回ほど記事を書いてまとめようと思うので、時間が出来次第更新致します。

26
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
11