Prometheus
架构
概念
- obs 和 Instances
在Prometheus术语中,您可以scrape的目标称为instance,通常对应于单个进程。具有相同目的的instance集合,例如,为可伸缩性或可靠性而复制的流程称为Job
Metric 类型
Prometheus 中存储的数据为时间序列,是由 metric 的名字 (名字是内置标签)和一系列的标签(键值对)唯一标识的,不同的标签则代表不同的时间序列。给定度量标准名称和一组标签,通常使用此表示法标识时间序列.
(一个序列可以理解为一个map, 有内置lable和自定义的lable)
Gauge
- 理解
“仪表盘”, 表示当前状态, 如系统使用CPU/内存
“无状态”, 不需要关心历史的值
- API
只包含一个inc()方法,用于计数器+1
Counter
- 理解
“计数器”, 表示永远只递增, 如系统服务时间
“有状态”,
- API
set()/inc()/dec(), 用于设置/添加/减少指标值
Histogram
略.
Summary
略.
PromQL
表达式语言类型
- 即时向量(Instant vector)
包含每个时间序列单个样品的一组时间序列,共享相同的时间戳
- 范围向量(Range vector)
包含一个范围内数据点的一组时间序列
- 标量(Scalar)
一个简单的数字浮点值
- 字符串(String)
一个简单的字符串值;当前未使用
时间序列选择器
- 即时向量选择
按lable过滤: 支持正则/反向等, 略.
示例: http_requests_total{environment=~‘staging|testing|development’,method!=‘GET’}
- 范围向量选择
在一个向量表达式之后添加[]来表示时间范围,持续时间用数字表示
示例: http_requests_total{job=‘prometheus’}[5m]
s:seconds
m:minutes
h:hours
d:days
w:weeks
y:years
- 偏移量Offset
offset可以改变时间为查询中的个别时刻和范围矢量偏移
例如,以下表达式返回http_requests_total相对于当前查询评估时间的过去5分钟值 :
http_requests_total offset 5m
操作符
参考: https://prometheus.io/docs/prometheus/latest/querying/operators/
内置函数
参考: https://prometheus.io/docs/prometheus/latest/querying/functions/
安装及使用
安装: https://prometheus.io/docs/prometheus/latest/installation/
配置: https://prometheus.io/docs/prometheus/latest/configuration/configuration/
客户端
maven依赖及使用: 待补充
其他客户端: 略
使用总结
- 监控实时指标值
且数据量很小或数量变化频率很低
如果是counter
可以用rate或irate再乘以一个系数
可以metric - metric offset 5s偏移量(结合pull频率)
如果是gauge
如果用的是inc统计数值, 也可以用rate或offset
如果用的是set统计数值, 则只能用offset
- 多个instance共用一个指标
用聚合函数sum等, 不聚合每个instance一个指标
- java客户端
counter类型的metric, 最终名称会添加_total后缀
参考
官方: https://prometheus.io/docs/prometheus/latest/querying/basics/
博客1: https://blog.csdn.net/qq_43340814/article/details/108278014
博客2: https://blog.csdn.net/breavo_raw/article/details/104595506