官方地址: https://goaccess.io
GoAccess
GoAccess 是一款開源的實(shí)時(shí) Web 日志分析工具,支持Nginx等多種日志格式,支持分析并導(dǎo)出HTML
1.安裝
直接通過yum安裝:
# 安裝依賴庫
yum install -y GeoIP-devel ncurses-devel
# 安裝GoAccess
yum install goaccess
修改配置文件,一般在/etc/goaccess/goaccess.conf:
time-format %H:%M:%S
date-format %d/%b/%Y
# NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
2.使用
設(shè)置語言為中文,分析指定的Nginx日志文件,并導(dǎo)出html:
LANG="zh_CN.UTF-8" && awk '$4 ~ /23\/Sep\/2024/' /www/wwwlogs/site.log | goaccess -a -c -d -p /etc/goaccess/goaccess.conf --html-prefs '{"autoHideTables":true,"layout":"vertical","perPage":20,"theme":"bright","showTables":true,"requests":{"plot":{"metric":"hits-visitors","chartType":"bar"}}}' > /www/wwwlogs/log.html
- -a 或 --agent-list:顯示訪問者使用的瀏覽器和操作系統(tǒng)信息。
- -c 或 --http-protocol:顯示 HTTP 協(xié)議的版本。
- -d 或 --no-term-resolver:不解析終端分辨率。
- -p 或 --config-file:指定 GoAccess 的配置文件路徑,這里是 /etc/goaccess/goaccess.conf。
- --html-prefs:設(shè)置 HTML 輸出的偏好設(shè)置。
3.定時(shí)導(dǎo)出
創(chuàng)建如下的腳本:
#!/bin/bash
#頁面轉(zhuǎn)換為中文
LANG="zh_CN.UTF-8"
# 定義日志文件和輸出文件的路徑
LOG_FILE="/www/wwwlogs/webapi.log"
TEMP_OUTPUT_FILE="/www/nginx/online.html"
OUTPUT_FILE="/www/nginx/report.html"
TEMP_FILE="/tmp/webapi_23sep2024.log"
# 使用 awk 篩選出2024年9月23日的日志行,并保存到臨時(shí)文件
awk '$4 ~ /23\/Sep\/2024/' "$LOG_FILE" > "$TEMP_FILE"
# 檢查臨時(shí)文件是否為空
if [ -s "$TEMP_FILE" ]; then
# 使用 goaccess 分析臨時(shí)文件
LANG="zh_CN.UTF-8" && goaccess -a -c -d -p /etc/goaccess/goaccess.conf --html-prefs '{"autoHideTables":true,"layout":"vertical","perPage":20,"theme":"bright","showTables":true,"requests":{"plot":{"metric":"hits-visitors","chartType":"bar"}}}' "$TEMP_FILE" > "$TEMP_OUTPUT_FILE"
# 檢查 goaccess 是否成功執(zhí)行并輸出結(jié)果
if [ $? -eq 0 ]; then
cp "$TEMP_OUTPUT_FILE" "$OUTPUT_FILE"
echo "報(bào)告已成功生成并保存到 $OUTPUT_FILE"
else
echo "生成報(bào)告時(shí)發(fā)生錯(cuò)誤。"
fi
else
echo "沒有找到2024年9月23日的日志數(shù)據(jù)。"
fi
# 清理臨時(shí)文件
rm -f "$TEMP_FILE"