Nginx日志分析工具:GoAccess使用詳解。


GoAccess是一個基於終端的快速日志分析器。其核心思想是實時快速分析和查看Web服務器統計信息,支持命令行及web頁面輸出,終端輸出是默認輸出,但它能夠生成完整的,獨立的實時 HTML報告(非常適合分析,監控和數據可視化),以及a JSON和CSV報告。

  • 所有面板和指標都定時在終端輸出上每200毫秒更新一次,在HTML輸出上每秒更新一次;
  • GoAccess允許任何自定義日志格式字符串。預定義選項包括Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等;
  • 跟蹤提供請求所需的時間。如果您想跟蹤減慢網站速度的網頁,則非常有用;
  • 數據持久性強,GoAccess能夠通過磁盤上的B + Tree數據庫逐步處理日志;
  • GoAccess是用C語言編寫的,要運行它,你只需要將ncurses作為依賴項,它甚至還具有自己的RFC6455兼容Web Socket服務器;
  • 您可以針對訪問日志文件運行它,選擇日志格式並讓GoAccess解析訪問日志並顯示統計信息;
  • 按小時或日期確定最慢運行請求的匹配數,訪問者數,帶寬數和指標數;
  • 多個虛擬主機,一個面板,顯示哪個虛擬主機正在消耗大部分Web服務器資源;
  • 定制GoAccess以適合您自己的色彩品味。通過終端,或者只是更新HTML輸出上的樣式表。

部署方案:源碼安裝,

1、yum安裝依賴包:
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel
yum install gcc -y(如已安裝此包,可選執行步驟)
rpm -Uvh https://dl.Fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm(可選執行步驟)
yum -y install GeoIP-update(可選執行步驟)

2、下載goaccess源碼包,並解壓編譯安裝:
wget https://tar.goaccess.io/goaccess-1.2.tar.gz
tar xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/

./configure --enable-geoip --enable-utf8

make && make install

注:configure配置時,可能會報錯:

configure: error: png library not found.. please install libpng

configure: error: gd library not found.. please install libgd

解決辦法:

yum install libpng libpng-devel

yum -y install gd gd-devel

如果沒有交叉編譯器的話需要:yum  install  gcc-c++  libstdc++-devel  -y

3、修改/etc/nginx/nginx.conf文件的日志存儲格式:
log_format main 
'$remote_addr - $remote_user [$time_local] "$request" '           

           '$status $body_bytes_sent "$http_referer" '

         '"$http_user_agent" "$http_x_forwarded_for" '

         '$connection $upstream_addr '

         '$upstream_response_time $request_time';

4、修改文件/usr/local/etc/goaccess/goaccess.conf改成goaccess格式標准對應為:

(注:goaccess時間格式必須與nginx日志格式相同,否則執行goaccess日志分析命令會報錯)
time-format %T
date-format %d/%b/%Y
log-format 
%h - %^ [%d:%t %^] "%r" %s %b "%R" "%u" "%^" %^ %^ %^ %T

注解:

%h:客戶端ip地址,%^:忽略此字段,%d:date字段匹配日期格式變量,%t:time字段匹配時間格式變量,%r:客戶端的請求行,%s:服務器發送回客戶端的狀態碼,

%b:返回給客戶端的對象的大小,%R:“Referer”HTTP請求標頭,%u:用戶代理HTTP請求標頭,%T:以毫秒級分辨率提供服務所需的時間(秒),%U:請求的URL路徑,~h:X-Forwarded-For(XFF)字段中的主機(客戶端IP地址,IPv4或IPv6)。 

5、后台實時生成數據到goaccess頁面:

/usr/local/bin/goaccess -f /var/log/nginx/access.log -o /usr/share/nginx/html/index.html -p /usr/local/etc/goaccess/goaccess.conf --real-time-html &

###nohup ./goaccess -f access.log -p /opt/goaccess/nginxlog.conf -o day-report.html --real-time-html --ws-url=report.xxx.com &    

--ws-url=report.xxx.com           #綁定一個域名

 6、修改nginx配置文件,

  location  /  {

          root /opt/share/nginx/html;                       #指定靜態文件路徑為上述goaccess生成html路徑
          }

補充:

goaccess 1.3版本后支持中文頁面,如何讓goaccess的dashboard界面顯示中文?

1、修改goaccess所在服務器的系統語言為中文,

#vi /etc/sysconfig/i18n

SYSFONT="latarcyrheb-sun16"       #系統字體格式
LANG="zh_CN.UTF-8"

#source /etc/sysconfig/i18n

2、制定crontab計划任務,周期性生成html文件,同時把中文輸出放在shell腳本里,但此方法會有問題,會造成web頁面間斷性無法訪問,

LANG="zh_CN.UTF-8"
/usr/local/bin/goaccess -f /usr/local/nginx-1.9.6/logs/access.log -o /opt/share/nginx/html/index.html --real-time-html -p /usr/local/etc/goaccess/goaccess.conf

過一會再刷新得到中文頁面,如下圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM