本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
webアクセス状況をリアルタイムに解析したい
hls 配信中にどれくらいのアクセスがあったかを知りたいです。
rtmpで配信している時にはrtmp-moduleで準備されたテンプレートを利用して、帯域や接続数をwebで表示できたのですが、hlsではそのような集計方法がないのが困った点でした。
GoogleAnalyticsではm3u8のアクセス解析できない
GoogleAnalyticsでも、リアルタイムにどのwebページにアクセスされているか確認する事が可能です。
GoogleAnalyticsを利用して何とかできないかなど試行錯誤しましたがリアルタイム性はなく、m3u8ファイルにアクセスしている人がどれくらいいるかなどは計りようがありませんでした。
GoAccessならなんとかなる?
そこで見つけたのがngixのaccess.logをリアルタイムに解析してくれる方法です。
goaccessというコマンドで、シェル上に表示させたり、webリポートの作成ができます。
GoAccessは、オープンソースのリアルタイム Webログアナライザで、ブラウザを介して実行されるインタラクティブなビューアです。
特徴
- C言語で開発され、高速軽快動作します。かつ、随時データが更新されていきます。
- GoAccessアプリの依存関係はncursesだけです
- 多用なログ形式に対応しています(Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFrontなど)
- 簡単なコマンドで実行可能です
- かっこいいダッシュボードデザイン(重要です)
GoAccessのインストール
コンパイルに必要なパッケージを準備
apt-get install libgeoip-dev apt-get install libncursesw5-dev
コンパイルインストール
※apt-get で入るgoaccessは、バージョンが古いので使わない方がいい。詳細は下に記載しています。
$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2/ $ ./configure --enable-utf8 --enable-geoip=legacy $ make # make install Your build configuration: Prefix : /usr/local Package : goaccess Version : 1.2 Dynamic buffer : no Geolocation : GeoIP Legacy Storage method : In-memory Hash Database (Default) TLS/SSL : no Compiler flags : -pthread Linker flags : -lnsl -lncursesw -lGeoIP -lpthread Bugs : goaccess@prosoftcorp.com
デフォルトでできるコンフィグの場所
/usr/local/etc/goaccess.conf
ログフォーマットをここで指定しておくと、–log-format=COMBINEDオプションが必要なくなります。私はnginxのログ解析をしたいので、nginxのログに合わせます。
vi /usr/local/etc/goaccess.conf time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
コマンド上でのリアルタイム解析
goaccess -f /usr/local/nginx/logs/access.log --log-format=COMBINED -
最終100行を随時更新
tail -f -n 100 access.log |goaccess --log-format=COMBINED -
htmlでリアルタイム解析
goaccess access.log -o /usr/local/nginx/html/dashbord/report.html --real-time-html --log-format=COMBINED
グラフィカルなアクセス解析ができる
最終1000行を随時webレポートにする
tail -f -n 1000 access.log |goaccess -o /usr/local/nginx/html/dashbord/report.html -- real-time-html --log-format=COMBINED
real-time-htmlが効かない
real-time-htmlをしているのに、静的reportと変わらず、更新時間が、更新されていかない現象に出会いました。なんでだろうなぁと不思議におもっていたのですが、goaccessのwebレポートを自動更新させていくためには外部インターネットから、7890ポートにアクセスできるようにしないといけないそうです。
ファイヤーウォールで7890ポートを閉じているようでしたら、受信の規則を7890ポートが受信できるよう設定してください。
YAMAHA系のルータでしたら、
#ファイヤーウォールに穴をあける ip filter 103 pass * 192.168.0.5 tcp * 22,www,1935,8080,7890 #内側へのポートフォワーディング nat descriptor masquerade static 1000 6 192.168.0.5 tcp 22,www,1935,7890
こんな感じで許可を書きます。
注意 apt-getしちゃだめ
aptパッケージの中にもあるが、バージョンが古く思った通り動かない。 –real-time-html や、tail -f |goaccess – とするとエラーが出て使い物にならない。
apt-get install goaccess
参考
GoAccess
https://pantheon.io/docs/nginx-access-log/
http://wonderwall.hatenablog.com/entry/2017/08/27/183000
tail コマンド
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230894/