AWS CloudFront のアクセスログ解析 (GoAccess)
2023/08/08, last updated 2023/08/14 - ~3 Minutes
GoAccess の使い方
WEB サイトの構築に AWS CloudFront を使っている場合、アクセスログを有効にしておくと、指定した S3 バケットにアクセスログが保存される。
このアクセスログを簡単に解析するために、GoAccess というソフトがあることを知った。
以下の記事が参考になるだろう。
- GoAccess(本家)
- AWS Cloudfront のアクセスログ解析に goaccess.io がつよつよだった
- コマンド一発でウェブサイトのアクセスログをターミナルやウェブブラウザで可視化できる「GoAccess」レビュー
CloudFront のアクセスログであるが、こんなに大量の数のアクセスログができるん?と思うほど、S3 にファイルができる。 1 年ほど運用して、そのまま放置していたのだが、12 万個ほどファイルができていた。(放置しすぎ)
そんな大量の数のログファイルにもかかわらず、以下のようにして解析することができる。 linux、mac、cygwin(windows) などの unix like な環境が必要。また、aws cli もインストール、設定しておくこと。
mkdir logs
cd logs
aws s3 sync s3://ログバケット名 .
find . -name \*.gz | xargs gzcat | goaccess --log-format=CLOUDFRONT # ターミナルに表示する場合
find . -name \*.gz | xargs gzcat | goaccess --log-format=CLOUDFRONT -o レポートファイル.html # html で出力する場合
今の場合、ファイルが多すぎるので、gzcat *.gz すると、シェルが *.gz を展開して、コマンドラインに収まらない。そこで、xargs を使っている。
レポートは html のほうが見やすいかもしれない。
2023-08 分だけ表示したければ、次のようにすれば良いだろう。
find . -name \*.gz | grep 2023-08 | xargs gzcat | oaccess --log-format=CLOUDFRONT -o レポートファイル.html # html で出力する場合
Google Analytics を使わないで WEB のアクセス解析をする理由
この WEB サイトでは、しばらく、Google Analytics を使わないことにした。 Google Analytics では Cookie を使って利用者の色々な属性を追跡している。 年齢や性別まで表示されているとすれば、Gmail などを経由して、Google のアカウント情報を連携しているのだろうか。
確かに、広告表示などをするのであれば、年齢、性別、興味など、知りたいかもしれない。 このサイトは、せいぜい、1000PV/月もいかないぐらいの WEB サイトなので、Google 広告を貼っても収益には寄与しないし、 そこまでして利用者の属性を追跡する必要があるのかな?という疑問があったためである。
それにトラッキングコードを読み込むので、ページ表示が遅くなる。Cookie 使用の同意ポップアップもうっとおしい。 そんなわけで、Google Analytics を外してしまった。
Search Console については Cookie を使わない仕組みであるし、検索ニーズを把握する必要もあるので、設定している。設定してもプライバシーは保たれるだろう。
しかし、そのような構成にすると、検索結果からの流入はかろうじて把握できるが、検索以外からの流入がいまひとつ見えない。 そこで、アクセスログを解析したいと思い調べてみたところ、GoAccess というツールに辿りついた。
CloudFront のアクセスログを解析したい場合は、GoAccess を使ってみてはどうだろうか。