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もリアルタイム更新もかっこいいですよね。
    ぜひお試しください。

返信を残す

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

CAPTCHA