前沿资讯/我的第一个开源项目|用 Docker 一键部署!支持任意 Nginx 日志的 IP 地理威胁分析工具
我的第一个开源项目|用 Docker 一键部署!支持任意 Nginx 日志的 IP 地理威胁分析工具
我的第一个开源项目|用 Docker 一键部署!支持任意 Nginx 日志的 IP 地理威胁分析工具

2025-11-17发布

📌 项目地址:https://gitcode.com/qq_32816991/GitGuard-Analyzer

🐳 Docker 镜像(阿里云): registry.cn-hangzhou.aliyuncs.com/qc123mjs/gitguard-analyzer:latest

一、🎯 背景与痛点

在日常运维 GitLab 或其他 Web 服务时,我们经常会关心:

  • 谁在访问我的服务?
  • 是否有来自异常地区或 IP 的高频请求?
  • 是否存在恶意爬虫、暴力破解、扫描等安全威胁?
  • 能否直观地看到访问来源的地理分布和趋势?

虽然像 GitLab 这样的平台自带了 Nginx 访问日志(如 gitlab_error.log​和标准访问日志),但原生并不提供 IP 地理位置分析、可视化统计和威胁排查能力。

二、🔍 项目介绍:GitGuard-Analyzer for GitLab

GitGuard-Analyzer for GitLab 是一个专为 GitLab(或任意 Nginx 服务)内置日志 打造的 IP 地理威胁分析工具,核心功能包括:

  • ✅ 基于 IP 的全球地理位置分析
  • ✅ 支持标准 Nginx 日志(含 .gz 压缩格式)
  • ✅ 提供交互式地图热力分布(Folium 可视化)
  • ✅ 支持按天/周/月多时间维度统计
  • ✅ 支持中文界面与日志处理
  • ✅ Docker 一键部署,无需复杂环境配置**

🎯 适用于:GitLab 运维、安全审计、DevSecOps、中小型企业技术负责人、Web 服务管理员

三、⚡ 核心功能特性

功能 状态 说明
🌍 全球 IP 地理位置分析 基于 https://db-ip.com 免费数据库,解析 IP 所属国家、城市、经纬度
📊 支持压缩日志分析 支持 .log​ 和 .gz 格式的 Nginx 日志
🗺️ 交互式热力图 基于 Folium 生成可交互的访问分布地图,直观展示全球访问来源
⏰ 多时间粒度统计 支持按日 / 周 / 月进行访问量聚合分析
🇨🇳 中文界面支持 完整的中文字体与界面适配
🐳 Docker 一键部署 无需本地 Python 环境,拉起即用

四、🐳 Docker 一键部署(推荐 ✅)

无需配置 Python、无需手动安装依赖,只需两步:拉取镜像、运行容器!

  1. 拉取 Docker 镜像(推荐使用阿里云镜像,国内访问快)
    docker pull registry.cn-hangzhou.aliyuncs.com/qc123mjs/gitguard-analyzer:latest

  2. 运行容器

    docker run -d
      -p 5000:5000
      -v /var/log/gitlab/nginx:/var/log/gitlab/nginx
      --name gitguard-analyzer
      registry.cn-hangzhou.aliyuncs.com/qc123mjs/gitguard-analyzer:latest
    

    📌 参数说明:

    -p 5000:5000:​将容器内的 Web 服务端口映射到宿主机,用于浏览器访问
    -v /var/log/gitlab/nginx:/var/log/gitlab/nginx:​将 GitLab 的 Nginx 日志目录挂载到容器中(核心数据输入!)
    --name gitguard-analyzer:为容器起一个易记的名字,方便管理

  3. 访问 Web 界面
    打开浏览器访问:http://你的服务器IP:5000

你将看到一个包含以下内容的 IP 威胁分析控制台:

  • 🌐 全球访问来源热力图
  • 📈 访问频率统计(IP / 地区 / 时间)
  • ⚠️ 可疑访问分析(可扩展)
  • 🕒 多时间维度聚合

五、🖼️ 使用截图

image.png image.png image.png image.png

六、🧩 源码运行 & 本地开发(可选)

如果你想自己构建镜像或修改代码,可参考以下步骤:

  1. 克隆代码 & 安装依赖
    git clone https://github.com/qc824676623/GitGuard-Analyzer.git cd GitGuard-Analyzer pip install -r requirements.txt
  2. 运行主程序
    python3 nginx_ip_geo_stats.py
  3. 访问界面
    打开浏览器访问:​http://localhost:5000

