prometheus
  • Introduction
  • (一)快速开始
    • 安装Prometheus
    • 使用NodeExporter采集数据
    • AlertManager进行告警
    • Grafana数据可视化
  • (二)探索PromQL
    • 理解时间序列
    • Metrics类型
    • 初识PromQL
    • PromQL操作符
    • PromQL内置函数
    • PromQL聚合函数
  • (三)Prometheus告警处理
    • 自定义告警规则
    • 示例 - 对主机进行监控告警
    • 部署AlertManager
    • 告警的路由与分组
    • 使用Receiver接收告警信息
      • 集成邮件系统
    • 屏蔽告警通知
    • 扩展阅读
      • AlertManager的API
      • Prometheus发送告警机制
      • 实践:接收Prometheus的告警
      • 实践:AlertManager
  • Prometheus
    • PromQL
      • 内置函数
        • avg
        • rate与irate
      • 常见指标的PromQL
        • 主机CPU
    • 配置
      • 告警规则
Powered by GitBook
On this page
  • 查询时间序列
  • 完全匹配与正则匹配
  • 瞬时向量与区间向量
  • 时间位移操作

Was this helpful?

  1. (二)探索PromQL

初识PromQL

查询时间序列

Prometheus通过指标名称(metrics name)以及对应的一组标签(labelset)唯一标识一条时间序列,我们可以通过PromQL来查询时间序列。

比如,我们可以通过下面的语句查询各主机的空闲内存

node_memory_MemAvailable_bytes

由于该表达式没有指定标签,所以通过模糊匹配,该表达式会返回两台主机的数据

node_memory_MemAvailable_bytes{instance="peng01",job="node_exporter"}    3341881344
node_memory_MemAvailable_bytes{instance="peng02",job="node_exporter"}    3514314752

完全匹配与正则匹配

PromQL支持使用=和!=两种完全匹配模式来进行查询。比如,我们可以查询主机peng01的可用内存

node_memory_MemAvailable_bytes{instance="peng01"}

也可以用下面的语句查询除主机peng01以外的主机的可用内存

node_memory_MemAvailable_bytes{instance!="peng01"}

PromQL支持使用=~和!~两种完全匹配模式来进行查询,比如

node_memory_MemAvailable_bytes{instance=~"peng01|peng02"}

瞬时向量与区间向量

上面语句查询到的结果只会包含时间序列中最新的那个样本值,这样的返回结果我们称为瞬时向量。而相应的这样的表达式称之为瞬时向量表达式。

而如果我们想过去一段时间范围内的样本数据时,我们则需要使用区间向量表达式。区间向量表达式和瞬时向量表达式之间的差异在于在区间向量表达式中我们需要定义时间选择的范围,时间范围通过时间范围选择器[]进行定义。例如,通过以下表达式可以选择最近5分钟内的所有样本数据:

node_memory_MemAvailable_bytes{}[5m]

通过区间向量表达式查询到的结果我们称为区间向量

除了使用m表示分钟以外,PromQL的时间范围选择器支持其它时间单位

  • s - 秒

  • m - 分

  • h - 时

  • d - 天

  • w - 周

  • y - 年

时间位移操作

在瞬时向量表达式或者区间向量表达式中,都是以当前时间为基准:

node_memory_MemAvailable_bytes    # 选择当前最新的数据
node_memory_MemAvailable_bytes    # 选择以当前时间为基准,5分钟内的数据

而如果我们想查询,5分钟前的瞬时样本数据,或昨天一天的区间内的样本数据呢? 这个时候我们就可以使用位移操作,位移操作的关键字为offset。

可以使用offset时间位移操作:

node_memory_MemAvailable_bytes offset 5m
node_memory_MemAvailable_bytes[5m] offset 1d
PreviousMetrics类型NextPromQL操作符

Last updated 4 years ago

Was this helpful?