管理员在网站侧栏打开「管理工作台」,使用现有管理员访问密钥连接后,默认进入「访问与 MCP 统计」。可选择今日、近 7 天、近 30 天,统一使用北京时间。公开网页与 MCP 不提供统计查询接口,令牌只保存在当前管理页面内存。
| 指标 | 记录内容 | 解释边界 |
|---|---|---|
| 页面浏览 PV | 首次加载与公开页面切换 | 每五分钟内容刷新不再计一次;禁用 JavaScript、阻止上报或网络失败会漏计 |
| 匿名会话 | 当前浏览器标签页内的随机标识,30 分钟无活动后更换;后端存 HMAC 摘要 | 不是人数,也不是跨设备 UV;每日去重会话不能直接相加 |
| 内容与链接点击 | 公司、原文或事件打开、外链、MCP 复制按钮、RSS 查看/复制按钮 | 点击或复制尝试,不证明阅读完成、剪贴板写入成功或 MCP 安装成功 |
| MCP 工具执行 | 服务端真正执行的五个注册工具,成功/错误、平均/P95 耗时 | 握手、工具发现、传输失败、参数校验拒绝不算已执行工具;调用数不是用户数 |
| 访问来源 | 浏览器提供的来源域名 | 来源缺失不证明用户手工输入地址;不会保存完整来源 URL 或搜索词 |
网页默认仅汇总 User-Agent 规则归为浏览器且未标记测试的事件;自动化与未知来源单列排除数。此分类是启发式,不能保证识别全部机器人。MCP 则包含正常的 AI 自动化客户端,单独排除测试调用。
数据库迁移 016 建立 usage_analytics_state、usage_web_events、usage_mcp_calls。collected_since 表示该库统计机制建立时间,不会生成此前的流量。没有记录时展示零与「尚无记录」,错误率/耗时无分母时显示「—」。
/api/telemetry是有大小、字段、页面路径、来源与配额限制的同站点 POST;event_id去重,成功接收入库后返回 202。/api/admin/analytics?days=1|7|30在数据库访问前检查管理员凭证,响应Cache-Control: no-store。- MCP 通过 Worker
waitUntil异步写入;统计失败不会改变工具返回,运行日志只输出固定analytics_write_failed类别。 - 应用统计不保存原始 IP、User-Agent、搜索内容、工具参数、提示词、完整来源链接或表单字段;浏览器 DNT/GPC 信号会停止网页采集。Cloudflare 自身的基础设施日志属于独立的运行监控。
- 使用独立 Worker secret
ANALYTICS_SALT做 HMAC;未配置时仅为兼容已有环境使用管理员密钥。更换盐后旧摘要无法与新摘要关联。 - 明细保留 90 天,每日北京时间 08:00 Cron 清理;统计表同时进入既有加密备份和恢复计数检查。备份保留期 7 天,已清理数据可能在此期间仍存在于旧密文备份。
浏览器从 ?analytics_test=1 进入;本地预览自动标记测试。MCP 验收使用 X-BioAI-Analytics-Test: 1。这些数据可以验证采集而不进入正常使用指标。
运行:
BIOAI_TEST_LOCAL=1 npm test --prefix cloudflare/site
node --test tests/analytics_ui.test.cjs
.venv/bin/python scripts/analytics_acceptance.py --local生产验收由实现者在已有授权环境执行,脚本从忽略的私有配置读取管理员凭证,报告不含凭证、会话标识或用户行为明细。验收流量不会被写成真实增长。
网页访问来源与工具调用量已经具备独立口径;搜索曝光、搜索词排名、搜索结果点击需要站长平台的实际报告,不能由本站 PV 倒推。Google Search Console 验证、IndexNow 回执与内容入口见 搜索建设说明。