[アップデート] Amazon CloudWatch Logs Insightsのクエリでpatternがサポートされました

こんにちは。サービス開発室の武田です。Amazon CloudWatch Logs Insightsで使用できるクエリにpatternが追加されました。
2023.07.24

こんにちは。サービス開発室の武田です。

Amazon CloudWatch Logsはログを一元管理できるサービスです。単にログを表示するのはもちろん、フィルターパターンを使用したログの検索もできます。

さてCloudWatch Logsには、CloudWatch Logs Insightsという専用のクエリ言語を用いて検索や分析をする機能が提供されています。クエリ言語にはfieldsfilterといった構文を仕様してログをクエリできます。

今回新しく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を使用すれば少ない手間で簡単に傾向を把握できて便利ですね。ぜひ使っていきましょう!