AWS Cloudfront のアクセスログ解析に goaccess.io がつよつよだった

読了まで:約3分


ここの所、AWS Cloudfront のログベースでこの Web サイトのアクセス解析をやっているのですが、 その際に使っているソフトウェアである、

が、かなりつよつよだったので、今日はその辺り紹介したいと思います。

GoAccess とは?

GoAccess はその名前から Golang で書かれているかと思いきや、実は C 言語で書かれているソフトウェア で、 一言で言えば、

Static Accesslog Analyzer

の類いのソフトウェアです。

まぁソフトウェアのカテゴリとしては、AWStats とか WebAnalyzer などの、

アクセスログをローカルで分析して良い感じに表示してくれる やつ

の類いなんですが、GoAccess はこれがモダンになったソフトウェアと認識しておくと良いです。

また GoAccess の特徴としては、

  1. 分析がかなり高速で(ファイル数にも依るけど)ほぼ一瞬で分析が終わる
  2. Console UI や 各種フォーマットでのレポート出力がリアルタイムでも可能
  3. プリセットで AWS Cloudfront などのログ分析をサポートしカスタムも可能

と言う感じで、ローカルでログ分析を行う機能は完全に備えつつ、 かつリアルタイム HTML レポートだとか Console (Terminal) UI で分析できるとか、 クローラー扱いする UserAgent を変更できて、かつクローラーのアクセスを排除できるか、 そう言ったかゆいところに手が届きそうな機能も付いています。

GoAccess での AWS Cloudfront のログ解析がつよつよな理由

基本的にこれは下記の理由に依ります:

  1. Cloudfront のログをほぼ設定なしで解析できる
  2. 分析がとても速い。現段階のログ数ではほぼ一瞬で終わる
  3. クローラーを除外したアクセス解析が手軽に出来る

また自分の場合、

AWS Cloudfront のログを S3 の Bucket から引っ張ってきて GoAccess に食わせる

という作業を、make コマンド一発で出来る様にしているので、 これがまた手軽で快適にアクセス解析が出来る、というのも押しポイントです。

なお、AWS Cloudfront のログ取得に関しては Cloudfront の Distribtion 側で S3 にログを吐く様に設定していて、 かつ make コマンド一発で解析をするための Makefile は下記の様になっています:

.PHONY: pull report open update
pull:
    @echo "Pull from AWS Cloudfront logs"
    @aws s3 sync --exact-timestamp s3://kalaclista-logs/ logs/
report:
    @zcat logs/*.gz \
        | goaccess \
                --log-format CLOUDFRONT \
                \
                --agent-list \
                --browsers-file resources/browsers.tsv \
                --output public/report.html \
                --double-decode \
                --ignore-crawlers \
                --ignore-referer=the.kalaclista.com \
                --ignore-referer=localhost:1313 \
                --ignore-referer="*.*.forestry.io" \
                --real-os
open:
    @xdg-open public/report.html
update: pull report open

また GoAccess のインストールは NixOS の nixpkgs 経由で行なっていて、 普段は HTML report を xdg-open 経由で Firefox を用いて閲覧しています。

その他の押しポイント

まぁ実際のところ、自分未だすべての機能を使い切ってアクセス解析をやっている訳でもないので、 あんまり細かいところまで GoAccess を評価出来ている訳でも無いんですが、

お前は Hugo か何かか(と言うぐらい分析が速い)

という点だけでも、GoAccess を本当にオススメ出来るし、 Shell script や他のスクリプト言語を駆使してレポートの分析範囲を調整 できたり、 または 常に書き込まれている生ログをリアルタイムで watch してレポートを表示する機能も有ったりする ので、 そう言った点でもすごく便利だと思います。

以上

まぁ今回の話は、

お前が思うんならそうなんだろう。お前ん中ではな

と言う話でしかないし、あと日本語圏では nginx のリアルタイムログ分析という分野で、 ちらほらと結構昔から認知されてるっぽいのですが、それ以外でも、

AWS Cloudfront や S3 、Google Cloud Storage のログ分析

と言った様な事が手軽に出来るので、そういった面からでも、 一度試してみる価値は有るソフトウェアかな、と個人的には思ってます。

特に自分としては、今回の個人的な要件だった、

手軽で雑に AWS Cloudfront 上の個人サイトをアクセス解析できればそれで良い

と言う用途にベストマッチした感があるので、GoAccess

1 日 100 hit も行かない個人サイトを AWS Cloudfront に展開して運営している

みたいな方にも使い易いソフトウェアだと思います。はい。

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。