Prometheus 是一个开源的系统监控和报警的项目,于 2016 年加入了云原生计算基金会,成为继 Kubernetes 之后的第二个托管项目。
(来自 [Prometheus官方文档](https://prometheus.io/docs/introduction/overview/))-
数据模型(时序数据) Prometheus 以时间为维度存储连续的数据集合,每个时间序列都由其度量名称和可选键值对的标签唯一标识。时序的名字由 ASCII 字符,数字,下划线,以及冒号组成,它必须满足正则表达式
[a-zA-Z_:][a-zA-Z0-9_:]*
-
时序数据的四种类型
- Counter 一种累加的 metric,只增不减,除非系统重置
- Gauge 常规的 metric,Gauge类型的指标侧重于反应系统的当前状态
- Histogram 柱状图,典型应用如:请求持续时间、响应大小
- Summary 类似于 Histogram,典型应用如:请求持续时间、响应大小 提供观测值的 count 和 sum功能
- 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()
向上取整等
- 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
- instance 1: