ハンズオン(簡易版): EC2基礎 (EIP)

2.2. CloudWatch Logsログイベントの取得 (ログフィルター: httpd/access_log)

手順の目的 [why]

CloudWatch Logsロググループ"httpd/access_log"からログフィルターを利用してログイベントを取得します。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

0. リージョンの指定

リージョンを指定します。

環境変数の設定:

export AWS_DEFAULT_REGION='ap-northeast-1'

1. CloudWatch Logsロググループ名

CloudWatch Logsロググループ名を指定します。

変数の設定:

LOGS_GROUP_NAME='httpd/access_log'

2. ログイベント数

取得するログイベント数を指定します。

変数の設定:

LOGS_EVENT_MAX_ITEMS='3'

設定値の確認

各変数に正しい設定値が格納されていることを確認しながら保存します。

変数の確認:

cat << END

  # 0. AWS_DEFAULT_REGION:"ap-northeast-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. LOGS_GROUP_NAME:"httpd/access_log"
       LOGS_GROUP_NAME="${LOGS_GROUP_NAME}"
  # 2. LOGS_EVENT_MAX_ITEMS:"3"
       LOGS_EVENT_MAX_ITEMS="${LOGS_EVENT_MAX_ITEMS}"

END

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

ログフィルターを利用してCloudWatch Logsログイベントを取得します。

変数の確認:

cat << END

  # LOGS_GROUP_NAME:"httpd/access_log"
    LOGS_GROUP_NAME="${LOGS_GROUP_NAME}"
  # LOGS_EVENT_MAX_ITEMS:"3"
    LOGS_EVENT_MAX_ITEMS="${LOGS_EVENT_MAX_ITEMS}"

END

コマンド:

aws logs filter-log-events \
  --log-group-name ${LOGS_GROUP_NAME} \
  --max-items ${LOGS_EVENT_MAX_ITEMS}

結果(例):

{
    "events": [
        {
            "logStreamName": "i-xxxxxxxxxxxxxxxxx",
            "timestamp": 16xxxxxxxxxxx,
            "message": "xxx.xxx.xxx.xxx - - [22/Aug/2021:23:34:44 +0000] \"GET / HTTP/1.1\" 200 255 \"-\" \"curl/7.76.1\"",
            "ingestionTime": 16xxxxxxxxxxx,
            "eventId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        },
        {
            "logStreamName": "i-xxxxxxxxxxxxxxxxx",
            "timestamp": 16xxxxxxxxxxx,
            "message": "xxx.xxx.xxx.xxx - - [22/Aug/2021:23:35:14 +0000] \"HEAD / HTTP/1.1\" 200 - \"-\" \"curl/7.76.1\"",
            "ingestionTime": 16xxxxxxxxxxx,
            "eventId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
    ],
    "searchedLogStreams": [
        {
            "logStreamName": "i-xxxxxxxxxxxxxxxxx",
            "searchedCompletely": true
        }
    ]
}

完了確認

「CloudWatch Logsロググループ"httpd/access_log"にログイベントが存在する。」ことを確認します。

注釈

主処理で取得できていればOKです。

手順の完了