CentOS7にアクセス解析「 GoAccess 」導入

良さげなWEBアクセス解析ツールを導入したのでメモ
GoAccess公式サイト:https://goaccess.io/  デモページ

下記情報をリアルタイムでグラフィカルにブラウザおよびターミナルに表示可能
・リクエストのリアルタイム解析結果
・一日当たりのユニークユーザー数
・リクエストされたファイル(URL)
・静的ファイルのリクエスト数
・404エラーが返された数
・ユーザーのホスト名とIPアドレス
・オペレーティングシステム
・エージェント情報(ブラウザ、OS)
・リクエストの時間分布
・参照元サイト
・HTTPステータスコード
・ユーザーの位置情報

◇WEB画面

◇ターミナル画面


対応するログフォーマットは以下の通り。

  • Amazon CloudFront (Download Distribution).
  • Amazon Simple Storage Service (S3)
  • AWS Elastic Load Balancing
  • Combined Log Format (XLF/ELF) Apache | Nginx
  • Common Log Format (CLF) Apache
  • Google Cloud Storage.
  • Apache virtual hosts
  • Squid Native Format.
  • W3C format (IIS).

GoAccess リアルタイムでのアクセスログ解析 ~WEB表示編~

 ◆前提条件:EPELリポジトリ追加

 GoAccessのインストール

# yum install goaccess

 バージョン確認方法

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

Build configure arguments:
  --enable-debug
  --enable-utf8
  --enable-geoip=legacy
  --enable-tcb=memhash
  --with-getline
  --with-openssl

 GoAccess設定 ※設定サンプル

# vi /etc/goaccess/goaccess.conf

#Apacheアクセスログのフォーマットをcombined形式で出力しているため(13Ln)
time-format %H:%M:%S

#Apacheアクセスログのフォーマットをcombined形式で出力しているため(36Ln)
date-format %d/%b/%Y

#Apacheアクセスログのフォーマットをcombined形式で出力しているため(102Ln)
log-format COMBINED

#ヘッダー右上にタイトル出力(151Ln)
html-report-title <表示したい文字列>

#最終更新日時を非表示(187Ln) 
no-html-last-updated true

#WebSocketポート指定(273Ln)
port 7890

#リアルタイムでHTML出力(281Ln)
real-time-html true

#SSL/TLS使用のため認証局の公開鍵を指定(286Ln) ※SSL/TLS暗号化通信の例(LetsEncrypt使用)
ssl-cert /etc/letsencrypt/live/net-powered.com/cert.pem

#SSL/TLS使用のため認証局の秘密鍵を指定(291Ln) ※SSL/TLS暗号化通信の例(LetsEncrypt使用)
ssl-key /etc/letsencrypt/live/net-powered.com/privkey.pem

#除外するIPアドレスを指定(362Ln) 複数行設定も可
exclude-ip 192.168.100.100

#出力するHTMLファイルのパス指定(389Ln)
output /var/www/html/goaccess/report.html

#登録済みの全てのbot(クローラー)を対象外(477Ln)
ignore-crawlers true

 デーモン設定

# vi /etc/systemd/system/goaccess.service
[Unit]
Description=GoAccess 
After=network.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/bin/goaccess /var/www/logs/access_log -p /etc/goaccess/goaccess.conf
ExecStop=/bin/kill -9 ${MAINPID}
StandardOutput=null
StandardError=null

[Install]
WantedBy=multi-user.target

 デーモン起動

# systemctl daemon-reload
# systemctl start goaccess

 自動起動設定

# systemctl enable goaccess
Created symlink from /etc/systemd/system/multi-user.target.wants/goaccess.service to /etc/systemd/system/goaccess.service.

 ファイアウォール設定

# firewall-cmd --add-port=7890/tcp --zone=public --permanent
# firewall-cmd --reload

 GoAccesst起動

# goaccess /usr/bin/goaccess /var/www/logs/access_log -p /etc/goaccess/goaccess.conf

◇リアルタイムでブラウザ表示が出来るか確認
http://<サーバIPアドレス>/goaccess/report.html

 

GoAccess リアルタイムでのアクセスログ解析 ~ターミナル表示編~

 GoAccess起動

# goaccess -c <アクセスログのパス指定>

goaccess_menu

 

 

 

 

 

上記画面でSpaceキー押下後にEnterキー。アクセスログがパースされ取り込み完了後に起動する。