GoAccess 開源日誌輕工具部署與分析

jaymarco發表於2020-09-28

1 前言

今天給大家介紹一款開源輕量化的日誌分析神器,名叫 GoAccess。它是一款基本終端的快速日誌分析工具,核心功能是能夠實時快速分析和檢視 Web 伺服器統計資訊,最主要是針對中介軟體 ACCESS 訪問日誌來分析系統的行為。而無需使用您的瀏覽器,但它能夠生成完整的,獨立的實時 HTML 報告(非常適合分析,監控和資料視覺化)以及 a JSON 和 CSV 報告。這款工具能對大日誌量檔案進行分析,降低工程師分析日誌的難度,提升問題定位效率。


2 GoAccess 介紹

GoAccess 是一個開源的實時網路日誌分析器和互動式檢視器,可以在Linux/Unix 系統中的終端或透過瀏覽器執行。它為需要動態視覺化伺服器報告的系統管理員提供快速且有價值的 HTTP 統計資訊。


3 GoAccess 功能

 快速, 實時, 毫秒/秒級更新, C 語言編寫

 僅依賴 ncurses 模組

 幾乎支援所有 Web 日誌 格式 (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等)

 簡單設定即可支援自定義格式日誌

 漂亮的終端以及 bootstrap 風格控制皮膚 (易於將 GoAccess 調整為您自己的顏色搭配和風格)

 支援 Valgrind 測試


4 GoAccess 指標

GoAccess 解析指定的 Web 日誌檔案並將統計結果輸出到 X 終端。功能如下:

5 GoAccess工具安裝

5.1 軟體安裝

1、     部署依賴包

GoAccess 軟體安裝需要依賴一些軟體包,需要提前將下面的軟體包安裝好。

yum install   glib2 glib2-devel GeoIP-devel    ncurses-devel zlib zlib-devel

yum install gcc   –y

yum -y install   GeoIP-update

2、     原始碼安裝GoAccess

這裡使用原始碼安裝 GoAccess 軟體,軟體官方下載地址 版本為例來安裝。

wget  

tar xzvf   goaccess-1.3.tar.gz

cd goaccess-1.3/

./configure --enable-utf8 --enable-geoip=legacy

make

make install

3、     GoAccess 配置變更

修改配置 /usr/local/etc/goaccess/goaccess.conf 檔案

並將以下配置項的註釋符去掉

date-format   %d/%b/%Y

time-format   %H:%M:%S

html-report-title

date-spec hr

 

皮膚使用如下幾個皮膚,將將以下幾個皮膚的註釋符去掉

ignore-panel   REQUESTS_STATIC

ignore-panel   NOT_FOUND

ignore-panel OS

ignore-panel   VIRTUAL_HOSTS

ignore-panel   KEYPHRASES

ignore-panel   GEO_LOCATION

 

在配置檔案中新增日誌模式標準

log-format %h   %^[%d:%t %^] "%r" %s %b "%R" "%u"   "%T" "%e"

 

以上GoAccess算是安裝完成……………………………………………..

5.2 應用日誌標準化配置

為了使用 GOACCESS 工具監控應用的效能情況,對使用的應用 nginx tomcat 中介軟體服務的日誌輸出進行標準化設定。

# 修改 /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"';

然後重啟 nginx 服務

最終日誌輸出格式標準內容如下                                     

5.3    GoAccess 實時更新報告

安裝與配置準備工作都已經完成後,接下來需要對報告進行實時呈現分析,採用定時指令碼方式將對被監控服務日誌進行實時更新分析並生成 html 報告。

/usr/local/bin/goaccess   /opt/nginx/logs/access.log -o /usr/local/nginx/html/monitor.html -p   /usr/local/etc/goaccess/goaccess.conf --real-time-html --daemonize

 

Nginx 日誌檔案按天自動生成

#!/bin/bash

log_files_path="/usr/local/nginx/logs/"

log_files_dir=${log_files_path}

log_files_name=(access   )

nginx_sbin="/usr/local/nginx/sbin/nginx"

save_days=30

log_files_num=${#log_files_name[@]}

for((i=0;i<$log_files_num;i++));do

mv   ${log_files_path}${log_files_name[i]}.log   ${log_files_dir}${log_files_name[i]}.log_$(date -d "yesterday"   +"%Y-%m-%d")

done

find $log_files_path   -mtime +$save_days -name "*.log" -exec rm -rf {} \; 

$nginx_sbin -s   reload

ps -ef|grep  goaccess |grep -v grep |awk '{print   $2}'|xargs kill -9

/usr/local/bin/goaccess   /usr/local/nginx/logs/access.log -o /opt/nginx/html/devopsrpt.html -p /usr/local/etc/goaccess/goaccess.conf   --real-time-html –daemonize

 

00 00 * * * /opt/logmonitor   /cut_nginx_logs.sh

 

為了能讓瀏覽器能實時的訪問日誌分析結果,需要配置一個 nginx 來訪問這個靜態 html 頁面。

#nginx 原始碼安裝

useradd -s   /sbin/nologin -M nginx

Wget

./configure   --prefix=/opt/nginx --user=nginx --group=nginx  --without-http_gzip_module

make &&   make install

修改配置檔案

/opt/nginx/conf/nginx.conf 新增配置如下

        location /

        {

              root  /opt/nginx/html/;

              expires 30d;

         }

 

5.4       GoAccess 報告分析

1 、以下是採用GoAccess分析工具對nginx中介軟體應用日誌分析結果如下:

                                             

2 、日誌分析結果報告概覽資訊

 

3 、每日獨立訪問客

每日的訪問量與每日訪客數

 

4、URL 請求檔案

顯示了訪問量最大的 URL ,這對於合理調整網站結構很有幫助。同時能分析到哪些 URL 檔案平均響應時間最長,效能最差。

 

5 、訪客主機名和 IP 地址

顯示訪問的 IP ,有時候如果某個 IP 異常飈高是需要注意的

 

6 、瀏覽器

透過瀏覽器報告可以分析哪些使用者使用的瀏覽器頻率最高,體驗最好的瀏覽器。

 

7 HTTP 狀態碼

HTTP 的狀態碼 200 302 404 500 進行聚合統計, 404 頁面不友好,如果 500 太多說明伺服器效能很慢,需要最佳化改進。

有需要的朋友可以關注我的公眾號,文章每日一更


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2724921/,如需轉載,請註明出處,否則將追究法律責任。

相關文章