概览
- 时间序列维度的数据,PromQL语言用来查询,一般通过本地监听http端口,展示面板例如grafana可以来拉取数据
- Go语言开发,生态活跃健康
- 适用于进行指标监控
查询展示
语法如下:
1 | promhttp_metric_handler_requests_total{code="200"} |
promhttp_metric_handler_requests_total为一个指标名称(name),大括号中key/value对为标签(label),一个指标名称下可以通过标签区分不同的统计,例如本例中’code’标签对应的值为’200’表示成功,值也可以为499/502/504等.
通过这个计数我们也可以计算每秒钟请求量,例如:
1 | rate(promhttp_metric_handler_requests_total{code="200"}[1m]) |
‘[1m]’表示最近1分钟内,rate函数求每秒的200个数
metric类型
Counter:单调递增的计数,只增不减,重启后重置为0.可以统计例如请求数量
Gauge:可增可减,例如温度,内存数量,同时并发的请求等
Histogram:适用于统计请求延迟或者响应包大小这类数据(request durations or response sizes)
一个直方图metric实际会保存如下几条时序数据:
1
2
3<basename>_bucket{le="<upper inclusive bound>"}
<basename>_sum
<basename>_count 等价于 <basename>_bucket{le="+Inf"}Summary:适用于统计请求延迟或者响应包大小这类数据(request durations or response sizes)
一个Summary实际保存如下几条时序数据:
1
2
3<basename>{quantile="<φ>"}
<basename>_sum
<basename>_countjob&instances
job表示同一类型的服务,instance表示具体的某个实例
job和instance会作为label由采集服务自动添加
PromQL
表达式有四种类型:
- Instant vector lable可以用”=”,”!=”,”=
1
http_requests_total{environment=~"staging|testing|development",method!="GET"}
“,”!“. - Range vector
1
http_requests_total{job="prometheus"}[5m]
- Scalar
- String