七、📂 项目结构概览

 GitGuard-Analyzer/
├── nginx_ip_geo_stats.py         # 主程序入口
├── map/
│   ├── dbip_geo.txt             # IP 地理信息文本
│   ├── dbip_index.bin           # 二进制索引(加速查询)
│   └── dbip_tobin.py            # CSV 转二进制索引工具
├── dbip-city-lite-2025-09.csv   # IP 数据库(可定期下载更新)
└── gitlab_error.log             # 示例日志(测试用)

八、🔧 支持自定义 Nginx 日志!不仅限于 GitLab

⚠️ 重要提示:虽然本项目最初是为 GitLab 的 Nginx 日志设计,但它同样适用于任何标准 Nginx / Web 服务日志!

如果你 没有使用 GitLab,但你有自己的 Nginx、Apache、API 网关、自托管 Git 服务(如 Gitea)、甚至云服务器的访问日志,只要日志中包含如下基本字段:

  • 访问者 IP
  • 访问时间
  • 请求的 URL / 资源

🔥 那么你同样可以使用本工具进行 IP 地理位置分析、威胁排查与可视化统计!

✅ 如何使用你自己的 Nginx 日志?

  1. 准备你的 Nginx 日志目录
    将你的 Nginx 日志文件(如 access.log​、error.log 或自定义日志)存放在某个目录,例如:

    /var/log/my-nginx-logs/

    或本地开发目录:

    ./my_custom_logs/

  2. 修改配置(或挂载到容器对应路径)

    (1) 方法一(推荐):修改源码中的日志目录配置

     在 `nginx_ip_geo_stats.py` 中找到如下配置:
    
     ​`LOG_DIR = "/var/log/gitlab/nginx/"  # 默认是 GitLab 的 Nginx 日志目录`
    
     将其修改为你自己的日志目录,例如:
    
     ​`LOG_DIR = "/var/log/my-nginx-logs/"  # 你的实际 Nginx 日志目录`
    

    (2) 方法二:通过 Docker 挂载你自己的日志目录
    如果你不想改代码,可以运行容器时,将你的日志目录挂载到容器内默认路径:

     ​`docker run -d
       -p 5000:5000
       -v /var/log/my-nginx-logs/:/var/log/gitlab/nginx/ \  # 挂载你的日志到容器默认路径
       --name my-ip-analyzer
       registry.cn-hangzhou.aliyuncs.com/qc123mjs/gitguard-analyzer:latest`
    

📌 如果你希望更灵活,也可以修改代码,将 LOG_DIR​ 指向其它自定义路径(比如 /mnt/custom_logs/),然后挂载你的日志到该目录。

✅ 适用场景扩展

场景 是否支持 说明
自建 Nginx 服务器 分析访问者国家、城市、高频 IP
自托管 Git 服务(如 Gitea、OneDev) 通常也是 Nginx 日志,格式兼容
API 网关 / 微服务入口 只要日志包含 IP 和访问时间
云服务器安全审计 找出异常访问、境外 IP、扫描行为
企业内网 / VPN 日志分析 分析员工/客户端访问行为

九、🤝 如何贡献 & 反馈

  • 🌟 Star 支持: 如果项目对你有帮助,欢迎前往 GitHub 点击 Star✨
  • 🐞 提交 Bug / 建议: 通过 GitHub Issues 反馈问题、需求
  • 🤝 参与开发: 欢迎提交 Pull Request,一起优化工具
  • 📧 联系作者: 有问题可通过 GitHub 或项目页联系

十、📄 总结

GitGuard-Analyzer for GitLab 是一个专注于 IP 地理位置威胁分析 + 可视化 的轻量级但功能强大的工具。它支持 Docker 一键部署,适用于 GitLab 或任意 Nginx 日志场景,能够帮助你:

  • 🔍 快速识别异常访问来源
  • 🌍 直观查看全球访问热力分布
  • 📊 按时间/地区多维度分析流量
  • 🛡️ 为 DevSecOps 和安全运维提供有力支持

🔗 项目地址:https://gitcode.com/qq_32816991/GitGuard-Analyzer

🐳 Docker 镜像(阿里云):registry.cn-hangzhou.aliyuncs.com/qc123mjs/gitguard-analyzer:latest

👋 如果你有 Nginx 日志,不妨一试!无论你是否使用 GitLab,这个工具都能为你带来价值!