今回はインターン生で恐縮ですが、研修中の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://設定したドメイン