网站访问监测服务
从 Nginx 访问日志汇总流量、来源渠道与 IP 地区,在统计后台和地球大屏中查看访问动态。前端、API、日志采集与 IP 库更新由同一服务提供。
SHA256 校验值 · 版本说明与测试范围 · IP 数据格式及更新
当前为候选测试版本。SQLite、MySQL 集成与 IP 更新自动化测试已通过;Linux systemd 安装和 Docker 运行尚未完成端到端验证,建议先在测试环境验收。
访问分析与大屏
- 访问趋势、页面排行、来源渠道与请求记录。
- IP 地区展示、爬虫及异常访问特征分类。
- 地球大屏显示有定位结果的访问 IP。
- 认证保护,支持手机查看。
分类结果是规则判断,不能直接认定攻击者身份;无定位数据的 IP 保留在列表中。
轻量运行
- 默认 SQLite;可配置 MySQL 8。
- 分批导入、偏移续读、查询缓存及资源上限。
- 日志保留策略、SQLite 备份和健康检查。
- 地图资源本地加载,无需外部地图接口。
每个数据库运行一个采集服务。MySQL 模式需要单独安排数据库备份。
从访问记录,了解网站的实际表现
智叟云集网站访问监测服务面向企业官网、内容站点和自建业务网站。系统读取服务器上的 Nginx JSON 访问日志,将分散的请求记录整理成可查询的统计结果,让运营和技术人员围绕同一份访问数据开展分析。
企业官网与获客运营
查看产品介绍、API 文档、技术文章和下载入口的访问情况,识别用户常进入的页面,并结合来源渠道判断哪些内容更值得持续维护。已有咨询点击埋点接入后,可进一步观察咨询入口的点击次数。
内容发布与自然流量观察
按日期查看访问趋势、热门页面及搜索引擎来源,观察新文章发布后的访问变化。来源识别依赖请求携带的信息,不能据此保证获得搜索关键词,也不能直接推算搜索排名。
技术运维与异常排查
从 IP、请求路径、状态码、访问频率和客户端特征查看异常流量,辅助定位重复请求、扫描行为和高错误率访问,再结合服务器日志进一步核查。
团队展示与日常巡检
通过全球访问态势大屏展示地区分布与新增采集记录,通过运行状态查看采集进度、内存、磁盘和备份情况。桌面大屏用于集中观察,手机页面用于随时查阅。
每一类数据,都有明确的观察用途
流量与页面
页面浏览、独立 IP 和全部请求分别反映不同角度的访问情况。独立 IP 不等于独立用户:同一网络下可能有多位访客,一个访客也可能使用不同网络。热门页面帮助识别内容关注度,趋势图用于比较不同时段的变化。
来源与入口
区分直接访问、站内跳转、搜索引擎和外部网站,并查看具体来源及进入页面。没有来源字段的访问可能来自手动输入、收藏夹、二维码或应用内跳转,应按“来源未知或直接访问”理解。
IP 地区与访问特征
结合本地地区库展示国家或地区、城市等已有信息,并按规则识别爬虫、工具和疑似风险请求。地区结果是近似定位,无法表示个人的精确位置;分类也可能受到代理、共享出口和客户端标识变化影响。
服务运行与备份
运行状态用于查看服务是否持续采集、数据是否更新,以及当前资源使用情况。SQLite 模式提供本地备份,MySQL 模式由管理员安排数据库备份;本地备份仍需结合异机备份满足恢复需要。
从日志到统计的处理流程
- 接入日志:为 Nginx 配置文档提供的 JSON 日志格式,设置日志读取权限与站点域名。
- 增量采集:服务记录读取位置,分批处理新增日志,减少重复读取带来的开销。
- 整理入库:提取时间、IP、路径、来源和响应信息,写入 SQLite 或 MySQL。
- 查询汇总:后台按条件查询统计接口,结合缓存展示趋势、来源和明细。
- 可视化展示:地球大屏展示已有定位结果的 IP,闪烁对应新增采集记录,并可查阅访问明细。
大屏展示的是日志采集后的访问态势,并非当前在线人数。网站通过 CDN 或前置代理提供服务时,需要先正确配置可信代理和真实客户端 IP,才能避免将代理节点误当成访客。
系统界面展示
访问分析、全球访问态势与系统运行状态。以下为界面截图,统计数值对应截图时刻。

