awslogsでCloudWatchのログ検索

CloudWatchのログ確認は管理画面からもできますが、GUIよりCUIで検索したいときがあります。awslogsを利用するとCUIでログ確認ができます。ここでは、awslogsの利用方法について確認します。

インストール

pip 経由でインストールできます。

$ python -V
Python 3.6.5
$ 
$ pip -V
pip 9.0.3 from /Users/xxxx/.pyenv/versions/3.6.5/lib/python3.6/site-packages (python 3.6)
$ pip install awslogs

ヘルプで使い方を確認

--helpオプション で使い方を確認できます。

$ awslogs --help
usage: awslogs [ get | groups | streams ]

positional arguments:
  {get,groups,streams}

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

get groups streams の引数を指定して実行できるようです。

さらに各引数を指定したときの使い方を確認するには、以下のようにします。

$ awslogs groups --help
usage: awslogs [ get | groups | streams ] groups [-h]
                                                 [--aws-access-key-id AWS_ACCESS_KEY_ID]
                                                 [--aws-secret-access-key AWS_SECRET_ACCESS_KEY]
                                                 [--aws-session-token AWS_SESSION_TOKEN]
                                                 [--profile AWS_PROFILE]
                                                 [--aws-region AWS_REGION]
                                                 [-p LOG_GROUP_PREFIX]

List groups

optional arguments:
  -h, --help            show this help message and exit
  --aws-access-key-id AWS_ACCESS_KEY_ID
                        aws access key id
  --aws-secret-access-key AWS_SECRET_ACCESS_KEY
                        aws secret access key
  --aws-session-token AWS_SESSION_TOKEN
                        aws session token
  --profile AWS_PROFILE
                        aws profile
  --aws-region AWS_REGION
                        aws region
  -p LOG_GROUP_PREFIX, --log-group-prefix LOG_GROUP_PREFIX
                        List only groups matching the prefix

ロググループ一覧表示
( awslogs groups )

CloudWatchのロググループ一覧を表示するには以下コマンドを実行します。
( AWS_PROFILE を指定してます。)

awslogs groups \
--profile AWS_PROFILE

ログストリーム一覧表示
( awslogs streams )

指定LOG_GROUP_NAME のログストリーム一覧を表示するには以下コマンドを実行します。
( AWS_PROFILE を指定してます。)

awslogs streams LOG_GROUP_NAME \
--profile AWS_PROFILE

ログ内容取得
( awslogs get )

期間指定

--startオプション を利用して、2時間前以降に発生したログを取得します。

awslogs get LOG_GROUP_NAME \
--start='2h ago' \
--profile AWS_PROFILE

フィルタリング
( フィルタパターンを利用 )

--filter-patternオプション を利用すると、フィルターパターンによる抽出ができます。

ERROR Error WARN のどれかを含むログを抽出してみます。

awslogs get LOG_GROUP_NAME \
--start='2h ago' \
--filter-pattern='?ERROR ?Error ?WARN' \
--profile AWS_PROFILE

フィルタリング
( grep利用 )

使い慣れたgrepで抽出してみます。

ERROR Error WARN のどれかを含むログを抽出してみます。

awslogs get LOG_GROUP_NAME \
--start='2h ago' \
--profile AWS_PROFILE | grep -e ERROR -e Error -e WARN

グループ名とストリーム名を非表示

ロググループ名とログストリーム名が不要であれば、表示しないようにすることもできます。

awslogs get LOG_GROUP_NAME \
--start='2h ago' \
--filter-pattern='?ERROR ?Error ?WARN' \
--no-group \
--no-stream \
--profile AWS_PROFILE 

参考