🐳 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、无需手动安装依赖,只需两步:拉取镜像、运行容器!
-
拉取 Docker 镜像(推荐使用阿里云镜像,国内访问快)
docker pull registry.cn-hangzhou.aliyuncs.com/qc123mjs/gitguard-analyzer:latest -
运行容器
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:为容器起一个易记的名字,方便管理 -
访问 Web 界面
打开浏览器访问:http://你的服务器IP:5000
你将看到一个包含以下内容的 IP 威胁分析控制台:
- 🌐 全球访问来源热力图
- 📈 访问频率统计(IP / 地区 / 时间)
- ⚠️ 可疑访问分析(可扩展)
- 🕒 多时间维度聚合
五、🖼️ 使用截图

六、🧩 源码运行 & 本地开发(可选)
如果你想自己构建镜像或修改代码,可参考以下步骤:
- 克隆代码 & 安装依赖
git clone https://github.com/qc824676623/GitGuard-Analyzer.git cd GitGuard-Analyzer pip install -r requirements.txt - 运行主程序
python3 nginx_ip_geo_stats.py - 访问界面
打开浏览器访问: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 日志?
-
准备你的 Nginx 日志目录
将你的 Nginx 日志文件(如access.log、error.log或自定义日志)存放在某个目录,例如:
/var/log/my-nginx-logs/或本地开发目录:
./my_custom_logs/ -
修改配置(或挂载到容器对应路径)
(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,这个工具都能为你带来价值!
