24時間365日フルマネージドホスティングサービスのデイーネット

「ニフクラ」導入無料キャンペーン

GoAccessを使用してリアルタイムアクセス解析

今回はインターン生で恐縮ですが、研修中のT花が書かせて頂きます。

Webアクセス解析に対して、GoAccessというグラフィカルなツールがあったので、今後の業務の一助になればと思い構築を行ってみました。 goaccess自体はアクセスログを解析してレポートを作成するツールであり、起動時に--real-time-htmlオプションをつけることにより、リアルタイムにレポートを作成することができます。 また、都度コマンド実行で起動するのでは業務負荷がかかるので、systemdのユニットにすることで対応しました。

実行環境

CentOS7
Apache 2.4.6

インストール手順

epelレポジトリにパッケージがあるみたいでyumでのインストールも可能でしたが、導入されるバージョンが1.2であったため、今回は日本語対応している最新バージョンの1.3をソースからインストールする事と致しました。

  • 作業領域に移動し、ダウンロード

# cd /usr/local/src
# curl -O https://tar.goaccess.io/goaccess-1.3.tar.gz
  • 展開し、WEB領域に移動

# tar -xzvf goaccess-1.3.tar.gz
# mv goaccess-1.3 /var/www/html/goaccess
  • コンパイルに必要なパッケージをインストール

# yum install ncurses-devel geoip-devel
  • コンパイルして、インストール

# cd goaccess
# ./configure --enable-utf8 --enable-geoip=legacy
※最低限のオプションにしています。詳細はこちら(https://goaccess.io/man)
# make
# make install
  • インストール確認

#goaccess --version
----------------------------------
GoAccess - 1.3.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana

Build configure arguments:
  --enable-utf8
  --enable-geoip=legacy
----------------------------------
  • 設定ファイルを編集

# cp -p /usr/local/etc/goaccess/goaccess.conf /usr/local/etc/goaccess/goaccess.conf.org
# vim /usr/local/etc/goaccess/goaccess.conf

time-format %H:%M:%S
date-format %d/%b/%Y
log-format COMBINED

※上記三箇所のコメントアウトを外す。
※ログフォーマットをいじらず、COMBINED形式で出力させたログ解析を想定しています。
 ここは環境に合わせて設定してください。
  • 情報更新の通信(WebSocket)に 7890番ポートを使用するためFWを開放

○iptebles設定(例)
・設定ファイル編集
# vim /etc/sysconfig/iptables
・以下記載
# goaccess
-A INPUT -p tcp -m state --state NEW -m tcp --dport 7890 -j ACCEPT

○firewalld設定(例)
# firewall-cmd --add-port=7890/tcp --zone=public --permanent

・設定反映
# firewall-cmd --reload

・設定確認
# firewall-cmd --list-all
  • webブラウザでの確認のため、virtualhost設定

・設定ファイル作成
#vim /etc/httpd/conf.d/goaccess.conf
----------------------------------
※ファイル内に下記記載
※ご自身の環境に合わせて設定してください

# goaccess vhost
<VirtualHost *:80>
    ServerName goaccess.example.com
    DocumentRoot "/var/www/html/goaccess"
    ErrorLog /var/log/goaccess-error.log
    CustomLog /var/log/goaccess-access.log combined
</VirtualHost>
----------------------------------

・configファイルの文法チェック
# service httpd configtest

・apache再起動
# systemctl restart httpd
  • 稼動確認

・htmlファイルにレポートを作成

# goaccess /var/log/httpd/access_log -a -o /var/www/html/goaccess/index.html -p /usr/local/etc/goaccess/goaccess.conf

・この時点でいっぺんアクセスしてみて、画面が出ることを確認

http://設定したドメイン

  • 絶えずコマンドを押してレポート作成するのは面倒なので常時起動のため、サービス化します。

・サービス定義

# vim /etc/systemd/system/goaccess.service

・以下記載
[Unit]
Description=Goaccess daemon.
After=network.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/local/bin/goaccess -a -g -f /var/log/httpd/access_log -o /var/www/html/goaccess/index.html --real-time-html --log-format=COMBINED --ws-url goaccess
StandardOutput=null
StandardError=null

[Install]
WantedBy=multi-user.target

・サービス起動
#systemctl start goaccess
#systemctl enable goaccess
#systemctl status goaccess


インストールはこれで完了です。

アクセスしてみる

ここまでで、常時htmlファイルが更新される環境になっているはずです。

アクセス対象のページへアクセスしてみて、値が更新されることを確認してみましょう。

http://設定したドメイン

goaccess.PNG

動きましたか?

UIもリアルタイム更新もかっこいいですよね。

ぜひお試しください。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar