[アドカレ2023]S3のログを簡単に確認した~い!

ごあいさつ

こんばんは。
クリスマスも元気にオタ活、もに倉です。

さて、今回はアドカレ企画のやーつでございます。
アドカレ企画概要はこちら→[アドカレ2023] DENET ADVENT CALENDAR 2023に雪が降る

きっとほかの人がきょみぶか(興味深いの略)で難解な内容をいっぱい書いてくださると思うので、
私はいつもどおりに超絶初心者向けでお送りいたします。よろしくどうぞ。

S3に出力されるログってさ……

ELBのログなんかはS3に出力するように設定ができます。
サーバに出力されるアクセスログより前段の部分のログを確認したい!
というときはままあるので、設定しておく方が無難ですね。

しかし、このログはマネコンから簡単に確認できるわけではありません。
gz形式かつ、1日分のログがひとつのファイルにまとまっているわけでもなく、
いくつものファイルに小分けにされているのが鬼面倒なのです;;

とくに私のような「普段はサーバ上で出力されているApacheのアクセスログなんかをよく見るよ~」
という人は、「さっくり見てさっくりgerpだ成型だなんだできたらいいのに!」と思うはず。

というわけで今回は、CLI環境でログを確認するのとおなじ感覚で
S3のログを確認できるようにしていきます。

ログ確認方法

CloudShellを使おう

おなじみ、CloudShellを使うことでいつものようにログを確認することができます。

赤枠で囲ったところから使えます!


開くとこんなかんじ。なじみますね。

それでは、ここからS3のログを確認していきましょう。

手順

まずはCloudShellの環境に確認したいS3のログを持ってくる必要があるので、
ログの設置場所を作成&移動。

mkdir log
cd log

次いで、取ってきたいS3ログのS3 URIを確認。
今回は、ALBのログのうち12/3のぶん全部ひっくるめて確認したいので、↓でコピーして取ってきます。

したらば、CloudShellにてS3からコピーしてくる&gzから展開&一個のファイルに結合!

①コピーしてくる
aws s3 cp 【さっきコピーしたS3 URI】  . --recursive

②展開
find ./ -type f -name "*.gz" -exec gunzip {} \;

③結合
cat *.log > log

①のオプション「recursive」は、指定のディレクトリ内のすべてのファイルに対して実行してくれるやーつです。

完了!

これで「log」ファイルが12/3のログ全部入りとなりました。
あとはこれをlessで開いたりgrepで検索かけたり思いのままです。


試しに「404」でgrepして行数見てみたら思いのほか多くてビビりました。
さっき作ったばかりの検証環境なのだが……?^^;

小話

今回は1日分のログだけを取ってきましたが、もちろん1ヶ月分や1年分であっても
取ってきてひとつのログに結合することができます。
コマンドの工夫次第で自分の好きなようにできることがCloudShell(CLI)の利点ですね。

また、この方法のほかにもAthenaを利用すればS3のアクセスログを分析することができます。
できますが(転調)、私はまだやったことがないので何も知りません! 正直者だね。
また挑戦してみます。

あとがき

アドカレなのになんにもホリデー要素ないがな。
ほかの記事もぜひ読んでみてください!(きっとホリデー要素があるはず)

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA