Kratos 暴露了三种监控接口,分别是 Counter, Gauge, Observer。
type Counter interface { With(lvs ...string) Counter Inc() Add(delta float64)}
Counter 是最简单的计数器,对外提供了Inc, Add两个方法。只能用于计数的增加。通常用于统计服务的错误数,请求qps。
type Gauge interface { With(lvs ...string) Gauge Set(value float64) Add(delta float64) Sub(delta float64)}
Gauge是个状态指示器,用于记录服务当前的状态,状态值可以随着时间增加或减少。通常用于监控服务当前的cpu使用率,内存使用量等。
type Observer interface { With(lvs ...string) Observer Observe(float64)}
Observer属于比较复杂的监控指标,对比以上两个提供了更多额外的信息,可以用于观察统计总值,数量以及分位百分比。在Prometheus中,对应了Histogram 和Summary的实现。其中Histogram 直方图用于记录不同分桶的数量。比如不同请求耗时区间的请求数,用于指示将指标保存到了多个分桶,因此Histogram几乎无开销。Summary则记录了不同分位的值,基于概率采样计算,比如90% 99% 分位耗时,由于需要进行额外的计算,因此对于服务有一定的开销。