博客 / 詳情

返回

告別逐行翻日誌!這款神器一鍵可視化解析 Nginx 日誌!

大家好,我是 Java陳序員

對於運維人員、站長來説,Nginx 日誌是分析網站訪問情況的核心,但逐行翻閲、手動統計 PV/UV、排查 IP 歸屬地的過程,耗時又費力。尤其是多站點部署時,不同日誌文件切換、數據零散的問題,更是讓人效率大打折扣。

今天,給大家推薦一款開源的輕量級 Nginx 日誌分析可視化面板,告別逐行翻日誌!

關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。

項目介紹

nginxpulse —— 一款輕量級 Nginx 訪問日誌分析與可視化面板,提供實時統計、PV 過濾、IP 歸屬地與客户端解析。

功能特色

  • 輕量化部署:支持 Docker 部署,無需搭建複雜依賴環境,基於 Go 語言開發,後端高性能低消耗,搭配 SQLite 輕量化數據庫,無需額外部署數據庫服務
  • 多維度日誌分析:支持同時掛載多個 Nginx 日誌文件,自動統計 PV/UV、訪問頻次、請求狀態碼、客户端(瀏覽器/設備)、訪問時段等維度數據
  • 智能 IP 解析:IP 歸屬地按地域分類展示,可快速定位異常訪問 IP、高頻訪問區域
  • 靈活適配:支持適配非標準 Nginx 日誌格式,只需調整解析規則配置,無需修改代碼,還適配 Caddy 服務器日誌解析,一站式搞定多類 Web 服務器日誌分析

技術棧

  • 後端Go + SQLite + Ip2Region
  • 前端Vue3 + Vite + TypeScript

快速上手

Docker 部署

1、拉取鏡像

docker pull magiccoders/nginxpulse:latest

2、創建掛載目錄

mkdir -p /data/software/nginxpulse

3、運行容器

docker run -d --name nginxpulse \
  -p 8088:8088 \
  -p 8089:8089 \
  -e WEBSITES='[{"name":"Java陳序員","logPath":"/share/log/nginx/access.log","domains":["chencoding.top","chencoding.top"]}]' \
  -e ACCESS_KEYS='["key-1","key-2"]' \
  -v /data/software/nginx/access.log:/share/log/nginx/access.log:ro \
  -v /data/software/nginxpulse:/app/var/nginxpulse_data \
  magiccoders/nginxpulse:latest

參數説明

  • 8088:前端訪問端口
  • 8088:後端訪問端口
  • -e WEBSITES:指定網站列表的 JSON 數組,字段:namelogPathdomains(可選)
  • -e ACCESS_KEYS:訪問密鑰列表,為非空數組時,訪問 UI 和 API 都需要提供密鑰

4、瀏覽器訪問

http://{IP/域名}:8088

Docker Compose 部署

1、創建 docker-compose.yml 文件,並寫入如下內容:

version: "3.8"
services:
  nginxpulse:
    image: magiccoders/nginxpulse:latest
    container_name: nginxpulse
    ports:
      - "8088:8088"
      - "8089:8089"
    environment:
      WEBSITES: '[{"name":"Java陳序員","logPath":"/share/log/nginx/access.log","domains":["chencoding.top","chencoding.top"]}]'
      ACCESS_KEYS: '["key-1","key-2"]'
    volumes:
      - /data/software/nginx/access.log:/share/log/nginx/access.log:ro
      - /data/software/nginxpulse:/app/var/nginxpulse_data
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped

2、啓動運行

docker compose up -d

日誌文件掛載

  • 多日誌文件掛載

WEBSITES 的值是個數組,參數對象中傳入網站名、網址、日誌路徑。例如:

environment:
  WEBSITES: '[{"name":"網站1","logPath":"/share/log/nginx/access-site1.log","domains":["www.kaisir.cn","kaisir.cn"]}, {"name":"網站2","logPath":"/share/log/nginx/access-site2.log","domains":["home.kaisir.cn"]}]'
volumes:
  - ./nginx_data/logs/site1/access.log:/share/log/nginx/access-site1.log:ro
  - ./nginx_data/logs/site2/access.log:/share/log/nginx/access-site2.log:ro
  • 日誌目錄掛載

如果有很多個網站要分析,可以考慮將日誌目錄整體掛載進去,然後在 WEBSITES 裏去指定具體的日誌文件即可。例如:

environment:
  WEBSITES: '[{"name":"網站1","logPath":"/share/log/nginx/access-site1.log","domains":["www.kaisir.cn","kaisir.cn"]}, {"name":"網站2","logPath":"/share/log/nginx/access-site2.log","domains":["home.kaisir.cn"]}]'
volumes:
  - ./nginx_data/logs:/share/log/nginx/
  • 壓縮日誌(.gz)掛載

nginxpulse 還支持直接解析 .gz 壓縮日誌,logPath 可指向單個 .gz 文件或使用通配符。例如:

{"logPath": "/share/log/nginx/access-*.log.gz"}

功能體驗

  • 概況

  • 數據日報

  • 實時

  • 訪問明細

不管是個人站長、中小企業運維,還是個人開發,nginxpulse 都能幫你告別繁瑣的日誌分析,用最簡單的方式掌握網站訪問數據。快去試試吧~

項目地址:https://github.com/likaia/nginxpulse

最後

推薦的開源項目已經收錄到 GitHub 項目,歡迎 Star

https://github.com/chenyl8848/great-open-source-project

或者訪問網站,進行在線瀏覽:

https://chencoding.top:8090/#/

我創建了一個開源項目交流羣,方便大家在羣裏交流、討論開源項目

但是任何人在羣裏打任何廣告,都會被 T 掉

如果你對這個交流羣感興趣或者在使用開源項目中遇到問題,可以通過如下方式進羣

關注微信公眾號:【Java陳序員】,回覆【開源項目交流羣】進羣,或者通過公眾號下方的菜單添加個人微信,並備註【開源項目交流羣】,通過後拉你進羣

大家的點贊、收藏和評論都是對作者的支持,如文章對你有幫助還請點贊轉發支持下,謝謝!


user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.