访问分析与来源统计
查看原图
全球访问态势与 IP 地球大屏
查看原图
IP 明细与系统运行状态
查看原图选择部署方式
安装包提供代码、前端资源、配置示例和部署文档。默认使用 SQLite,适合希望减少独立组件的部署;已有 MySQL 运维体系的团队可选择 MySQL 8。两种模式切换不会自动迁移历史数据,迁移前需安排备份和数据核验。
Linux 原生服务
适合已有 Nginx、Python 3.11+ 的服务器。安装脚本建立 systemd 服务,配置管理员账号、日志路径和站点域名后启动。
sudo bash deploy/install.sh sudoedit /etc/zhisou-monitor.env sudo systemctl restart zhisou-monitor
Docker Compose
适合已安装 Docker Compose 的环境。提供 SQLite 默认配置和独立 MySQL 组合配置,端口仅映射到本机。
cp .env.example .env # 编辑账号、密码、域名和日志目录 docker compose up -d --build
前端与接口通过 Nginx 的 /monitor/ 路径代理至本机 4188 端口;部署文档包含日志格式、权限、HTTPS、备份及回滚步骤。CentOS 7 / Python 3.6 不在支持范围内。
每周更新 IP 地区库
配置授权的 HTTPS 数据源后,服务按七天间隔更新。下载经过格式、范围及可选 SHA256 校验,校验通过后原子替换,并保留上一版。失败时继续使用现有数据库并记录状态,支持离线导入。
安装包不包含生产访问记录、账号密钥或第三方 IP 数据库。当前地区导入支持 IPv4;IPv6 请求可记录。应用授权与商业使用条款请联系发布方确认。
技术说明
以下说明对应安装包 1.0.0-rc.1。服务采用 Python 3.11+,同一进程提供管理页面、JSON 查询接口、日志采集和地区库更新调度;前端采用 HTML、CSS、JavaScript,地球展示使用随包提供的 Three.js 资源。运行时无需 Node.js 或 Redis。
服务架构与访问路径
网站请求 → Nginx → JSON 访问日志
↓ 增量读取
Python 监测服务
├─ SQLite / MySQL:访问记录与采集位置
├─ 本地 IP 地区库:地区查询
└─ JSON API + 管理页面 + 地球大屏
↑
管理员浏览器 → HTTPS Nginx /monitor/ → 127.0.0.1:4188Nginx 处理公网 HTTPS,服务默认仅监听本机。代理剥离 /monitor/ 前缀后转发到应用。页面和统计接口使用应用内 Basic 认证,公网访问必须通过 HTTPS;/healthz 为不含详细统计的免认证存活检查。
采集、存储与资源控制
- 增量读取:保存日志文件读取位置,普通日志每文件每轮最多处理 5,000 个完整行,每轮最多扫描 128 个匹配文件,按 500 条分批写入。
- 重复控制:使用请求标识进行去重;日志需包含规范的时间、IP、请求路径和状态等字段。压缩历史日志导入默认关闭。
- 数据库:默认 SQLite,支持 MySQL 8 与 PyMySQL 驱动。IP 地区库在两种业务数据库模式下均使用本地 SQLite 文件。
- 查询限制:默认 4 个请求工作线程、30 秒查询缓存,缓存条目有上限;保留周期默认 30 天,可按环境调整。
- 大屏范围:最多展示 2,000 个 IP,超出时提示截断;未定位 IP 留在记录中,不使用虚构坐标。
- 运行方式:每个数据库使用一个采集进程。当前不提供多节点采集协调或自动故障切换。
统计接口
以下为默认 Nginx 代理后的访问路径,返回 JSON,并要求管理员认证。这些是网站访问监测服务的接口,与 GEO AI 监测业务接口分别使用。
GET /monitor/api/summary?date=YYYY-MM-DD- 指定日期的访问汇总。
GET /monitor/api/trend?days=14- 按天统计的访问趋势。
GET /monitor/api/sources?date=YYYY-MM-DD- 访问来源与渠道统计。
GET /monitor/api/requests?date=YYYY-MM-DD&limit=100&offset=0- 分页查询请求记录,可附加 q 搜索和 status 状态筛选。
GET /monitor/api/ips?date=YYYY-MM-DD&limit=200- IP 统计与分类结果。
GET /monitor/api/globe- 地球大屏数据。
GET /monitor/api/operations- 服务资源、采集及备份状态。
GET /monitor/api/health- 受认证保护的数据库与采集健康信息。
命令行示例使用占位域名,执行时输入自己的管理员密码:
curl --fail --user YOUR_ADMIN_USER \ 'https://YOUR_DOMAIN/monitor/api/trend?days=14'
关键配置示例
原生服务由 systemd 读取环境文件,Docker 由 Compose 加载配置。应用不会自动读取任意工作目录下的 .env。以下为部分配置,完整字段见安装包中的 .env.example:
YMING_BIND=127.0.0.1 YMING_PORT=4188 YMING_BASE_PATH=/monitor/ YMING_SITE_HOSTS=example.com,www.example.com YMING_LOG_PATTERN=/var/log/nginx/access.json* YMING_DB_BACKEND=sqlite YMING_RETENTION_DAYS=30 YMING_WORKERS=4 YMING_CACHE_SECONDS=30 YMING_TIMEZONE=Asia/Shanghai
另需填写管理员账号和独立强密码。选择 MySQL 时配置 MYSQL_HOST、MYSQL_PORT、MYSQL_USER、MYSQL_PASSWORD 和 MYSQL_DATABASE;数据库账户、备份与连接权限由部署方管理。
地区库更新与故障恢复
服务内部调度地区库更新,成功更新后间隔七天再次执行,失败后间隔一天重试。下载设置大小和超时限制,验证数据范围及格式后构建临时库,再原子替换并保留旧版。未配置数据源时不发起网络更新,也无需额外安装 cron 定时任务。
SQLite 本地备份、systemd 或容器重启策略用于日常恢复,不等同于跨服务器容灾。升级前需备份配置、数据库和地区库;涉及数据库结构变化时,回滚代码还需核对并恢复匹配的数据版本。
技术资料与验证范围
当前通过 22 项 SQLite 与地区库自动化测试,以及 6 项隔离 MySQL 集成测试;安装脚本和前端脚本通过语法检查。Linux 整机安装、Docker 运行及 ARM64 尚未完成端到端验证,部署方应在实际环境验证日志接入、认证、查询和备份恢复。
接入前常见问题
需要在每个页面安装统计代码吗?
基础访问统计来自 Nginx 日志,不要求每个页面嵌入脚本。按钮点击等页面内交互需要单独接入埋点,日志本身无法判断用户点击了哪个按钮。
能查到访客搜索了什么词吗?
只有请求实际携带相关信息时才有分析依据。搜索引擎或浏览器可能不提供完整来源及关键词,系统不会将推测词作为真实搜索词展示。
系统会自动封禁疑似攻击 IP 吗?
当前服务用于统计和排查,风险标签为规则初筛结果,不提供自动封禁。是否限制访问应结合实际请求、业务需求与已有安全措施判断。
数据保存在哪里?
访问数据保存在自行部署的 SQLite 或配置的 MySQL 数据库中,IP 地区查询使用本地数据库。管理员可按业务需要配置保留周期,并安排备份、权限管理和磁盘容量检查。
轻量化是否意味着任何流量都能处理?
系统通过增量读取、批量写入、缓存和资源限制控制开销,实际承载能力仍受日志规模、查询范围和服务器配置影响。上线前应使用自身日志验证采集延迟、查询速度和资源占用。
下载后如何开始?
先阅读安装文档,选择部署方式,配置管理员账号、日志路径和站点域名,再配置 HTTPS 代理。生成一次测试访问,确认统计记录、来源及 IP 正确后,按需启用地区库更新和备份。
获取部署与接入支持
准备好服务器系统版本、Nginx 日志格式、是否经过 CDN、预计日志量及数据库选择,便于沟通部署方案。可围绕访问分析、渠道统计、IP 地区库与大屏展示确认接入需求。