统计维度
统计维度页把总览指标拆成可解释的维度:用户、群组、群消息、聊天室、聊天室消息、消息与在线。每个维度都标明数据来源与口径;聊天室消息因不落盘而固定为 0,并在 notes 中如实说明。
概念
| 维度 / 字段 | 口径 | 来源 |
|---|---|---|
users | 应用下注册用户数 | 用户表计数 |
groups | 群与超级群总数 | 群表计数 |
groupMessages | 落盘的群消息条数 | 消息池按 {app}:g:* 聚合 |
chatrooms | 活跃聊天室数 | 聊天室表计数 |
chatroomMessages | 聊天室消息条数(固定 0) | 聊天室消息为 ephemeral 广播,不落盘 |
messages | 落盘消息总数(含单聊/群/系统) | 消息池计数 |
online | 当前在线用户数 | 连接表去重 |
trend[] | 按天 dau/messages/groupMessages/chatroomMessages/onlinePeak/errors | 内存按 UTC 日聚合 |
days支持 1–90,默认 7;日期键为 UTCYYYY-MM-DD。- DAU 按当日活跃去重,单应用单日上限 10000 条去重记录;超出后不再新增。
- 错误率 =
errors / (messages + errors),是演示级近似,不等同于 HTTP 5xx 比例。 - 统计为单实例内存聚合;多实例部署不合并,重启后从快照恢复。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#stats(tab#stats:统计)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 选择窗口
按排障或运营周期设置
days;短期波动看 1–3 天,容量规划看 30–90 天。 - 读总量
先看
totals,确认各维度量级;聊天室消息为 0 属预期。 - 读趋势
对比 DAU、消息量与在线峰值;只有在线峰值下降通常是连接层问题。
- 交叉核对
用全局
/stats与 Open APIstats.app交叉核对单应用口径。
参数表
| 操作 | 方法与路径 | 参数 |
|---|---|---|
| 维度统计 | GET /api/admin/apps/{appkey}/stats/dimensions | days(1–90) |
| 应用概览 | GET /api/admin/apps/{appkey}/metrics/overview | — |
| 全局统计 | GET /api/admin/stats | — |
| 全局趋势 | GET /api/admin/stats/trend | days、appkey |
| Open API 统计 | POST /im/v2/stats/app、/stats/trend | {days?} |
示例
近 30 天维度统计
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/stats/dimensions?days=30" \
-H 'X-Admin-Secret: dev-admin'
# 只取总量与昨天趋势
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/stats/dimensions?days=7" \
-H 'X-Admin-Secret: dev-admin' | jq '{totals, notes, last: .data.trend[-1]}'常见问题
和「概览仪表盘」有什么区别?
概览强调健康判断与全局对比;本页强调每个维度的口径与趋势字段,便于解释数据。
聊天室消息为什么是 0?
聊天室消息只对在线成员广播、不落盘,无法按天统计;服务端如实返回 0 并写 notes。
群消息和消息总量是什么关系?
消息总量包含单聊、群、系统通知等所有落盘消息;群消息是其中一个子集。
能按用户/群下钻吗?
不能。统计只到应用维度;下钻请用消息检索、群详情或连接明细。
数据能保留多久?
随服务端状态快照保留;没有独立 TTL 或数据仓库,长期分析请自行导出落库。