- 四种数据类型
- Gauge 当前值
- Counter 计数器
- Histogram 直方图样本观测
- Summary 摘要
四种数据类型
Gauge 当前值
Gauge 用于表示可以任意上下波动的值,例如当前的内存使用量、CPU 使用率、正在运行的进程数量等。与计数器(Counter)不同,Gauge 的值可以增加或减少。
以下是一些 Gauge 类型指标的示例:
node_memory_MemAvailable_bytes:表示节点上可用的内存字节数,这个值会随着内存的分配和释放而变化。
process_open_fds:当前进程打开的文件描述符数量,可能会因为打开或关闭文件而增减。
-
例 go_info{instance="localhost:9090", job="prometheus", version="go1.16.7"}
- 类似的info信息,看时序的结果值=1
- 看标签的key和value go.1.16.7

-
例 go_memstats_heap_alloc_bytes

Counter 计数器
Counter 类型的指标只能单调递增,通常用于表示事件的累计数量,比如请求的总数、处理的任务数量、错误的发生次数等。
以下是一些 Counter 类型指标的例子:
http_requests_total:记录 HTTP 请求的总数,每次有新的请求发生,该值就会增加。
kafka_messages_consumed_total:表示消费的 Kafka 消息的总数。
在 PromQL 中,对 Counter 类型的指标可以进行一些特定的操作和分析,比如通过 rate() 函数计算每秒的增长速率。
- 使用rate 查看qps rate(prometheus_http_requests_total[1m])
- 使用increase 查看增量 increase(prometheus_http_requests_total[10s])

Histogram 直方图样本观测
Histogram(直方图)是一种用于对观测值(通常是请求持续时间、响应大小等)的分布情况进行统计和分析的指标类型。
Histogram 会将观测值分到不同的桶(bucket)中,并记录每个桶中的样本数量。通过这种方式,可以了解数据在不同范围内的分布情况。
例如,对于一个 HTTP 请求的响应时间,可以创建一个 Histogram 指标来统计响应时间在不同区间(如 0-100ms、100-200ms 等)的请求数量。
以下是一个 Histogram 指标的示例:
http_request_duration_seconds_bucket{le="0.1"} 10
http_request_duration_seconds_bucket{le="0.2"} 25
http_request_duration_seconds_bucket{le="0.5"} 50
http_request_duration_seconds_bucket{le="1"} 75
http_request_duration_seconds_bucket{le="+Inf"} 100
在上述示例中,le 表示“less than or equal to”(小于等于),每个样本表示响应时间小于等于对应值的请求数量。
通过 Histogram ,可以使用 histogram_quantile() 函数计算给定分位数(如中位数、90% 分位数等)的估计值。
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 摘要会采样观察值
Summary(摘要)与 Histogram 类似,也是用于对事件的分布情况进行统计的指标类型。
Summary 会直接提供观测值的总数、分位数(如中位数、90% 分位数等)的计算结果。
例如,对于一个服务的响应时间,可以定义一个 Summary 指标来统计相关信息。
以下是一个 Summary 指标的示例:
http_request_duration_seconds{quantile="0.5"} 0.15
http_request_duration_seconds{quantile="0.9"} 0.5
http_request_duration_seconds{quantile="0.99"} 1.2
http_request_duration_seconds_count 1000
http_request_duration_seconds_sum 200
在上述示例中,不同的分位数对应着不同的估计值,count 表示观测值的总数,sum 表示观测值的总和。
与 Histogram 相比,Summary 在某些情况下计算分位数的开销可能较小,但它不太适合在多个进程或实例间进行聚合。
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
利用 sum/count 算平均值 :histogram 和summary 都适用
- go_gc_duration_seconds_sum/go_gc_duration_seconds_count 算平均值
- 四种数据类型
- Gauge 当前值 最简单,看标签
- Counter 计数器 多用在请求计数,cpu统计
- Histogram 直方图样本观测 :服务端算分位值
- Summary 摘要:客户端算分位值
- 利用 sum/count 算平均值 :histogram 和summary 都适用
评论区