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

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 を使ってみてはどうでしょうか。

1969年生まれ。大学卒業後から15年以上にわたり、通信、カードリーダ、セキュリティ業界においてソフトウェア開発に従事。その後、2012年5月に当社を設立。電力、交通、車載向けの組み込み系システム、旅行業界向けの WEB システム開発、音声合成システム、消防向けのシステム開発等に参画。
低コストかつシンプルで安定稼働するシステムの実現を目指し、アーキテクチャ設計に取り組んでいます。
会社情報と代表者守屋のプロフィール詳細