GoAccess請求監控

貳拾~發表於2023-02-23

簡介

GoAccess是一款開源的實時web日誌分析器和互動式檢視器,用於視覺化檢視HTTP統計資訊,可以系統的終端上執行,也可以透過瀏覽器執行;

本文透過使用GoAccess分析Nginx的日誌檔案,從而統計HTTP的請求情況;

準備

當前伺服器:Ubuntu 22.04.1 LTS

本文是基於Docker容器,所以先在Docker安裝Nginx(Nginx安裝

思路

首先Nginx會產生日誌檔案,GoAccess就是利用這個日誌檔案的資訊來分析、統計HTTP資訊,然後會生成一個視覺化報表,我們會將這個報表替換掉Nginx的index.html歡迎頁面,從而直接展示視覺化報表,所以這裡的Nginx要對映html檔案到宿主機,同時Goaccess的輸出報表的檔案也對映到此目錄下,且名稱為index.html;

啟動Nginx

docker run -d --name nginx -p 8801:80 -v /opt/nginx/html:/usr/share/nginx/html -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -v /opt/nginx/conf/conf.d:/etc/nginx/conf.d nginx

首先我們會啟動Nginx,同時做好卷對映,Nginx相關檔案都放在/opt/nginx/目錄下;

/opt/nginx/html 對應容器中路徑 /usr/share/nginx/html,目前是Nginx歡迎頁,後面會用來存放日誌分析後的視覺化報表頁面

/opt/nginx/conf/nginx.conf對應容器中路徑 /etc/nginx/nginx.conf,是Nginx的配置檔案

/opt/nginx/logs對應容器中路徑/var/log/nginx,Nginx的日誌檔案,後面要傳遞給GoAccess做為分析日誌源

image-20230223155614607

image-20230223155626903

image-20230223160044864

到這Nginx就啟動起來了,記住這個index.html頁面與access.log檔案,後面會將index.html替換,而access.log會被用來做分析,下面安裝配置GoAccess。

啟動GoAccess

搜尋

docker search GoAccess

image-20230223160443545

拉取

docker pull allinurl/goaccess

image-20230223160638422

配置

之前說過要對映配置檔案,所以我們配置下GoAccess的日誌格式,這個很重要,必須對應Nginx的日誌的格式來匹配,可以看看官方文件。預設的Nginx日誌格式如下:

image-20230223161539447

知道了Nginx的日誌格式,那麼我們需要將GoAccess的匹配引數與之對應,參考

  • %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 請求所花費的時間,單位秒
  • %^ 忽略這一欄位

所以得出的配置檔案為:

log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
date-format %d/%b/%Y
time-format %H:%M:%S

啟動

docker run --restart=always -d -p 7890:7890 -v /opt/goaccess/data:/srv/data -v /opt/nginx/html:/srv/report -v /opt/nginx/logs:/srv/logs --name goaccess allinurl/goaccess --no-global-config --config-file=/srv/data/goaccess.conf --output=/srv/report/index.html --log-file=/srv/logs/access.log --real-time-html

然後啟動GoAccess,也做好卷對映,相關檔案在/opt/goaccess/下,

/opt/goaccess/data對應容器中路徑/srv/data,是GoAccess的配置路徑

/opt/nginx/html對應容器中路徑/srv/report,用來存放視覺化報表,由--output引數決定

/opt/nginx/logs對應容器中路徑/srv/logs,這裡是將Nginx的產生的日誌檔案路徑對映到goaccess容器,對日誌做分析

GoAccess引數--config-file設定為/srv/data/goaccess.conf,這裡的/srv/data對映了宿主機/opt/goaccess/data;引數--output設定為/srv/report/index.html,這裡的/opt/nginx/html又對映到nginx容易,所以nginx可以直接訪問這個html頁;

注意配置檔案一定不能弄錯,不然就會是這樣,一直重啟,這是因為還沒有將配置檔案設定好,配置檔案我們對映了opt/goaccess/data,只需要在此目錄下建立好goaccess.conf並配置格式即可;

image-20230223162601264

由於這裡已經啟動了,目錄已經自動建立好了,沒啟動前還是乖乖建立目錄、建立檔案;這裡只需要建立檔案了;

image-20230223164531333

開啟對映的ip地址檢視是否配置成功,如果沒啟動的話大機率是配置檔案弄錯了,多試著改幾次配置檔案即可;

相關文章