[アップデート] Amazon CloudWatch Logs Insightsのクエリでpatternがサポートされました
こんにちは。サービス開発室の武田です。
Amazon CloudWatch Logsはログを一元管理できるサービスです。単にログを表示するのはもちろん、フィルターパターンを使用したログの検索もできます。
さてCloudWatch Logsには、CloudWatch Logs Insights
という専用のクエリ言語を用いて検索や分析をする機能が提供されています。クエリ言語にはfields
やfilter
といった構文を仕様してログをクエリできます。
今回新しくpattern
という構文が追加されました。
patternとは
pattern
はログの傾向とパターンをMLベースのアルゴリズムを仕様して自動的に認識します。認識したパターンに沿って自動的にクラスタリングされ、数千行のログも数行に集約されることで傾向の把握が簡単になります。
結果には次の4種類のフィールドが含まれます。
- @pattern
- ログイベントで繰り返し登場するテキスト
- リクエストIDやタイムスタンプなど、パターン内で異なるフィールドは
<*>
で表されます - たとえば、
[INFO] Request time: 200 ms
などは[INFO] Request time: <*> ms
とまとめられます
- @ratio
- 特定のパターンに一致するログイベントの割合
- たとえば、選択したロググループおよび期間内のログイベントの半分がパターンに一致する場合、
0.50
となります
- @sampleCount
- 特定のパターンに一致するログイベントの数
- @severityLabel
- ログの重大度またはレベル
- ログに含まれる情報の種類を示します
やってみた
一番シンプルに試すのは次のクエリで、クエリのヘルプから簡単にコピー&ペーストできます。
filter @message like /ERROR/ | pattern @message
エラーの傾向がわかりやすいですね。ただワイルドカードシリーズは、単語数でクラスタリングされているだけですので、ぱっと見ではどう捉えればいいかわかりにくそうです。
- ERROR <*> <*>
- ERROR <*> <*> <*>
- ERROR <*> <*> <*> <*>
今後はpattern
を通したときでも、情報量が落ちにくいログ設計というのも必要になるでしょうか。
まとめ
ログの検索、分析というのはシステムを運営していく上で必要不可欠です。今回追加されたpattern
を使用すれば少ない手間で簡単に傾向を把握できて便利ですね。ぜひ使っていきましょう!