GoAccess構建實時日誌分析系統

一、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;
        }

瀏覽器輸入本機地址回車即可看到:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章