964032d16f
dashboard-api-metrics.json: v8 schema 4 面板,已在 v0.91.1 实例 test-import 验证可用。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
OpenObserve 本地部署(接口 QPS / 耗时可观测)
app-server 通过中间件采集每个接口的 QPS + 耗时 + 错误率,批量上报到这里。 设计见 ../../docs/superpowers/specs/2026-07-06-openobserve-api-metrics-design.md。
启动
cd deploy/openobserve
docker compose up -d
- Web UI:http://localhost:5080
- 登录:
admin@shaguabijia.local/Complexpass#123(见docker-compose.yml) - 数据落
deploy/openobserve/data/(已挂卷持久化;该目录已 gitignore)
让 app-server 上报
在项目根的 .env 打开观测(OBSERVE_*,账号密码与 compose 里 root 一致):
OBSERVE_ENABLED=true
OBSERVE_ENDPOINT=http://localhost:5080
OBSERVE_ORG=default
OBSERVE_STREAM=app_requests
OBSERVE_USER=admin@shaguabijia.local
OBSERVE_PASSWORD=Complexpass#123
重启 app-server,随便打几个接口。stream app_requests 首次上报自动创建,
在 UI 的 Logs → 选 app_requests 就能看到逐条请求事件(字段:method / route /
status / duration_ms / service / env)。
未开
OBSERVE_ENABLED或缺账号密码时,中间件透传、worker 不启动,整套 no-op,不影响业务。
查询(Logs 页 SQL,或建 Dashboard 面板)
各接口 QPS(1 分钟分桶,面板里再除 60 得每秒):
SELECT route, histogram(_timestamp, '1 minute') AS ts, count(*) AS cnt
FROM app_requests GROUP BY route, ts ORDER BY ts
各接口 P95 耗时(毫秒):
SELECT route, approx_percentile_cont(duration_ms, 0.95) AS p95_ms
FROM app_requests GROUP BY route ORDER BY p95_ms DESC
各接口错误率(5xx 占比):
SELECT route,
count(*) FILTER (WHERE status >= 500) * 100.0 / count(*) AS err_pct
FROM app_requests GROUP BY route ORDER BY err_pct DESC
一键导入现成仪表盘(QPS / P95 / 分位 / 错误率)
备好了 dashboard-api-metrics.json,4 个面板:各接口每分钟请求数(QPS 源)、 P95 耗时折线、P50/P95/P99 分位表、5xx 错误率表。
- UI 导入:Dashboards → 右上 Import → 选该 JSON 文件 → Import(每次导入新建,不覆盖)。
- 或 API 导入:
curl -u admin@shaguabijia.local:Complexpass#123 -H 'Content-Type: application/json' \ -X POST 'http://localhost:5080/api/default/dashboards?folder=default' \ --data-binary @deploy/openobserve/dashboard-api-metrics.json
导入后进仪表盘,右上角时间调到「最近 15 分钟 / 1 小时」、开自动刷新即可。低流量下 QPS 面板看「每分钟请求数」比「每秒」直观。
停止 / 清数据
docker compose down # 停止(保留数据)
docker compose down -v && rm -rf data # 停止并清空数据
生产部署(持久化规格、独立 ingest 账号、鉴权收紧)见 spec 第 9 节,本期不做。