1、爲了提升 GoAccess 分析準確度,建議配置 nginx.conf
的 log_format 項以下:html
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_body"';
2、安裝GoAccessnginx
$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz #安裝依賴 $ yum install GeoIP-devel $ cd goaccess-1.2/ # --with-openssl項開啓openssl,HTTPS時須要 $ ./configure --enable-utf8 --enable-geoip=legacy --with-openssl $ make $ make install
安裝完成後,默認配置文件goaccess.conf
放置於/usr/local/etc下,爲了方便管理,使用
jsonmv /usr/local/etc/goaccess.conf /etc/
命令將其移動到/etc
目錄下
對配置文件作一些主要配置:服務器
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 格式對應,每一個參數以空格或者製表符分割。參數說明以下:dom
%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 命令參數,以下:socket
$ 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時使用
一、控制檯模式tcp
goaccess -a /usr/local/nginx/logs/access.log -p /etc/goaccess.conf
控制檯下的操做方法:url
F1 主幫助頁面 F5 重繪主窗口 q 退出 1-15 跳轉到對應編號的模塊位置 o 打開當前模塊的詳細視圖 j 當前模塊向下滾動 k 當前模塊向上滾動 s 對模塊排序 / 在全部模塊中搜索匹配 n 查找下一個出現的位置 g 移動到第一個模塊頂部 G 移動到最後一個模塊底部
若是不修改配置文件/etc/goaccess.conf,輸入下面指令,而後選擇日誌文件類型也能夠:spa
[root@host1 logs]# goaccess -f access.log
Nginx日誌是屬於Combined Log Format (XLF/ELF)類型的,因此咱們選擇第三個,用上下光標移動,空格選中,回車肯定。代理
二、HTML模式
[root@host1 logs]# goaccess -a /usr/local/nginx/logs/access.log -p /etc/goaccess.conf -o /usr/local/nginx/html/ao-access.html
這個分析報表是經過手動執行命令生成,因此須要實現 GoAccess 自動地建立報表
三、daemonize
GoAccess 已經爲咱們考慮到這點了,它能夠以 daemonize 模式運行,並提供建立實時 HTML 的功能,只須要在啓動命令後追加--real-time-html --daemonize
參數便可。
[root@host1 logs]# goaccess -a /usr/local/nginx/logs/access.log -p /etc/goaccess.conf -o /usr/local/nginx/html/ao-access.html --real-time-html --daemonize Daemonized GoAccess: 13647 [root@host1 logs]# netstat -anptu | grep goaccess tcp 0 0 0.0.0.0:7890 0.0.0.0:* LISTEN 13647/goaccess
以守護進程啓動 GoAccess 後,使用 Websocket 創建長鏈接,它默認監聽 7890 端口,能夠經過--port
參數指定端口號。
若是站點啓用了 HTTPS,GoAccess 須要使用 openssl,在配置文件goaccess.conf
中配置ssl-cert
和ssl-key
項,並確保在安裝過程當中 configure 時已添加--with-openssl
項來支持 openssl 。當使用 HTTPS 後 Websocket 通訊時也應該使用 wss 協議,須要將ws-url
項配置爲wss://www.domain.com。
四、生成json報告:
[root@host1 logs]# goaccess -f access.log -a -d -o json > report.json
五、生成CSV報表:
[root@host1 logs]# goaccess -f access.log -o csv > report.csv
因爲nginx會自動壓縮日誌,如下命令能夠直接分析壓縮後的日誌:
zcat access.log.*.gz | goaccess #或者 zcat -f access.log* | goaccess
支持管道:
[root@host1 logs]# sed -n '/30\/May\/2018/,$p' access.log | goaccess -a [root@host1 logs]# grep "May" access.log | goaccess -a