产品概览
evstats(墨松事件统计)是一套自己部署的事件统计:用 SDK 把页面浏览和业务事件收进你自己的 ClickHouse,再用管理界面、Agent 对话和 OpenAPI 三种方式把同一套数用起来。
一句话
一个 evstats 二进制,加上 ClickHouse 和 Redis,就有了流量、页面、用户、事件、行为五组分析,外加看板、会查表的 Agent 和只读的 OpenAPI。全部功能在同一个开源版本里(Apache-2.0),没有授权开关,也没有官方 SaaS。
evstats


四种用法
四种用法用的是同一个项目、同一张事件表、同一个统计实现,所以数字处处对得上。
1. 管理界面看数
给运营、产品、分析人员用。浏览器打开 evstats,左边是分析菜单和看板,右边是图和表。
- 流量、页面、用户、事件、行为五组,三十多个分析页;日期按项目时区,默认不抽样。
- 日期、对比上一段、属性筛选都写在地址栏里,刷新、分享、存成书签都是同一张图。
- 每张图都能切成表、导出 CSV、加入看板;每个指标名旁边都有口径说明。
- 中英文、浅色深色、命令面板(
⌘K可以用拼音首字母找页面)。
evstats

2. Agent 对话问数
用中文提问,例如「注册之后,用户卡在哪一步?」。Agent 调用的是和图表相同的统计查询,模型不写 SQL。
- 每次查询在对话里是一张卡片,卡片里是同一查询的小图;点「在 Stats 打开」就是对应的分析页,条件都带上。
- 项目由会话决定,模型改不了;撤掉权限立即生效;每人每天有提问上限。
- 兼容 OpenAI Chat Completions 接口,需要支持工具调用和流式输出,模型由你配置。
- 任何一张图表的菜单里都有「问 Agent」,把当前模块和条件作为上下文。
evstats

详见 Agent 问数。
3. OpenAPI 取数
给业务系统、BI、外部 Agent 用。/api/v1 只读,契约是 OpenAPI 3.0.3,和服务返回的 /openapi.json 是同一份文件。
- 参数名、返回的数据形状和管理界面完全相同,命中同一份结果缓存。
- 接口密钥(
evs_xxx)属于人:能看的项目和这个人在后台的权限一样,撤权立即生效。 - 每把密钥全集群每分钟 60 次;没有写接口,也不提供导出 CSV 和实时访问。
evstats

详见 OpenAPI、API 参考、给外部 Agent 用。
4. SDK 采集数据
- Web SDK 两行代码接入:页面浏览、单页路由、点击、停留自动采集,业务事件用
evstats.track()自己埋。 - Go、Java SDK 给服务端埋点(支付回调、后台任务);App、小程序按 HTTP 协议 直接发,邮件和无脚本环境用 像素。
- 批量上报沿用 Segment HTTP API 的字段,预置事件沿用神策的命名;已经按这两套习惯埋过点的团队,改的是上报地址和密钥。
- 接入检查实时显示收到了什么、哪个 SDK 发的、丢弃了多少、为什么丢。
evstats

适合的场景
| 场景 | 常用的分析 |
|---|---|
| 官网、文档站、内容站 | 流量来源、受访页面、入口页与退出页、站内外搜索词、热力图 |
| SaaS 产品 | 注册转化漏斗、留存、活跃用户、用户画像、A/B 实验、归因 |
| 电商与活动页 | 渠道(UTM)、转化漏斗、归因、会话回放 |
| 内部系统与工具 | 事件统计、自定义分析、看板,用 OpenAPI 嵌进自己的后台 |
| 数据不能出境或不能交给第三方 | 数据在自己的 ClickHouse,访客 IP 用离线库在本机解析 |
不适合的情况见 为什么是 evstats。
由哪几部分组成
| 部分 | 做什么 |
|---|---|
evstats | 一个二进制、一个进程:采集、入库、统计、Agent、OpenAPI,管理界面也打在里面。镜像 ghcr.io/mosongcc/evstats |
| ClickHouse | 存全部数据:事件、聚合,以及账号、项目、配置、看板、操作日志 |
| Redis | 采集队列、登录会话、限流、验证码、查询结果缓存。多台进程共用一个 |
| SDK | Web、Go、Java;其它平台按 HTTP 协议直接发 |
组件之间怎么配合、数据怎么流动,见 系统架构。