下面均以prometheus_http_requests_total为例子,即prometheus的HTTP请求数,在机器上装prometheus server即可。
本篇简述prometheus的常用检索规则与工具:瞬间向量选择器、区间向量选择器与时间位移选择器。
瞬间向量选择器
瞬间向量选择器:允许选择一组时间序列和给定时间戳的每个样本值的单个样本值。比如检索prometheus的HTTP请求数如下图:
prometheus_http_requests_total
指标名字后使用{},以逗号分隔标签列表进一步过滤这些时间序列。比如检索prometheusHTTP请求数且job标签为prometheus,instance实例标签为本地:9090,如下图
prometheus_http_requests_total{job="prometheus", instance="localhost:9090"}
可以使用标签匹配运算符:
= | 选择与提供的字符串完全相同的标签 |
!= | 选择与提供的字符串不相同的标签 |
=~ | 选择正则表达式与提供的字符串(或子字符串)相匹配的标签 |
!~ | 选择正则表达式与提供的字符串(或子字符串)不匹配的标签 |
如下检索实例不为本机:9090的:
prometheus_http_requests_total{instance!="localhost:9090"}
标签模糊匹配,“.*”属于正则表达式匹配任意及任意长字符,可配合“=~”和“!~”。比如
prometheus_http_requests_total{instance=~"localhost:.*0"}
比如在这里与prometheus_http_requests_total{instance!="localhost:9090"}等价的:
prometheus_http_requests_total{instance!~"localhost:.*0"}
可以使用内置的__name__标签指定监控指标名称。比如能检索到prometheus_http_requests_total:
{__name__=~"prometheus_http_requests_.*"}
区间向量过滤器
与瞬时向量过滤器的工作方式类似,差异在于需定义时间选择的范围,通过时间范围选择器“ []” 进行定义,以指定应为每个返回的区间向量样本值中提取多长的时间范围。
时间范围通过数字来表示,单位可以使用以下其中之一的时间单位:
s - 秒
m - 分钟
h - 小时
d - 天
w - 周
y - 年
简单而言就是只要近一段时间范围内的数据,比如1分钟内prometheus的HTTP请求次数:
prometheus_http_requests_total[1m]
时间位移操作
前面的瞬间向量过滤器或区间向量过滤器,均以当前时刻为时间结束点,如果我要的是之前某个时间点的。就需要时间位移操作。
位移操作的关键字为“offset”,需紧跟在选择器之后。
比如查前100分钟前的prometheus的HTTP请求总数:
prometheus_http_requests_total offset 100m