【小ネタ】CloudWatch Alarmからアラートになったログストリームを見つける

記事タイトルとURLをコピーする

概要

この記事では 「CloudWatch Alarmのアラーム状態画面から、該当ログストリームを効率的に見つける方法」について紹介します。

【本記事でわかること】

  • CloudWatch Alarm画面から該当ログストリームの特定方法
  • CloudWatch AlarmのAWS CLIでの作成方法

はじめに

こんにちは!カスタマーサクセス部 CS1課の圡井です!

AWS上で運用しているアプリケーションのエラーをいち早く検出するために、 CloudWatch Logsにて特定のログが検出された際にアラートを発出するように設定することがあると思います。 またエラー通知を受け取った後は、その前後のログを確認して、エラーの原因を調査しなければなりません。

実際に確認しようとしてみると、CloudWatch Alarmがアラーム状態になったときにどのログストリームでそのエラーが検出されたのかを見つけるのが大変でした。 特にLambdaなどは実行されるたびにログストリームが新規作成されるため、どのログストリームでエラーが発生したのかを特定するのが困難でした。

そこで、CloudWatch Alarmのアラーム状態画面から、該当ログストリームを見つける方法を紹介します。

結論

小ネタなので、先に結論から記載します!

CloudWatchコンソールから「すべてのアラーム」を選択し、アラーム一覧を開きます。

アラーム一覧画面

ここで調べたいアラームを選択するとアラーム詳細画面が開きます。

アラーム詳細画面

アラーム詳細画面の右上より「表示」 → 「関連ログ」を選択すると、アラームが検出したメッセージ、そのメッセージが格納されたログストリーム名が表示されます。

検出した文字列とストリーム名

ログストリーム名を選択すると、検出した時間以降の「ロググループ内のログすべて」が同じ形式で表示されるので、再度ログストリーム名を選択することで、該当ログストリームを確認できます。

検出したメッセージとその後のログ

最終的にたどり着くログストリーム

付録

リソースの例

以下のような監視を例としています。

作成するリソース:

  • CloudWatch Logs ロググループ
  • CloudWatch Logs ログストリーム
  • CloudWatch Logs メトリクスフィルター
  • CloudWatch Alarm

CLIコマンドでリソース作成

AWS CLIを利用して以下のリソースを作成します。

# ロググループの作成
aws logs create-log-group --log-group-name test-log-group

# ログストリームの作成
aws logs create-log-stream --log-group-name test-log-group --log-stream-name test-log-stream

# メトリクスフィルターの作成
aws logs put-metric-filter \
  --log-group-name test-log-group \
  --filter-name test-filter \
  --filter-pattern "ERROR" \
  --metric-transformations \
  metricName=ErrorCount,metricNamespace=CustomMetrics,metricValue=1

# CloudWatch Alarmの作成
aws cloudwatch put-metric-alarm \
  --alarm-name test-error-alarm \
  --alarm-description "Test error alarm" \
  --metric-name ErrorCount \
  --namespace CustomMetrics \
  --statistic Sum \
  --period 300 \
  --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1

アラートを発生させる

テスト用のエラーログを発生させてアラームを作動させます。

# エラーログの投入
aws logs put-log-events \
  --log-group-name test-log-group \
  --log-stream-name test-log-stream \
  --log-events timestamp=$(date +%s)000,message="ERROR: Test error message"

まとめ

CloudWatch Alarmのアラーム状態画面から該当ログストリームを見つける方法を紹介しました。

この方法により、アラーム発生時の原因調査が効率的に行えるようになります。

エラー対応は時間との勝負なので、ログ探しに時間がかかっている人の一助になることを願います!

圡井一磨(執筆記事の一覧)

23年度新卒入社しました。最近は自炊にはまっています。アパートのキッチンが狭くて困ってます。