Expand description
全局 metrics registry —— 供 /metrics Prometheus 端点消费
§设计
- 全局
OnceLock<Arc<Registry>>,进程初始化时Registry::install()一次 - [
audit::reject] / [audit::allow] / [audit::trade] 在写日志的同时 增 counter - [
RuntimeCounters::check_and_commit] 拒时也会通知 metrics(限额 hit) Registry::render_prometheus()输出 Prometheus text exposition 格式
§为什么不用 prometheus crate
输出格式简单(几类 counter),手写避免再引一份依赖。真要升级到更复杂的 metric(histogram / summary)再换。
§维度
所有 counter 的 label:iface(grpc/rest/ws/mcp)+ outcome
(allow/reject/success/failure/unknown)+ key_id(未配 key 时 <none>)。
维度超细会爆 cardinality,但 key_id 上限就是 keys.json 里的条数(几十级),
可接受。
Structs§
Functions§
- bump_
ws_ filtered - 便捷:记录 ws 因 scope 过滤掉的事件
- classify_
limit_ reason - 把限额 reject 的 reason 字串分类成固定小集合
- global
- 取全局 registry;未 install 时返回 None(调用方 no-op)
- install
- 安装全局 registry。只会生效第一次 install;测试场景可能多次调用, 后续 install 被忽略(保持 first-writer 语义)