ユーザ用ツール

サイト用ツール


aws:cloudwatch:logs

Amazon CloudWatch Logs設定例

現在の設定の確認方法

フィルターの一覧の確認

フィルターの一覧を確認するためには、「ログ」「ロググループ」を選択します。

アラームの一覧の確認

アラームの一覧を確認するためには、「アラーム」「すべてのアラーム」を選択します。

※アラームの作成は、ロググループで、アラームを飛ばしたいものを選択した状態で、「アラームの作成」を選択する方法がわかりやすいです。


CloudWatch Logsの監視・通知方法

メトリクスフィルターを作成し、アラーム設定をする

  • 特定の文字列が含まれているログを集計するもの
  • 通知の内容にログ本文を入れることはできません。
  • メトリクスフィルターは1つのロググループに対していくつでも設定することができます

サブスクリプションフィルター

  • フィルタで検知したログの内容をLambdaやKinesisを始めとしたサービスに送る
  • Lambdaを作れば、通知内容にサブスクリプションフィルターで検出したログの内容を含めることができる
  • サブスクリプションフィルターは1つのロググループに2つまでしか設定することができません。


フィルターの注意事項

  • フィルタには正規表現は使用できず、単純な文字列の指定しか行なうことができません。
  • ERRORやerrorは区別されます。


メトリックスフィルターの書き方


CloudWatch Logsのフィルターの書き方

  • フィルタには正規表現は使用できず、単純な文字列の指定しか行なうことができません。
  • ERRORやerrorは区別されます。

フィルターの評価式

=   EQUAL
!=   NOT EQUAL
&&   AND
||   OR

<    SMALL THAN
>    GRATER THAN
<=    SMALL OR EQUAL
>=    GRATER OR EQUAL

フィルター例

filter by Failure Console Logins
{ $.eventSource = "signin.amazonaws.com" && $.responseElements.ConsoleLogin = "Failure" }
exclude know IP address
{ ($.sourceIPAddress != "52.123.123.5") && ($.sourceIPAddress != "33.123.123.*") && ($.sourceIPAddress != "*.amazonaws.com") }
AWS login without using MFA
{ $.eventSource="signin.amazonaws.com




AWS管理コンソールのルートアカウント利用を監視する設定

AWS管理コンソールで、緊急時以外はルートアカウントを利用しないようにしていますが、
ルートアカウントが使われた場合にアラートを飛ばす設定をしましょう。

事前準備

  • CloudTrail側で、証跡を作成し、S3バケットに保存するようにする。
  • 証跡をCloudWatch Logsと連携する設定をする。

設定方法は、AWS CloudTrailで、イベントを保管

メトリックスフィルターの作成

CloudWatchの「ロググループ」で、事前に設定した「cloudtrail-log-group」をチェックして、「メトリックスフィルターの作成」をクリックします。

フィルターパターン
{ $.userIdentity.type = "Root" && $.eventName = "ConsoleLogin" }


フィルター名 useridentity-type-Root-eventName-ConsoleLogin
メトリックス名前空間 LogMetrics
メトリックス名 RootConsoleLogin
メトリックス値
デフォルト値
(オプション)
0
Unit
(オプション)


CloudWatch アラームの作成

  • 「ロググループ」でアラートを飛ばしたいメトリックスをクリックします。
  • メトリックスの「メトリックスフィルター」タブを選択します。
  • アラートを飛ばしたいメトリックスフィルターの右上のチェックを入れて、「アラームの作成」をクリックします
  • メトリックスの選択で、先ほど作成しメトリックスを指定します。
    LogMetrics / RootConsoleLogin
メトリックス名 RootConsoleLogin_ServiceA
間隔 1分
統計 合計
条件 静的 1以上
SNSトピック設定

既存のものか新規作成しましょう。

トッピックス名:CloudWatch_Alerms_RootConsoleLogin_mymailaddress

SNSは、Amazon SNS (Simple Notification Service) を参照


アラーム名 RootConsoleLogin_ServiceA
  • メールの件名に表示されるので、どのAWSアカウントかがわかるようにしましょう。
  • アラーム名は後から変更できないです。




AWS管理コンソールに知らないIPからログインしたら検知する設定

AWS管理コンソールのIP制限は、ログインできないようにはできなく、
ログインしても機能を見せないだけしかできないため、
想定外のIPからログインされてしまったら、検知するための設定をしましょう。

事前準備

CloudTrail側で、CloudWatch Logsと連携する設定をしておきます。


設定は、AWS CloudTrailで、イベントを保管

メトリックスフィルターの作成

CloudWatchの「ロググループ」をチェックして、「メトリックスフィルターの作成」をクリックします。

フィルター名 ConsoleLogin-Alert_ServiceA
フィルターパターン 下記参照
メトリックス名前空間 LogMetrics
メトリックス名 ConsoleLoginAlert
フィルターパターン
{ $.responseElements.ConsoleLogin = "Success" && $.sourceIPAddress !="11.11.11.*" }

IPアドレスは/24でレンジ指定したい場合は*でワイルドカード



複数IPアドレスの場合:

{ $.responseElements.ConsoleLogin = "Success" && ($.sourceIPAddress !="1.1.1.*" && $.sourceIPAddress !="2.2.2.*") }

書き方注意:
CloudWatch Logsのフィルターで複雑な検索条件を指定して欲しいイベントだけ取得する - Qiita

スペース区切りフィルターにて括弧に対する除外が出来ない。(構文エラーとなる)
エラー例:[A && !(B || C)]
※ただし、以下を用いて対応可能です。
改善例:[A && (!B && !C)]

ORで複数除外条件を記載したい場合
!(P || Q) = !P && !Q
ANDで複数除外条件を記載したい場合
!(P && Q) = !P || !Q
ド・モルガンの法則より



AD連携している場合:
sourceIPaddressが、「ds.amazonaws.com」になる。。

{ $.responseElements.ConsoleLogin = "Success" && ($.sourceIPAddress !="1.1.1.*" && $.sourceIPAddress !="2.2.2.*" && $.sourceIPAddress !="ds.amazonaws.com") }


CloudWatch アラームの作成

  • 「アラームの作成」をクリック
  • メトリックスの選択で、先ほど作成しメトリックスを指定します。
    LogMetrics / RootConsoleLogin
メトリックス名 ConsoleLoginAlert
間隔 1分
統計 合計
メトリックス値 静的 1以上
SNSトピック設定

既存のものか新規作成しましょう。

SNSは、Amazon SNS (Simple Notification Service) を参照

アラーム名
アラーム名 ConsoleLoginAlert_ServiceA
  • メールの件名に表示されるので、どのAWSアカウントかがわかるようにしましょう。
  • アラーム名は後から変更できないです。
aws/cloudwatch/logs.txt · 最終更新: 2022/07/05 00:13 by kurihara

ページ用ツール