美文网首页Prometheus
Prometheus查询语法学习总结[类翻译:)]

Prometheus查询语法学习总结[类翻译:)]

作者: moneyoverf1ow | 来源:发表于2019-01-18 15:10 被阅读50次

    ps: 该文章会持续更新,如有理解错误,有劳指正

    I.表达式语言的数据类型

    prometheus存储的是时间序列,包含了timestamp,metric name,label,value等。timestamp类似于主键,时间序列是按timestamp存储的。

    标量(Scalar)

    1. 概念

    就是一个浮点数

    字符串(String)

    1. 概念

    字符串

    瞬时向量(instant vector)

    1. 概念

    在同一时刻的包含单个样本的一组时间序列。

    2. selector使用

    用metric name查询,返回数据库的当前时刻的所有包含这个metric name的时间序列。
    例:http_requests_total
    这个查询会返回http_requests_total{label1="xxx",label2="xxx"} value这种格式的数据库当前时刻的时间序列。这里的label是区分包含同样metric name序列的标识,可以理解为这个指标下时间序列的不同维度。
    tip:这里有一个等价写法,用一个内部的label,叫"__name__"
    例:{__name__="http_requests_total", label1=~"xxx"}

    我们可以在这个语句的基础上使用一点过滤语法。
    例:http_requests_total{label1="xxx"}
    这个查询语句就会返回维度label1为xxx的序列。
    tip:过滤语句经常会使用的操作符有:
    1. =:精确匹配,等于
    2. !=:精确匹配,不等于
    3. =~:正则匹配,等于
    4. !~:正则匹配,不等于
    如:http_requests_total{label1=~"aaa|bbb", label2!="ccc"}

    区间向量(instant vector)

    1. 概念

    一组时间序列,每个时间序列包含了一段时间内的样本数据。

    2. selector使用

    在metric name后加上一个时间范围,用[]包含。
    例:http_requests_total{label1="xxx"}[5m]
    代表的是数据库中有该metric name和label1为xxx的一组时间序列的最新5分钟的样本的值。
    返回的数据样式是:
    http_requests_total{label1="xxx"}[5m] value_1@timestamp_1
                        value_2@timestamp_2
                        ...
                        value_n@timestamp_n
    tip:时间偏移查询
    获取当前时间向前一段时间内的时间序列的值
    例:http_requests_total{label1="xxx"} offset 5m
    offset必须跟在selector后面,如:
    sum(http_requests_total{label1="xxx"} offset 5m)

    未完待续...

    相关文章

      网友评论

        本文标题:Prometheus查询语法学习总结[类翻译:)]

        本文链接:https://www.haomeiwen.com/subject/aslndqtx.html