Rust in Everything
基于 tokio-metrics 0.5.2

采样与导出

两条主线攒下的都是只增不减的累计值。这一部分讲怎么把它们变成「每个区间」的数字,再交给外面的监控系统。

  1. intervals:迭代器差分:TaskIntervals 第一次返回累计值、之后逐字段回绕相减;区间最大空闲靠 swap(0) 读完清零,同一个 monitor 开两个迭代器,后取样的读到 0;RuntimeIntervals 从调用时起算;cumulative() 与 intervals() 怎么选。
  2. metrics-rs 与 metrique:两个 reporter builder,默认 30 秒一次,名字加 tokio_ 前缀;metric_refs! 宏把字段写死成 Counter 或 Gauge,导出到 Prometheus 实测:次数是本区间的 gauge,均值和最大空闲是越加越大的 counter;直方图用桶的起点代表整个桶;metrique 集成只提一句。
flowchart TB
  raw["累计值:RawMetrics、tokio 计数器"] --> cum["cumulative():原样读"]
  raw --> iv["intervals():与上次做差"]
  cum --> own["自己导出:全部当 counter"]
  iv --> rep["metrics-rs reporter:Counter 加差值,Gauge 设差值"]
  iv --> log["打日志、单机判断"]
  rep --> prom["Prometheus 等导出器"]

只想会用的读者,这一部分和 TaskMetrics 与派生指标一起读就够了:前者讲每个数字量的是什么,这里讲它们导出之后变成了什么。

💬 关联讨论

发起讨论
加载中...