0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(小ネタ) [CloudWatch Logs Insights] LogStream単位で、FluentBitによる構造化ログの必要情報のみを一覧出力

Last updated at Posted at 2024-09-23

概要

  • FluentBitからCloudWatch Logsに送信される情報が非常に見づらいです
  • 上記を、Logs InsightsLogStream単位のフィルタリングを行うことにより解決します

前置き

記事にするほどのことではない気もしますが、社内で実際に困っている人がいたので記事化しておきます
誰かの参考になれば嬉しいです

想定ケース

本記事は、以下のようなケースを想定しています

  • ECS on Fargateにおいて、FluentBitを利用してログを送信
  • 送信先としてCloudWatch Logsを指定

ecs-cloudwatch.jpg

問題のシナリオ

以下のようなシナリオにおいて注意が必要です

  • ECS on Fargateのデプロイにおいてトラブルが発生
  • タスク起動後、例外が発生してタスクがキルされ続けている
  • 上記を調査するために、タスクに紐づくLogStream上のログをCloudWatch上で参照したい

何が問題なのか?

  • FluentBitのログはJSON形式で構造化されています
  • CloudWatch Logsでこれを閲覧する場合、デフォルトで各行のトグルが閉じられています
  • 本来閲覧したいログそのものの情報を参照するには、時系列順にトグルを開いてlogの項目を参照する必要があります
  • 全行を一度に展開することも可能ですが、時系列でログ出力を観察したい場合には、ログ以外の付帯情報がノイズになってしまいます
  • これは、ローカルのターミナル等でログを見る場合に比較して、一覧性に欠けます

image.png

解決方法

これを解決するために、CloudtWatch Logs Insightsを活用します
具体的には以下のクエリにより、LogStreamでフィルタリングし、参照したいlog項目のみを時系列順に出力します

fields @timestamp, log
| filter @logStream = "your_log_stream_id"
| sort @timestamp

こうすることで、時系列で本来見たいログ情報のみを一覧で見ることができ、ローカルに近い開発体験が得られ、調査が捗ります

image.png

注意

クエリ発行にはコストがかかるのでご注意ください

# 2024/09/23現在

分析 (Logs Insights のクエリ)	USD 0.005/スキャンされたデータの GB

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?