prometheus 监控磁盘容量:深入浅出监控神器Prometheus
prometheus 监控磁盘容量:深入浅出监控神器Prometheus五、PromQLPromQL是Prometheus为我们提供的函数式的查询语言,查询表达式有四种类型:直接通过指标名即可进行查询,查询结果是当前指标最新的时间序列,比如查询Gc累积消耗的时间:
对于其他指标定义方式是一样的:
var (
MyCounter prometheus.Counter
MyGauge prometheus.Gauge
MyHistogram prometheus.Histogram
MySummary prometheus.Summary
)
// init 注册指标
func init() {
// 1.定义指标(类型,名字,帮助信息)
MyCounter = prometheus.NewCounter(prometheus.CounterOpts{
Name: "my_counter_total"
Help: "自定义counter"
})
// 定义gauge类型指标
MyGauge = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "my_gauge_num"
Help: "自定义gauge"
})
// 定义histogram
MyHistogram = prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "my_histogram_bucket"
Help: "自定义histogram"
Buckets: []float64{0.1 0.2 0.3 0.4 0.5} // 需要指定桶
})
// 定义Summary
MySummary = prometheus.NewSummary(prometheus.SummaryOpts{
Name: "my_summary_bucket"
Help: "自定义summary"
// 这部分可以算好后在set
Objectives: map[float64]float64{
0.5: 0.05
0.9: 0.01
0.99: 0.001
}
})
// 2.注册指标
prometheus.MustRegister(MyCounter)
prometheus.MustRegister(MyGauge)
prometheus.MustRegister(MyHistogram)
prometheus.MustRegister(MySummary)
}
上面的指标都是没有设置标签的,我们一般的指标都是带有标签的,如何设置指标的标签呢?
如果我要设置带标签的counter类型指标,只需要将原来的NewCounter方法替换为NewCounterVec方法即可,并且传入标签集合。
MyCounter *prometheus.CounterVec
// 1.定义指标(类型,名字,帮助信息)
MyCounter = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "my_counter_total"
Help: "自定义counter"
}
// 标签集合
[]string{"label1" "label2"}
)
// 带标签的set指标值
MyCounter.With(prometheus.Labels{"label1":"1" "label2":"2"}).Inc()
其他同理。
五、PromQL
PromQL是Prometheus为我们提供的函数式的查询语言,查询表达式有四种类型:
- 字符串:只作为某些内置函数的参数出现;
- 标量:单一的数字值,可以是函数参数,也可以是函数的返回结果;
- 瞬时向量:某一时刻的时序数据;
- 区间向量:某一时间区间内的时序数据集合。
直接通过指标名即可进行查询,查询结果是当前指标最新的时间序列,比如查询Gc累积消耗的时间:
go_gc_duration_seconds_count