公开课:云原生监控系统 Prometheus

公开课地址:https://www.shiyanlou.com/live/148

Prometheus 架构

Prometheus Server 组件

Retrieval 数据获取模块

Retrieval 模块是采用Pull的模式拉取度量指标数据

Retrieval 拉取度量数据指标有三种途径

  1. Job/Exporter: 通过导出器获取对象(节点、服务等)度量指标
  2. PushGateway: 对于生命周期的数据例如cronjob,脚本等,所以需要让任务接口先推送到网关,然后由Prometheus定期拉取
  3. Prometheus Server:

Storage TSDB 数据存储模块

Prometheus 内置时序数据库,收集到的数据都会经过内存落地到磁盘

PromQL PromQL数据查询模块

Prometheus 通过PromQL支持强大的查询条件,以供统计计算各种指标

Prometheus 核心概念

数据模型

Prometheus 从根本上存储的所有数据都是时间序列数据(Time Serie Data,简称时序数据)。

时序数据是具有时间戳的数据流,该数据流属于某个度量指标(Metric)和该度量指标下的多个标签(Label)。

除了提供存储功能,Prometheus 还可以利用查询表达式来执行非常灵活和复杂的查询。

  • 度量指标(Metric): 监控项名称,例如HTTP请求数,请求耗时等
  • 标签(Tag): 通过TAG标识同一个Metric中的数据来自于那些节点或者服务
  • 采样值(Sample): 监控项采集到的值,例如请求状态码多少?当前负载多少?等等
  • 注解(Annotation):注解 = 度量指标+标签[metric name]{[label name]=[label value], ...} 例如,度量指标为 api_http_requests_total,标签为 method="POST"、handler="/messages" 的注解表示如下:api_http_requests_total{method="POST", handler="/messages"}

标签匹配

  • =: 完全相等
  • !=: 不相等
  • =~: 正则匹配相等
  • !~: 正则匹配不相等

度量指标

  • 计数器(Counter): 只会增加的指标,例如网卡流量,处理请求总数等
  • 计量器(Guage): 会上下浮动的指标,例如请求处理耗时,当前负载等
  • 直方图(Histogram): !!!还没理解什么意思!!!
  • 汇总(Summary): !!!还没理解什么意思!!!

任务和实例

  • 任务(Job): 采集任务,一个任务可以包含多个实例,例如采集节点基础性能状态,此时一个任务下面就可以通过定义多个实例采集多台节点性能数据
  • 实例(Instance): 节点或者服务

PromQL 查询语法

数据类型

  • 瞬时向量(Instant vector):
  • 区间向量(Range vector):
  • 标量(Scalar):
  • 字符串(String): 尚未使用

时序选择器

  • 瞬间向量选择器: 只取出一个采样值,例如 http_requests_total{code="200",handler=~"query|static"},最终返回的符合条件的时序的最新采样值
  • 区间向量选择器: 取出一个范围的采样值,例如http_requests_total{code="200",handler=~"query|static"}[30s],最终返回符合条件时序的30秒内的采样,我这里scrape_interval为5s,所以每隔时序会返回6个采样值,支持的时间单位,s m h d w y
  • 偏移修饰器: 默认基准时间都是当前时间,通过offset调整基准时间,例如http_requests_total{code="200",handler=~"query|static"}[1m] offset 1d,获取1天前的当前时间,符合标签匹配时序的最近1分钟内采样

操作符

二元操作符

算数类二元操作符
  • +
  • -
  • *
  • /
  • %
  • ^
比较类二元操作符
  • ==
  • !=
  • >
  • <
  • =

  • <=
逻辑类二元操作符
  • and: 交集
  • or: 合集
  • unless: 差集
  • + - * / ^
  • 向量匹配:one-to-one,many-to-one/one-to-many
  • 聚合操作符:sum,min,max,avg,count,quantile
  • 内置函数:abs(),sqrt(),exp(),In(),ceil(),floor(),round()

results matching ""

    No results matching ""