ログ分析
AI-Starter は、アプリケーションの動作状況や利用状況を把握するために、ログを Amazon CloudWatch Logs に出力します。このログを分析することで、問題解決やサービス改善に役立てられます。
本稿では、CloudWatch Logs Insights を用いたログ分析方法について解説します。
アプリケーションログの分析
CloudWatch Logs Insights では、強力なクエリ機能を用いてログデータを柔軟に分析できます。
分析手順
- AWS マネジメントコンソールにログインします。
- 東京リージョンの CloudWatch サービス画面で、サイドバーから「ログのインサイト」を開きます。
- ロググループに AI-Starter のロググループ「
/aws/ecs/<prefix>-app-service」を選択します。 - 分析したい期間を選択します。
- 表示されたクエリ入力欄に、分析したい内容に応じたクエリを入力し実行します。
クエリ例
会話数
fields @timestamp, @message, user
| filter !isBlank(user)
| filter @message like /Saved/
| stats count(*) as total_countこのクエリは、会話数を集計し、合計値を表示します。
利用者別チャット回数
fields @timestamp, @message, user
| filter !isBlank(user)
| filter @message like /Saved/
| stats count(*) as chat_count by user
| sort chat_count descこのクエリは、ユーザーごとにチャット回数を集計し、チャット回数が多い順に表示します。
利用アシスタント内訳
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このクエリは、アシスタントごとの利用回数を集計し、利用回数が多い順に表示します。
フィードバック内容
fields @timestamp, userId, assistantId, assistantDisplayName, eventType, feedbackType, comment, @message
| filter eventType like 'user_feedback'このクエリは、フィードバックを集計し、評価やコメント内容を表示します。
レベル別ログ
ログレコードには、出力レベルを示す数値が level フィールドに記録されます。
| level 数値 | レベル | 用途 |
|---|---|---|
| 10 | trace | 最詳細トレース |
| 20 | debug | 開発時のデバッグ情報 |
| 30 | info | 通常の動作ログ(チャット保存、フィードバック等) |
| 40 | warn | 警告(処理は継続) |
| 50 | error | エラー(処理は失敗したが回復可能) |
| 60 | fatal | プロセス停止級の致命的エラー |
補足
本番環境の既定では、trace と debug のログは出力されません。
debug ログのみ
fields @timestamp, @message, @logStream, @log
| filter level = 20
| sort @timestamp desc
| limit 100このクエリは、debug レベル(level = 20)のログだけを新しい順に 100 件表示します。詳細なデバッグ情報を確認したいときに利用します。
info 以上
fields @timestamp, @message, @logStream, @log
| filter level >= 30
| sort @timestamp desc
| limit 100このクエリは、info レベル以上(level >= 30)のログを新しい順に 100 件表示します。アプリケーションの動作全体を俯瞰したいときに利用します。
warn 以上
fields @timestamp, @message, @logStream, @log
| filter level >= 40
| sort @timestamp desc
| limit 100このクエリは、warn レベル以上(level >= 40)のログを新しい順に 100 件表示します。注意が必要な事象だけに絞って確認したいときに利用します。
error 以上
fields @timestamp, @message, @logStream, @log
| filter level >= 50
| sort @timestamp desc
| limit 100このクエリは、error および fatal レベル(level >= 50)のログを新しい順に 100 件表示します。エラー発生時の状況把握に役立ちます。
クエリの保存と再利用
CloudWatch Logs Insights では、頻繁に利用するクエリを保存して再利用できます。
クエリの保存方法
- CloudWatch Logs Insights のクエリ画面で、保存したいクエリを作成します。
- 画面上部の「保存」をクリックします。
- 「新しいクエリを保存する」ダイアログボックスで、クエリ名を入力し「保存」をクリックします。
補足
- クエリ名には、クエリ内容を分かりやすく表現した名前を設定しましょう。
- この操作では、ロググループとクエリテキストが保存されます。期間は保存されない点にご注意ください。
保存したクエリの利用方法
- CloudWatch Logs Insights のクエリ画面を開きます。
- 画面右側の「クエリ」アイコンをクリックします。
- 「保存されたクエリ」から利用したいクエリを選択します。
- 選択したクエリのロググループとクエリテキストが画面に設定されます。
- 必要に応じてクエリの期間を調整し、「クエリの実行」をクリックします。
ポイント
- 保存したクエリは、いつでも編集・削除できます。
- チームで共通して利用するクエリを保存しておくと、分析作業の効率化につながります。