天天看点

Prometheus(1)_PromQL样本数据

Prometheus-样本数据

1.time-series:

#TYPE node_cpu counter                               #开头的每一行表示当前Node Exporter采集到的一个监控样本    
   node_cpu{cpu="cpu0",mode="idle"} 362812.7890625    
   #node_cpu表明了当前指标的名称;大括号中的标签则反映了当前样本的一些特征和维度;浮点数则是该监控样本的具体值;
           

2.样本sample=time-series:

Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存的TSDB(时序数据库)中,并且定时保存到硬盘上。time-series是按照时间戳和值的序列顺序存放的,我们称之为向量(vector). 每条time-series通过指标名称(metrics name)和一组标签集(labelset)命名.

time-series中的每一个点称为一个样本(sample),样本由以下三部分组成:
指标(metric):metric name和描述当前样本特征的labelsets;
时间戳(timestamp):一个精确到毫秒的时间戳;
样本值(value): 一个folat64的浮点型数据表示当前样本的值。
<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
           

3.指标:metric

<metric name>{<label name>=<label value>, ...}
#标签(label)反映了当前样本的特征维度,通过这些维度Prometheus可以对样本数据进行过滤,聚合等
           

Prometheus定义了4中不同的指标类型(metric type):

  • Counter(计数器):只增不减,例如记录事件发生的次数

    一般在定义Counter类型指标的名称时推荐使用_total作为后缀 如http_requests_total,node_cpu都是Counter类型的监控指标。

  • Gauge(仪表盘):可增可减,指标侧重于反应系统的当前状态
    delta(cpu_temp_celsius{host="zeus"}[2h])  #计算CPU温度在两个小时内的差异
               
  • Histogram(直方图)/Summary(摘要):主用用于统计和分析样本的分布情况
#Summary/Histogram类型的样本同样会反应当前指标的记录的总数(以_count作为后缀)以及其值的总量(以_sum作为后缀)
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216
prometheus_tsdb_compaction_chunk_range_sum 1.1540798e+09
prometheus_tsdb_compaction_chunk_range_count 780
#Histogram指标直接反应了在不同区间内样本的个数,区间通过标签len进行定义
prometheus_tsdb_compaction_chunk_range_bucket{le="2.62144e+07"} 780
prometheus_tsdb_compaction_chunk_range_bucket{le="+Inf"} 780
#不同在于Histogram通过histogram_quantile函数是在服务器端计算的分位数。 
#而Sumamry的分位数则是直接在客户端计算完成
#因此对于分位数的计算而言,Summary在通过PromQL进行查询时有更好的性能表现,而Histogram则会消耗更多的资源
#反之对于客户端而言Histogram消耗的资源更少
           

继续阅读