AWS CloudFront のアクセスログ解析 (GoAccess)

 2023/08/08, last updated 2023/08/14 -  ~3 Minutes

GoAccess の使い方

WEB サイトの構築に AWS CloudFront を使っている場合、アクセスログを有効にしておくと、指定した S3 バケットにアクセスログが保存される。

このアクセスログを簡単に解析するために、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 を使ってみてはどうだろうか。