GoAccess對Nginx日誌分析完美分析

 前言html

QQ截圖20180831124109.png

若是把運維看作是醫生給病人看病,則日誌就是病人對本身的陳述,不少時候醫生須要經過對病人的描述中得出病人情況,是否嚴重,須要什麼計量的藥,什麼類型的藥。因此古人有句話叫對症下藥,這個症就是病人的描述加醫生的判斷,在重一點的病在加上不少的化驗。在醫生看病時病人的描述和化驗單上的數據對醫生是很是重要的。同理日誌在運維中的做用也是相似的,但很是不幸,日誌在不少運維中被嚴重低估,直到磁盤空間不足的時候纔想到,這有個大的日誌文件把他刪了,這樣能夠節省空間。nginx


 GoAccessweb

GoAccess是一個基於終端的快速日誌分析器。其核心思想是實時快速分析和查看Web服務器統計信息,而無需使用您的瀏覽器(若是您但願經過SSH快速分析訪問日誌,或者只是喜歡在終端中工做),終端輸出是默認輸出,但它可以生成完整的,獨立的實時 HTML報告(很是適合分析,監控和數據可視化),以及a JSON和CSV報告。數據庫

  • 全部面板和指標都定時在終端輸出上每200毫秒更新一次,在HTML輸出上每秒更新一次。瀏覽器

  • GoAccess容許任何自定義日誌格式字符串。預約義選項包括Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等緩存

  • 跟蹤提供請求所需的時間。若是您想跟蹤減慢網站速度的網頁,則很是有用。bash

  • 數據持久性強,GoAccess可以經過磁盤上的B + Tree數據庫逐步處理日誌。服務器

  • GoAccess是用C語言編寫的,要運行它,你只須要將ncurses做爲依賴項,它甚至還具備本身的RFC6455兼容Web Socket服務器。網絡

  • 您能夠針對訪問日誌文件運行它,選擇日誌格式並讓GoAccess解析訪問日誌並顯示統計信息。運維

  • 按小時或日期肯定最慢運行請求的匹配數,訪問者數,帶寬數和指標數。

  • 多個虛擬主機,一個面板,顯示哪一個虛擬主機正在消耗大部分Web服務器資源。

  • 定製GoAccess以適合您本身的色彩品味。經過終端,或者只是更新HTML輸出上的樣式表。


 部署方案

方案一:Yum安裝部署

yum install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-develyum install gcc -y
yum -y install GeoIP-update
yum install goaccess

#修改/etc/nginx/nginx.conf文件的日誌存儲格式
log_format  main  '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '
        '$status $body_bytes_sent "$http_referer" - $request_body'                      
        '"$http_user_agent" "$http_x_forwarded_for"';

        
#修改文件/etc/goaccess.conf改爲goaccess格式標準對應爲
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] requesthost:"%v"; "%r" requesttime:"%T"; %s %b "%R" - %^"%u"

#測試生成頁面
goaccess -f /var/log/nginx/access.log -c -a>/usr/share/nginx/html/go.html


方案二:源碼安裝部署

#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


#下載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-utf8make && make install


#修改/etc/nginx/nginx.conf文件的日誌存儲格式
log_format  main  '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '
        '$status $body_bytes_sent "$http_referer" - $request_body'                      
        '"$http_user_agent" "$http_x_forwarded_for"';

        
#修改文件/usr/local/etc/goaccess.conf改爲goaccess格式標準對應爲
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] requesthost:"%v"; "%r" requesttime:"%T"; %s %b "%R" - %^"%u"


#測試生成頁面
goaccess -f /var/log/nginx/access.log -c -a>/usr/share/nginx/html/go.html


#後臺實時生成數據到goaccess頁面
/usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/go.html  --real-time-html &


 頁面解析

QQ截圖20180831122855.png

General Statistics:此面板提供了幾個指標的摘要,其中一些包括:有效和無效請求的數量,分析數據集所花費的時間,惟一訪問者,請求的文件,靜態文件(CSS,ICO,JPG等)HTTP引用,404s,已解析日誌文件的大小和帶寬消耗。

Unique visitors此面板顯示點擊次數,惟一身份訪問者和每一個日期的累積帶寬等指標。包含相同IP,相同日期和相同用戶代理的HTTP請求被視爲惟一訪問者。默認狀況下,它包括網絡爬蟲/蜘蛛。 可使用--date-spec = hr將日期特異性設置爲小時級別,這將顯示日期,例如05 / Jun / 2016:16。若是您想跟蹤小時級別的每日流量,這很是棒。

Requested files此面板顯示Web服務器上請求最多的文件。它顯示了匹配,惟一身份訪問者和百分比,以及累積帶寬,協議和使用的請求方法。

Requested static files列出了最經常使用靜態文件,如:JPG,CSS,SWF,JS,GIF,和PNG文件類型,使用相同的指標做爲最後的面板一塊兒。能夠將其餘靜態文件添加到配置文件中。

404 or Not Found顯示與先前請求面板相同的指標,可是,其數據包含在服務器上找不到的全部頁面,或一般稱爲404狀態代碼。

Hosts此面板包含有關主機自己的詳細信息。這很是適合發現×××性爬蟲,並肯定誰在吃你的帶寬。 擴展面板能夠顯示更多信息,例如主機的反向DNS查找結果,原產國和城市。若是-a啓用了參數,則能夠經過選擇所需的IP地址,而後按Enter來顯示用戶代理列表。

Operating Systems此面板將報告主機在到達服務器時使用的操做系統。它試圖提供每一個操做系統的最具體版本。
Browsers此面板將報告主機在訪問服務器時使用的瀏覽器。它試圖提供每一個瀏覽器的最具體版本。
Visit Times此面板將顯示每小時報告。此選項顯示24個數據點,天天一小時一個。 可選地,可使用--hour-spec = min將小時特異性設置爲十分之一水平,這將顯示小時爲16:4若是您想要發現服務器上的流量峯值,這很好。
Virtual Hosts此面板將顯示從訪問日誌中解析的全部不一樣虛擬主機。若是在日誌格式字符串中使用%v,則會顯示此面板。
Referrers URLs若是相關主機經過其餘資源訪問了網站,或者是從其餘主機連接/轉移給您,則會在此面板中提供引用它們的網址。請參閱`--ignore-panel`配置文件以啓用它。 (默認禁用)
Referring Sites此面板僅顯示主機部分,但不顯示整個URL。請求來自的URL。
Keyphrases它報告了用於Google搜索,Google緩存和Google翻譯的關鍵字,這些關鍵字已致使您的網絡服務器。目前,它僅經過HTTP支持Google搜索查詢。請參閱`--ignore-panel`配置文件以啓用它。 (默認禁用)
Geo Location肯定IP地址在地理位置的位置。統計數據按大陸和國家分列。它須要使用GeoLocation支持進行編譯。
HTTP Status CodesHTTP請求的數字狀態代碼的值。
Remote User (HTTP authentication)這是HTTP身份驗證肯定的請求文檔的人員的用戶ID。若是文檔沒有密碼保護,則此部分將爲「 - 」,就像前一個部分同樣。除非%e在log-format變量中給出,不然不會啓用此面板。


 最後

GoAccess日誌分析工具的功能還有不少,能夠細分到統計某一天、某一個IP用戶的訪問狀況,也能夠統計某個時間段的,更能夠導出CSV表格整理彙總分析

相關文章
相關標籤/搜索