ブログ

Amazon CloudWatch Logs Insights を使ってみた

こんにちは、ソフトウェアエンジニアの大北です。 前回のブログの最後では、「次回はリアクティブにRedisを操作するぞ〜」と宣言しましたが、需要があるのか疑問に感じ、勝手にテーマを変えました。
ということで、AWSの新機能であるCloudWatch Logs Insightsを使ってみた感想などを書いていこうと思います。Insightsは、今年の11月28日にリリースされたばかりの機能です。Insightsを使うと、ログをクエリし、結果を折れ線グラフやスタックエリアチャートで可視化したり、それをCloudWatch ダッシュボードに追加することができます。
例えば、CloudWatchダッシュボードを利用すると、以下のようなウィジェットを追加し、プロダクトのエラーの状況をリアルタイムで見ることができます。
プロダクトのエラー状況を表示するウィジェット

しかしながら、ダッシュボード上では、エラーの数を見られるだけで、実際どんなエラーが起きているのかを知ることはできず、ログから探してくる必要がありました。
今回リリースされたInsightsを使うと簡単にダッシュボード上からどんなエラーが出ているのかを見ることができます。
これは、何もErrorやWarnが出ていない時の様子です。(下の大きいウィジェットがInsightsを使って作ったものです。)
エラーが無い時のダッシュボード
何も表示されません。(=ErrorやWarnレベルのログがこの時間帯には発生しなかった。)
次に、Warnが出るようなリクエストを投げてみました。
Warnログがあった時のダッシュボード
Warn Logのカウントが1になり、そのログが表示されたのがわかります。
以上のように、ダッシュボードでエラーの傾向とログを一度に見られるのは、なかなか良いです。

では、簡単に、Insightsの使い方を説明します。
まず、CloudWatchコンソールを開きます。Logsの下にInsightsがあります。(アラームが沢山鳴っていますが気にしないでください。安全です。)
Insights
Insightsの画面では、初めに、どこのログを見たいのか選びます。
Insights編集画面
クエリの入力画面には、デフォルト値が入っているので、試しに、/aws-glue/crawlersのログに対してデフォルトのクエリを走らせてみます。
すると、以下のようにログイベントが発生した数をグラフに表したものや、ログの一覧が表示されました。
Insightsで見るログ
私が走らせたクエリは、

fields @message
| filter @message not like /Exception/

というものだったので、ここには、Exception以外のログが表示されていることになります。
もちろん、自分でこのクエリを書き換えることもできますし、Sample queriesボタンを押すとサンプルクエリが出てくるので、それを実行することもできます。
納得のいくクエリが作れたら、Add to dashboardボタンを押してみましょう。
Add to dashboard ボタン
あとは、このInsightsを追加したいダッシュボードを設定するだけです。

ダッシュボード選択画面
簡単にダッシュボードでログを見られるようになりました。(もし、Previewでは表示されていたのに、ダッシュボードでは表示されない!ということがあったら、ダッシュボードの右上で設定している時間を疑ってみてください。たまたま設定されている時間にログがないのかもしれません。)ダッシュボードにInsightsを追加した様子
Insightsに関するドキュメントは以下で見られます。
Analyze Log Data with CloudWatch Logs Insights
CloudWatch Logs Insights Query Syntax