1 时间序列
在 …(主机号)/metrics 里面是监控的各项指标
# HELP postgresql_backends_total Number of backends currently connected to database
# TYPE postgresql_backends_total gauge
postgresql_backends_total{database_name="a"} 6
HELP :是对指标进行说明(其中指标名是postgresql_backends_total)
TYPE :度量标准,表示该样本类型 (一共有四种 Count [只增不减] 、Gauge[可增可减] 、Summary、Histogram
prometheus将采集的样本数以时间序列的方式保存在内存数据库中。
样本:指标(metrics): 指标名(metrics name)以及描述当前指标特征的标签集(labelsets);
时间戳(timestap):精确到毫秒的时间戳;
样本值(value):一个float64的浮点类型数据表示当前样本的值。
指标(metrics)
格式: {
2 Metrics类型
Prometheus定义了4中不同的指标类型(metric type):Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。
Counter:只增不减的计数器(除非系统发生重置) 一般会以total为后缀
通过rate()函数获取HTTP请求量的增长率: rate(http_requests_total[5m])
Gauge:可增可减的仪表盘
侧重反应指标当前状态。
使用Histogram和Summary分析数据分布情况
3 PromQl
通过指标名称以及对应的一组标签唯一定义一条时间序列。
Promql是Prometheus内置的数据查询语言,提供对时间数据丰富的查询。
查询时间序列
直接使用监控指标名称查询,会显示该指标下的所有时间序列。
例如:promhttp_metric_handler_requests_total,(我是监控了3台虚机的redis的使用情况)
还可以通过指标进行过滤(过滤其中一个虚机的监控情况)
promQL 支持 = 和**!=**
使用 label=value
可以选择标签满足表达式的时间序列
使用 label!=value
可以根据标签排除时间序列
还支持 正则表达式定义的时间序列,使用 =~ 和 !~
范围查询 —区间向量表达式
http_request_total{}[5m]
选择最近5分钟的所有样本数据
还有其他时间单位: s - 秒 、m - 分钟、h - 小时、d - 天、w - 周、y - 年
瞬时向量或者区间向量表达式中,都是以当前时间为基准
http_request_total{} # 瞬时向量表达式,选择当前最新的数据 http_request_total{}[5m] # 区间向量表达式,选择以当前时间为基准,5分钟内的数据
可以使用时间位移,选择以过去的时间为基准
http_request_total{} offset 5m
5分钟前的瞬时样本数据
聚合操作
通过PromQL查询数据,会返回多条满足这些特征维度的时间序列。而PromQL提供的聚合操作可以用来对这些时间序列进行处理,形成一条新的时间序列
查询处理请求的所有时间序列的总量
标量和字符串
标量(scalar):一个浮点型的数字值,没有时序
字符串(string):简单的字符串