Ubuntu 16.04 + Nginx にGoAccessを使ったリアルアイムアクセス解析の環境を作ったのでその内容をメモ。
1.GoAccessをインストール
これは公式の手順を参考にインストール。
// 必要パッケージをインストール $ sudo apt-get -y install libncursesw5-dev gcc make $ sudo apt-get -y install libgeoip-dev libtokyocabinet-dev // GoAccessをダウンロード $ wget http://tar.goaccess.io/goaccess-1.2.tar.gz // コンパイルしてインストール $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2 $ sudo ./configure --enable-utf8 --enable-geoip=legacy $ sudo make $ sudo make install $ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess
インストールできたら試しに解析してみる。
$ sudo goaccess /var/log/nginx/access.log --log-format=COMBINED
さて、GoAccessは解析結果をHTMLとして出力することもでき、
さらに –real-time-html オプションをつけることで常時情報が更新されるHTMLを出力できます。
注意点としては情報更新の通信(WebSocket)に 7890番ポートを使用するためFWを開放しておきましょう。
$ sudo ufw allow 7890
※ ルーターの開放なども必要ですが割愛します。
開放したら以下のコマンドでリアルタイム解析HTMLを出力しましょう。
$ sudo goaccess /var/log/nginx/access.log -a -o /usr/share/nginx/html/report.html --real-time-html --log-format=COMBINED
http://[ホスト名 or IPアドレス]/report.html にアクセスすると以下ような画面が見れるはずです。
2.サービス化する
常時起動するには毎回先ほどのコマンドを実行するわけにはいきませんので、
今回はサービス化して常時起動する状態にしたいと思います。
// 定義ファイルを作成 $ sudo vi /etc/systemd/system/goaccess.service ↓↓ 記載 [Unit] Description=Goaccess Web log report. After=network.target [Service] Type=simple User=root Group=root Restart=always ExecStart=/usr/local/bin/goaccess -a -g -f /var/log/nginx/access.log -o /usr/share/nginx/html/report.html --real-time-html --log-format=COMBINED --ws-url <host名> StandardOutput=null StandardError=null [Install] WantedBy=multi-user.target ↑↑ 記載 // サービスファイルとして認識されたか確認 $ sudo systemctl list-unit-files --type=service | grep goaccess goaccess.service disabled ← 表示されればOK // サービスを有効化 $ sudo systemctl enable goaccess // サービス起動 $ sudo systemctl start goaccess // サービス状態確認 $ sudo systemctl status goaccess ● goaccess.service - Goaccess Web log report. Loaded: loaded (/etc/systemd/system/goaccess.service; enabled; vendor preset: enabled) Active: active (running) since 月 2018-08-20 16:46:27 JST; 4h 5min ago Main PID: 91584 (goaccess) Tasks: 3 Memory: 3.7M CPU: 1min 7.536s CGroup: /system.slice/goaccess.service mq91584 /usr/local/bin/goaccess -a -g -f /var/log/nginx/access.log -o /usr/share/nginx/html/report.html - 8月 20 16:46:27 MainServer systemd[1]: Started Goaccess Web log report..
起動できたら先ほどのURLにアクセスしてみましょう
きちんと解析画面が表示されれば設定完了です。
あとは必要であればアクセス制限を設けるなどしてください。