Module metrics

Module metrics 

Source
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§

Registry

Functions§

bump_ws_filtered
便捷:记录 ws 因 scope 过滤掉的事件
classify_limit_reason
把限额 reject 的 reason 字串分类成固定小集合
global
取全局 registry;未 install 时返回 None(调用方 no-op)
install
安装全局 registry。只会生效第一次 install;测试场景可能多次调用, 后续 install 被忽略(保持 first-writer 语义)