網站首頁 編程語言 正文
前言
如果把運維看做是醫生給病人看病,則日志就是病人對自己的陳述,很多時候醫生需要通過對病人的描述中得出病人狀況,是否嚴重,需要什么計量的藥,什么類型的藥。所以古人有句話叫對癥下藥,這個癥就是病人的描述加醫生的判斷,在重一點的病在加上很多的化驗。在醫生看病時病人的描述和化驗單上的數據對醫生是非常重要的。同理日志在運維中的作用也是類似的,但非常不幸,日志在很多運維中被嚴重低估,直到磁盤空間不足的時候才想到,這有個大的日志文件把他刪了,這樣可以節省空間。
GoAccess
GoAccess是一個基于終端的快速日志分析器。其核心思想是實時快速分析和查看Web服務器統計信息,而無需使用您的瀏覽器(如果您希望通過SSH快速分析訪問日志,或者只是喜歡在終端中工作),終端輸出是默認輸出,但它能夠生成完整的,獨立的實時?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輸出上的樣式表。
部署方案
方案一: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頁面
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
修改文件/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 &
頁面解析
?
- 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 Codes:HTTP請求的數字狀態代碼的值。
- Remote User?HTTPauthentication:這是HTTP身份驗證確定的請求文檔的人員的用戶ID。如果文檔沒有密碼保護,則此部分將為“ - ”,就像前一個部分一樣。除非%e在log-format變量中給出,否則不會啟用此面板。
最后
GoAccess日志分析工具的功能還有很多,可以細分到統計某一天、某一個IP用戶的訪問情況,也可以統計某個時間段的,更可以導出CSV表格整理匯總分析;
原文鏈接:https://blog.csdn.net/qq_32262243/article/details/126336371
相關推薦
- 2023-10-16 el-radio單選框,取消選中
- 2023-05-22 shell腳本自動輸入用戶名和密碼的實現_linux shell
- 2022-05-27 C語言實現數獨小游戲_C 語言
- 2022-07-15 VS2022?Git提交代碼的實現_C 語言
- 2023-12-09 使用Redis實現接口防抖
- 2022-04-10 C++?反匯編之關于Switch語句的優化措施_C 語言
- 2022-11-08 goalng?結構體?方法集?接口實例詳解_Golang
- 2022-06-02 Python?turtle編寫簡單的球類小游戲_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支