Skip to content

ログ分析

AI-Starter は、アプリケーションの動作状況や利用状況を把握するために、ログを Amazon CloudWatch Logs に出力します。このログを分析することで、問題解決やサービス改善に役立てられます。

本稿では、CloudWatch Logs Insights を用いたログ分析方法について解説します。

アプリケーションログの分析

CloudWatch Logs Insights では、強力なクエリ機能を用いてログデータを柔軟に分析できます。

分析手順

  1. AWS マネジメントコンソールにログインします。
  2. 東京リージョンの CloudWatch サービス画面で、サイドバーから「ログのインサイト」を開きます。
  3. ロググループに AI-Starter のロググループ「/aws/ecs/<prefix>-app-service」を選択します。
  4. 分析したい期間を選択します。
  5. 表示されたクエリ入力欄に、分析したい内容に応じたクエリを入力し実行します。

クエリ例

会話数

text
fields @timestamp, @message, user
| filter !isBlank(user)
| filter @message like /Saved/
| stats count(*) as total_count

このクエリは、会話数を集計し、合計値を表示します。

利用者別チャット回数

text
fields @timestamp, @message, user
| filter !isBlank(user)
| filter @message like /Saved/
| stats count(*) as chat_count by user
| sort chat_count desc

このクエリは、ユーザーごとにチャット回数を集計し、チャット回数が多い順に表示します。

利用アシスタント内訳

text
fields @timestamp, @message, user, selectedAssistant.id, selectedAssistant.model
| filter !isBlank(user)
| filter @message like /Saved/
| stats count(*) as total by selectedAssistant.id, selectedAssistant.model
| sort total desc

このクエリは、アシスタントごとの利用回数を集計し、利用回数が多い順に表示します。

フィードバック内容

text
fields @timestamp, userId, assistantId, assistantDisplayName, eventType, feedbackType, comment, @message
| filter eventType like 'user_feedback'

このクエリは、フィードバックを集計し、評価やコメント内容を表示します。

レベル別ログ

ログレコードには、出力レベルを示す数値が level フィールドに記録されます。

level 数値レベル用途
10trace最詳細トレース
20debug開発時のデバッグ情報
30info通常の動作ログ(チャット保存、フィードバック等)
40warn警告(処理は継続)
50errorエラー(処理は失敗したが回復可能)
60fatalプロセス停止級の致命的エラー

補足

本番環境の既定では、trace と debug のログは出力されません。

debug ログのみ
text
fields @timestamp, @message, @logStream, @log
| filter level = 20
| sort @timestamp desc
| limit 100

このクエリは、debug レベル(level = 20)のログだけを新しい順に 100 件表示します。詳細なデバッグ情報を確認したいときに利用します。

info 以上
text
fields @timestamp, @message, @logStream, @log
| filter level >= 30
| sort @timestamp desc
| limit 100

このクエリは、info レベル以上(level >= 30)のログを新しい順に 100 件表示します。アプリケーションの動作全体を俯瞰したいときに利用します。

warn 以上
text
fields @timestamp, @message, @logStream, @log
| filter level >= 40
| sort @timestamp desc
| limit 100

このクエリは、warn レベル以上(level >= 40)のログを新しい順に 100 件表示します。注意が必要な事象だけに絞って確認したいときに利用します。

error 以上
text
fields @timestamp, @message, @logStream, @log
| filter level >= 50
| sort @timestamp desc
| limit 100

このクエリは、error および fatal レベル(level >= 50)のログを新しい順に 100 件表示します。エラー発生時の状況把握に役立ちます。

クエリの保存と再利用

CloudWatch Logs Insights では、頻繁に利用するクエリを保存して再利用できます。

クエリの保存方法

  1. CloudWatch Logs Insights のクエリ画面で、保存したいクエリを作成します。
  2. 画面上部の「保存」をクリックします。
  3. 「新しいクエリを保存する」ダイアログボックスで、クエリ名を入力し「保存」をクリックします。

補足

  • クエリ名には、クエリ内容を分かりやすく表現した名前を設定しましょう。
  • この操作では、ロググループとクエリテキストが保存されます。期間は保存されない点にご注意ください。

保存したクエリの利用方法

  1. CloudWatch Logs Insights のクエリ画面を開きます。
  2. 画面右側の「クエリ」アイコンをクリックします。
  3. 「保存されたクエリ」から利用したいクエリを選択します。
  4. 選択したクエリのロググループとクエリテキストが画面に設定されます。
  5. 必要に応じてクエリの期間を調整し、「クエリの実行」をクリックします。

ポイント

  • 保存したクエリは、いつでも編集・削除できます。
  • チームで共通して利用するクエリを保存しておくと、分析作業の効率化につながります。