- CloudWatch Logs Insights とは
- CloudWatch Logs Insights で「できること」
- CloudWatch Logs Insights で「できないこと」
- 向いている用途・向いていない用途
- まとめ
こんにちは。CS部の山科です。
AWS のログ調査で CloudWatch Logs Insights を使う機会があると思います。
SQL に似たクエリが書けることから、「これで何でも分析できそう」と感じる一方で、 実際に使ってみると「これはできないんだ」と思う場面もありました。
本記事では、CloudWatch Logs Insights について 「できること」と「できないこと」を整理し、 どのような用途に向いているのかをまとめます。
公式ドキュメントの補足として、 これから使い始める方の参考になれば幸いです。
CloudWatch Logs Insights とは
CloudWatch Logs Insights は、CloudWatch Logs に保存されているログを対象に、 クエリを使って検索・集計できるサービスです。
ロググループを指定して必要なときにクエリを実行するため、 常時監視というよりは「調査用途」に向いている仕組みになっています。
調査用途としては非常に手軽で、 AWS 環境ではまず最初に触ることが多いログ分析手段の一つです。
CloudWatch Logs Insights で「できること」
ログの絞り込み
特定の文字列を含むログを抽出できます。 エラーログの確認など、調査時によく使います。
filter @message like /ERROR/
件数の集計
ログの件数をカウントしたり、 ログストリームごとに集計することができます。
stats count(*) by @logStream
時系列での傾向把握
ログの発生数を時間軸で確認できるため、 障害発生前後の変化を把握するのに役立ちます。
CloudWatch Logs Insights で「できないこと」
CloudWatch Logs Insights は便利ですが、 すべての用途に対応できるわけではありません。
リアルタイム監視には向かない
クエリは手動で実行する必要があり、 リアルタイムにログを監視する用途には向いていません。
ログを使ったアラートを実現したい場合でも、 CloudWatch Logs Insights を直接使うのではなく、 メトリクスフィルターなどでログをメトリクスに変換し、 CloudWatch Alarm を使う構成が一般的です。
そのため、Logs Insights は調査用途のツールであり、 アラートのトリガーとして使うことは想定されていません。
大量・長期間データの高速分析には不向き
長期間にわたる大量のログを分析しようとすると、 クエリの実行に時間がかかる場合があります。
また、CloudWatch Logs Insights はスキャンしたログ量に応じて コストが発生するため、データ量が増えるほどコストも増加します。
定常的な分析やレポート用途には向いていないと感じました。
複雑なデータ結合はできない
複数のロググループを JOIN するような使い方や、 外部データとの突合はできません。
同一ロググループ内で共通キーをもとに 関連ログを絞り込むことはできますが、 データ結合や突合ができるわけではありません。
分析結果を継続的に保存する仕組みはない
CloudWatch Logs Insights では、 クエリ結果を CSV として手動でエクスポートすることはできます。
ただし、クエリ結果を定期的に保存したり、 分析結果を自動的に蓄積・永続化する仕組みはありません。
向いている用途・向いていない用途
向いている用途
- 障害発生時の原因調査
- 一時的なログ確認
- 「今、何が起きているか」を把握したいとき
向いていない用途
- 常時監視
- 定期レポート作成
- ログを使った高度な分析基盤
まとめ
CloudWatch Logs Insights は、 ログを手軽に検索・集計できる便利なサービスですが、 すべての分析用途をカバーするものではありません。
「ログを溜めて分析する基盤」ではなく、 「必要なときにログを調べるための道具」 と捉えると、使い所が分かりやすいと感じました。
できること・できないことを理解した上で使うことで、 ログ調査をより効率的に進められると思います。
用途を誤らずに使えば、CloudWatch Logs Insights は心強い調査ツールになります。
本記事が、CloudWatch Logs Insights の用途を考える際の 参考になれば幸いです。