采样与导出
两条主线攒下的都是只增不减的累计值。这一部分讲怎么把它们变成「每个区间」的数字,再交给外面的监控系统。
- intervals:迭代器差分:
TaskIntervals第一次返回累计值、之后逐字段回绕相减;区间最大空闲靠swap(0)读完清零,同一个 monitor 开两个迭代器,后取样的读到 0;RuntimeIntervals从调用时起算;cumulative()与intervals()怎么选。 - 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 与派生指标一起读就够了:前者讲每个数字量的是什么,这里讲它们导出之后变成了什么。
💬 关联讨论
发起讨论加载中...