一、GoAccess基本概述
GoAccess 是一款用於Apache或者Nginx的命令行日誌分析器和交互式查看器。使用這款工具,你不僅可以瀏覽到之前提及的相關數據,還可以通過分析網站服務器日誌來進一步挖掘數據。這一切都是在一個終端窗口實時輸出並且可以輸出在web端可視化的顯示信息。
二、GoAccess主要功能
- 統計概況,流量消耗等
- 訪客排名
- 動態Web請求
- 靜態web請求,如圖片、樣式表、腳本等。
- 來路域名
- 404 錯誤
- 操作系統
- 瀏覽器和搜索引擎
- 主機、DNS和ip地址
- HTTP 響應代碼
- 引薦網站
- 鍵盤佈局
- 自定義顯示
- 支持超大日誌(分析速度很快)
三、GoAccess用法介紹
GoAccess的基本語法如下
goaccess [ -b ][ -s ][ -e IP_ADDRESS][ - a ] <-f log_file >
參數說明:
-f – 日誌文件名
-b – 開啓流量統計,如果希望加快分析速度不建議使用該參數
-s – 開啓HTTP響應代碼統計
-a – 開啓用戶代理統計
-e – 開啓指定IP地址統計,默認禁用
-p -指定goacces用戶配置文件路徑
安裝GoAccess
[root@web01 ~]# wget http://tar.goaccess.io/goaccess-1.2.tar.gz
[root@web01 ~]# tar -xzvf goaccess-1.2.tar.gz
[root@web01 ~]# cd goaccess-1.2/
[root@web01 ~]# ./configure --enable-utf8 --enable-geoip=legacy
configure: error:
*** Missing development files for the GeoIP library
[root@web01 ~]# yum install libncursesw5-dev #缺少的依賴包
[root@web01 ~]# yum install ncurses-devel #缺少的依賴包
[root@web01 ~]# yum install GeoIP GeoIP-devel GeoIP-data #缺少的依賴包
[root@web01 ~]# ./configure --enable-utf8 --enable-geoip=legacy
[root@web01 ~]# make & make install
配置
1.對配置文件做一些主要配置:
[root@web01 log]# which goaccess
/usr/local/bin/goaccess
去掉這些配置項前面的“#”
[root@web01 log]# vim /usr/local/etc/goaccess.conf
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
其中,log-format 與 access.log 的 log_format 格式對應,每個參數以空格或者製表符分割。參數說明如下:
%t 匹配time-format格式的時間字段
%d 匹配date-format格式的日期字段
%h host(客戶端ip地址,包括ipv4和ipv6)
%r 來自客戶端的請求行
%m 請求的方法
%U URL路徑 %H 請求協議
%s 服務器響應的狀態碼
%b 服務器返回的內容大小
%R HTTP請求頭的referer字段
%u 用戶代理的HTTP請求報頭
%D 請求所花費的時間,單位微秒
%T 請求所花費的時間,單位秒
%^ 忽略這一字段
命令
查看 GoAccess 命令參數,如下:
$ goaccess -h
# 常用參數
-a --agent-list 啓用由主機用戶代理的列表。爲了更快的解析,不啓用該項
-d --with-output-resolver 在HTML/JSON輸出中開啓IP解析,會使用GeoIP來進行IP解析
-f --log-file 需要分析的日誌文件路徑
-p --config-file 配置文件路徑
-o --output 輸出格式,支持html、json、csv
-m --with-mouse 控制面板支持鼠標點擊
-q --no-query-string 忽略請求的參數部分
--real-time-html 實時生成HTML報告
--daemonize 守護進程模式,--real-time-html時使用
控制檯模式
1.當前日誌分析結果
goaccess -f /usr/local/nginx/logs/access.log -p /usr/local/etc/goaccess.conf
控制檯下的操作方法:
F1 主幫助頁面
F5 重繪主窗口
q 退出
1-15 跳轉到對應編號的模塊位置
o 打開當前模塊的詳細視圖
j 當前模塊向下滾動
k 當前模塊向上滾動
s 對模塊排序
/ 在所有模塊中搜索匹配
n 查找下一個出現的位置
g 移動到第一個模塊頂部
G 移動到最後一個模塊底部
使用命令指定配置,將生成的信息保存爲html
#1.測試是否能通過終端直接展示
[root@web01 log]# goaccess -f /usr/local/nginx/logs/access.log -p /usr/local/etc/goaccess.conf
#2.將分析結果保存爲HTML
[root@web01 log]# goaccess /var/log/nginx/access.log -o /usr/local/nginx/html/log/index.html -p /usr/local/etc/goaccess.conf
#3.將其寫入腳本
#由於對日誌實時性要求不是非常高,於是寫個小腳本,配置crontab,讓其每隔一段時間轉換一次,也可以實現僞實時性觀察log,如下:
[root@web01 log]# vim scripts/goaccess.sh
#!/bin/bash
LANG="zh_CN.UTF-8" #頁面轉換爲中文
/usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/local/nginx/html/log/index.html -p /usr/local/etc/goaccess.conf
#4.然後再將腳本加入到crontab即可
[root@web01 ~]# crontab -e
#定時goaccess生成的信息保存爲html
5,10,15,20,25,30,35,40,45,50 * * * * /bin/bash /root/scripts/goaccess.sh
[root@web01 ~]# crontab -l #查看
最後記得一定要重新加載配置文件否則不生效的
命令: service crond reload 重新載入配置
配置一個nginx虛擬主機
location / {
alias html/log/;
index index.html index.htm;
}
瀏覽器輸入本機地址回車即可看到: