Prometheus 笔记

371 阅读2分钟

Prometheus 是一个开源的系统监控和报警的项目,于 2016 年加入了云原生计算基金会,成为继 Kubernetes 之后的第二个托管项目。

image.png

(来自 [Prometheus官方文档](https://prometheus.io/docs/introduction/overview/))
  1. 数据模型(时序数据) Prometheus 以时间为维度存储连续的数据集合,每个时间序列都由其度量名称和可选键值对的标签唯一标识。时序的名字由 ASCII 字符,数字,下划线,以及冒号组成,它必须满足正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*

  2. 时序数据的四种类型

  • Counter 一种累加的 metric,只增不减,除非系统重置
  • Gauge 常规的 metric,Gauge类型的指标侧重于反应系统的当前状态
  • Histogram 柱状图,典型应用如:请求持续时间、响应大小
  • Summary 类似于 Histogram,典型应用如:请求持续时间、响应大小 提供观测值的 count 和 sum功能
  1. PromQL PromQL (Prometheus Query Language)是 Prometheus 自己开发的数据查询 DSL 语言。
  • 查询条件

查询条件支持正则匹配,http_requests_total{code=~"2.."}表示查询 code 为 "2xx" 的数据

  • 操作符
    • 算术运算符,+,-,*,/,%,^
    • 比较运算符,==,!=,>,<,>=,<=
    • 逻辑运算符,and,or,unless
    • 聚合运算符,sum,min,max,avg,stddev,stdvar,count,count_values,bottomk,topk,quantile
  • 内置函数

Prometheus 内置了一些函数,方便查询以及数据格式化,如 abs()求绝对值、ceil()向上取整等

  1. Jobs 和 Instance 在 Prometheus 术语中,一般将可以抓取的端点称为实例,而将具有相同目的的实例集合称为作业。
  • job: 配置的作业名称。
  • instance: 被抓取的目标 URL 的 host:port 部分。 如下表示一个 API server 的作业和四个可复制的实例:
  • job: api-server
    • instance 1: 1.2.3.4:5670
    • instance 2: 1.2.3.4:5671
    • instance 3: 5.6.7.8:5670
    • instance 4: 5.6.7.8:5671