一、prometheus数据模型
1.概述
- prometheus仅用键值方式存储时序式的聚合数据,他不支持文本信息
- 从每个target中会采集出很多指标,那么每个指标会暴露很多样本数据点,而这些数据点pro都需要存储而这些指标会以固定时间间隔生成很多样本数据点,而如何标示这些样本数据点,则是数据模型学习的意义
①时序列标识:key+lables
②当前时间序列的样本值value
③这些标签可以作为过滤器进行指标过滤及聚合运算,如何从上万的数据过滤出关键有限的时间序列,同时从有限的时间序列在特定范围的样本那就需要手动编写出时间序列的样本表达式来过滤出我们需求的样本数据
2.指标类型
- 默认都是以双精度浮点型数据(服务端无数据量类型数据–类型是对客户端有意义的)
①counter : 计数器单调递增
②gauge:仪表盘:有起伏特征的
③histogram:直方图(统计的概念,做分位数统计):
在一段时间范围内对数据采样的相关结果,并记入配置的bucket中,他可以存储更多的数据,包括样本值分布在每个bucket的数量,从而iprometheus就可以使用内置函数进行计算:
计算样本平均值:以值得综合除以值的数量
计算样本分位值:分位数有助于了解符合特定标准的数据个数,例如评估响应时间超过1秒的请求比例,若超过20%则进行告警等
④summary(统计数据),摘要,histogram的扩展类型,它是直接由监控端自行聚合计算出分位数,同时将计算结果响应给prometheus server的样本采集请求,因而,其分位数计算是由监控端完成
计数器:单调递增 仪表盘:起伏特征 直方图:平均数或分位值 sumamary(统计数据)
3.作业job和实例targets/instance
①job:能够接收prometheus server数据scrape ;两种job:“mysql_nodes" “mysql_master_slave”,每一种job会分开进行拉取数据以及展示数据
②targets:每一个可以被监控的系统,成为targets多个相同的targets的集合(类)称为job
③instance:实例与targets(类似)
与target相比,instance更趋近于一个具体可以提供监控数据的实例,而targets则更像一个对象、目标性质
targets 与 instance区别:都代表了被监控端可以吐出监控数据的被监控端这个对象,tagers更倾向于是一个集合,instance更倾向于具体的被监控端
4.prometheusQL(数据查询语言也是时序数据库使用语言)
- 支持两种向量,同时内置提供了一组用于数据处理的函数,来对样本数据进行基础的分析(Ai算法、机器学习、深度学习来分析、预测系统之后的运行走势)
①即时向量:最近以此时间戳上跟踪的数据指标(一个时间点上的所有数据)
即时向量选择器:返回0个1个或者多个时间序列上在给定时间戳上的各自的一个样本,该样本成为即时样本
②时间范围向量:指定时间范围内所有时间戳上的数据指标
范围向量选择器:返回0个1个或多个时间序列上在给定时间范围内的各自的一组样本(范围向量选择器无法用于绘图)
二、prometheus数据模块
global:全局配置
altermanager configuration:告警模块(通过prometheusQL+布尔值表达式产生告警信息)
rules
scrape
三、表达式浏览器(promQL过滤使用)
1.表达式浏览器常规使用
在prometheusUI控制台上可以进行数据过滤
简单的用法:
- CPU使用总量
node_cpu_seconds_total
- 计算过去5分钟内的CPU使用速率
PromQL: irate(node_cpu_seconds_total{
cpu="0",mode="idle"}