匹配标签值时可以是等于,也可以使用正则表达式。总共有下面几种匹配操作符:
- =:完全相等
- !=: 不相等
- =~: 正则表达式匹配
- !~: 正则表达式不匹配
Prometheus的4种数据类型如下。·瞬时向量(Instant vector):一组时间序列,每个时间序列包含单个样本,它们共享相同的时间戳。也就是说,表达式的返回值中只会包含该时间序列中最新的一个样本值。·区间向量(Range vector):一组时间序列,每个时间序列包含一段时间范围内的样本数据。·标量(Scalar):一个浮点型的数据值,没有时序。可以写成[-](digits)[.(digits)]的形式,比如-3.14。需要注意的是,使用表达式count(http_requests_total)返回的数据类型依然是瞬时向量,用户可以通过内置函数scalar()将单个瞬时向量转换为标量。·字符串(String):一个简单的字符串值。字符串可以用单引号('')、双引号("")或反引号(``)来指定。因为Prometheus是基于Go语言编写的,所以它与Go语言有着类似的转义规则[1],比如在单引号('')或双引号("")中,可以使用反斜杠()来表示转义序列,后面可以接a、b、f、n、r、t、v或(分别代表响铃、退格、换页、换行、回车、水平制表、反斜杠),特殊字符可以使用八进制( nn)或者十六进制(xnn、unnnn和Unnnnnnnn)。但是与Go语言不同的是,Prometheus中的反引号(``)并不会对换行符进行转义。
指标的格式:
其中,Metric Name参数又可以表达成 {_name_="http_requests_total"}
常用PromQL语句:
rate(xxxxx{idc="shanghai",instance=~"$instance",isp="BGP",item="http_code_200",job="xxxx"}[10m]) 收集xxxxx指标内匹配中括号参数的10分钟内的数据,一秒一次。