快捷搜索:  汽车  科技

prometheus 监控磁盘容量:深入浅出监控神器Prometheus

prometheus 监控磁盘容量:深入浅出监控神器Prometheus六、Grafana可视化// 定义histogram MyHistogram = prometheus.NewHistogram(prometheus.HistogramOpts{ Name: "my_histogram_bucket" Help: "自定义histogram" Buckets: []float64{0.1 0.2 0.3 0.4 0.5} // 需要指定桶 })上报数据:MyHistogram.Observe(0.1) MyHistogram.Observe(0.3) MyHistogram.Observe(0.4)重新计算 P50,P99:桶设置的越合理,计算的误差越小。

我的指标都是不大于1的,为啥算出来的P50和P99都这么离谱呢?

这是因为Prometheus他是不保存你具体的指标数值的,他会帮你把指标放到具体的桶,但是他不会保存你指标的值,计算的分位数是一个预估的值,怎么预估呢?就是假设每个桶内的样本分布是均匀的,线性分布来计算的,比如刚刚的P50,其实就是算排在第50%位置的样本值,因为刚刚所有的数据都落在了第一个桶,那么他在计算的时候就会假定这个50%值在第一个桶的中点,他就会假定这个数就是0.5_ 2.5,P99就是第一个桶的99%的位置,他就会假定这个数就是0.99 _ 2.5。

导致这个误差较大的原因就是我们的bucket设置的不合理

重新定义桶:

// 定义histogram MyHistogram = prometheus.NewHistogram(prometheus.HistogramOpts{ Name: "my_histogram_bucket" Help: "自定义histogram" Buckets: []float64{0.1 0.2 0.3 0.4 0.5} // 需要指定桶 })

上报数据:

MyHistogram.Observe(0.1) MyHistogram.Observe(0.3) MyHistogram.Observe(0.4)

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(1)

重新计算 P50,P99:

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(2)

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(3)

桶设置的越合理,计算的误差越小

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(4)

六、Grafana可视化

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(5)

猜您喜欢: