nginxアクセスログ解析をリアルタイムで行いたい GoAccess

hls 配信中にどれくらいのアクセスがあったかを知りたいです。

rtmpで配信している時にはrtmp-moduleで準備されたテンプレートを利用して、帯域や接続数をwebで表示できたのですが、hlsではそのような集計方法がないのが困った点でした。

GoogleAnalyticsでも、リアルタイムにどのwebページにアクセスされているか確認する事が可能です。

GoogleAnalyticsを利用して何とかできないかなど試行錯誤しましたがリアルタイム性はなく、m3u8ファイルにアクセスしている人がどれくらいいるかなどは計りようがありませんでした。

そこで見つけたのがngixのaccess.logをリアルタイムに解析してくれる方法です。

goaccessというコマンドで、シェル上に表示させたり、webリポートの作成ができます。

https://goaccess.io/features

GoAccessは、オープンソースのリアルタイム Webログアナライザで、ブラウザを介して実行されるインタラクティブなビューアです。

特徴

  1. C言語で開発され、高速軽快動作します。かつ、随時データが更新されていきます。
  2. GoAccessアプリの依存関係はncursesだけです
  3. 多用なログ形式に対応しています(Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFrontなど)
  4. 簡単なコマンドで実行可能です
  5. かっこいいダッシュボードデザイン(重要です)

コンパイルに必要なパッケージを準備

コンパイルインストール

※apt-get で入るgoaccessは、バージョンが古いので使わない方がいい。詳細は下に記載しています。

デフォルトでできるコンフィグの場所

ログフォーマットをここで指定しておくと、–log-format=COMBINEDオプションが必要なくなります。私はnginxのログ解析をしたいので、nginxのログに合わせます。

最終100行を随時更新

グラフィカルなアクセス解析ができる

最終1000行を随時webレポートにする

real-time-htmlをしているのに、静的reportと変わらず、更新時間が、更新されていかない現象に出会いました。なんでだろうなぁと不思議におもっていたのですが、goaccessのwebレポートを自動更新させていくためには外部インターネットから、7890ポートにアクセスできるようにしないといけないそうです。

ファイヤーウォールで7890ポートを閉じているようでしたら、受信の規則を7890ポートが受信できるよう設定してください。

YAMAHA系のルータでしたら、

こんな感じで許可を書きます。

aptパッケージの中にもあるが、バージョンが古く思った通り動かない。 –real-time-html や、tail -f |goaccess – とするとエラーが出て使い物にならない。
apt-get install goaccess

参考

GoAccess
https://pantheon.io/docs/nginx-access-log/

tail コマンド
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230894/

2件のコメント

コメントする

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