🔍
CloudWatchLogsをAWS-CLIで参照する
お疲れ様です。
中村です。
あるLambda関数でエラーが出ていないかどうか CloudWatchLogsで確認が必要なのですが、吐き出されるログの量が多すぎて、ログストリーム(ログが格納されている箱の単位)の数も1日に10件前後あります。
コンソール画面でストリームを1件づつ開いて中身を確認するのは時間がかかるし、
Search All
ボタンで全ストリームを検索できますが、途方もなく時間がかかります。。。。(-。-)y-゜゜゜
検索が終了しても、古いモノから先に出てきちゃう。。。メンドクサ.....
グダグダと愚痴を書いてしまいましたが、m(___)m
こんな時はAWS CLIコマンドを使って検索した方が良いかもしれませんね
実行環境
AWS CloudShell
実行コマンド
こんな感じのコマンドを書きました。
Lambdaでリソースのタグ情報を取ろうとしてエラーが出ているようなので、
--filter-pattern "Get Tag Value Error"
を指定してその情報を取っています。
aws logs filter-log-events \
--log-group-name /aws/lambda/lambda-name \
--start-time `TZ=Asia/Tokyo date --date='2022-08-12 08:00:00.000' +%s%3N` \
--end-time `TZ=Asia/Tokyo date --date='2022-08-26 08:00:00.000' +%s%3N` \
--filter-pattern "Get Tag Value Error"
実行結果
結果はこんな感じ。(端折ったりマスキングしてますが) timestamp
がエポック秒になってるので、そこの変換が少し手間ですが
{
"events": [
{
"logStreamName": "2022/08/12/[4]xxx",
"timestamp": 1660320179249,
"message": "{'EBS [vol-xxx] Get Tag Value Error': ('An error occurred (RequestLimitExceeded) when calling the DescribeTags operation (reached max retries: 4): Request limit exceeded.',)}\n",
"ingestionTime": 1660320180855,
"eventId": "9999"
}
],
"searchedLogStreams": []
}
こっちの方がいいですね。うんうん。
今後も活用できそうです。
参考
Discussion