天天看点

prometheus专题—(六)普罗米修斯概念介绍

prometheus 基本概念 

在prometheus graph页面上查询数据

node_cpu_seconds_total{mode="user"}

sample 数据点      
prometheus专题—(六)普罗米修斯概念介绍

sample 数据点

type sample struct {
    t int64
    v float64
}


sample代表一个数据点

size:16byte: 包含 1个8byte int64时间戳和1个8byte float64 value 
      
prometheus专题—(六)普罗米修斯概念介绍

Label 标签

type Label struct {
    Name, Value string
}

一对label 比如 `cpu="0"` `mode: "user"`
      
prometheus专题—(六)普罗米修斯概念介绍

Labels 标签组

type Labels []Label

- 就是metric 一个指标的所有tag values


      

prometheus四种查询类型

即时向量 Instant vector : 一组时间序列,每个时间序列包含一个样本,所有样本共享相同的时间戳

# 在prometheus页面上就是table查询 ,对应查询接口 /api/v1/query

prometheus专题—(六)普罗米修斯概念介绍
vector 向量 
type Vector []Sample
1. - ector 向量,是samples的别名,但是所有sample具有相同timestamp ,常用作instance_query的结果

      

2.范围向量 Range vector : 一组时间序列,每个时间序列包含一个样本,所有样本共享相同的时间戳

> 在prometheus页面上就是graph查询 ,对应查询接口 /api/v1/query 

> Matrix 矩阵
type Matrix []Series

Matrix是series的切片,一般的range_query返回的结果      
prometheus专题—(六)普罗米修斯概念介绍
1. 标量 `Scalar` 一个简单的数字浮点值
2. String 一个简单的字符串值;目前未使用      

四种标签匹配模式

1. `=` 等于
   - 查询: cpu第一个核并且是用户态的数据  node_cpu_seconds_total{mode="user",cpu="0"}
2. `!=` 不等于
   - 查询: 非lo网卡的接收字节数  node_network_receive_bytes_total{device!="lo"}
3. `=~` 正则匹配
   - 查询: 挂载点以/run开头的文件系统剩余字节数  node_filesystem_avail_bytes{mountpoint=~"^/run.*"}
4. `!~` 正则非匹配
   - 查询: 块设备名字不包含vda的读字节数  node_disk_read_bytes_total{device!~".*vda.*"}      

四种数据类型

  • gauge 当前值
node_memory_MemFree_bytes      
  • counter 计数器是代表一个累积指标单调递增计数器,其价值只能在重新启动增加或归零。例如,您可以使用计数器来表示已服务请求,已完成任务或错误的数量。
http_request_total      
  • histogram 直方图样本观测(通常之类的东西请求持续时间或响应大小)和计数它们配置的桶中。它还提供所有观察值的总和
# http所有接口 总的95分位值
# sum/count 可以算平均值
prometheus_http_request_duration_seconds_sum/ prometheus_http_request_duration_seconds_count

# histogram_quantile(0.95, sum(rate(prometheus_http_request_duration_seconds_bucket[5m])) by (le,handler))

histogram_quantile(0.95, sum(rate(prometheus_http_request_duration_seconds_bucket[1m])) by (le))

# range_query接口的95分位值
histogram_quantile(0.95, sum(rate(prometheus_http_request_duration_seconds_bucket{handler="/api/v1/query_range"}[5m])) by (le))

      

summary 摘要会采样观察值(通常是请求持续时间和响应大小之类的东西)。尽管它还提供了观测值的总数和所有观测值的总和,但它可以计算滑动时间窗口内的可配置分位数。

# gc耗时

# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.000135743
go_gc_duration_seconds{quantile="0.25"} 0.000872805
go_gc_duration_seconds{quantile="0.5"} 0.000965516
go_gc_duration_seconds{quantile="0.75"} 0.001055636
go_gc_duration_seconds{quantile="1"} 0.006464756

# summary 平均值
go_gc_duration_seconds_sum /go_gc_duration_seconds_count


-       

范围向量选择器 Range Vector Selectors

- 范围矢量的工作方式与即时矢量一样,不同之处在于它们从当前即时中选择了一定范围的样本。语法上,将持续时间附加在[]向量选择器末尾的方括号()中,以指定应为每个结果范围向量元素提取多远的时间值。
      
  • 只能作用在counter上

时间范围

ms -毫秒
s -秒
m - 分钟
h - 小时
d -天-假设一天总是24小时
w -周-假设一周始终为7天
y -年-假设一年始终为365天

直接查询报错   node_network_receive_bytes_total{device!="lo"}[1m]
Error executing query: invalid expression type "range vector" for range query, must be Scalar or instant Vector

> 需要叠加一个非聚合函数 如 rate irate delta idelta sum 等

-  计算网卡入流量
  rate(node_network_receive_bytes_total{device!="lo"}[1m])

> > 时间范围 ,不能低于采集间隔

- - 采集30秒 ,查询10秒则无数据
- - rate(node_network_receive_bytes_total{device!="lo"}[10s])

      

继续阅读