前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别

Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别

原创
作者头像
hugo_lei
修改2021-02-03 15:19:39
12.9K0
修改2021-02-03 15:19:39
举报

1 背景

Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。

这里要明确一个概念:数据指标类型只是Client端的一个概念,用于维护Metric的生产,以方便在业务上有所区分。

而Server端是不区分数据类型的,因为所有的数据都是一种格式,也即时间序列 Metric<Label01,Label02> value, timestamp.

2 何为Counter类型?

Counter是一个累计类型的数据指标,它代表单调递增的计数器。

其值只能在重新启动时增加或重置为 0。

例如,您可以使用计数器来表示已响应的HTTP请求数,这个数一定是不断增长的。

2.1 Counter定义

参见Prometheus Go SDK

代码语言:javascript
复制
type Counter interface {
	Metric
	Collector

    // 加1
	Inc()

    // 增加一个非负的float64类型的值
	Add(float64)
}

可见Counter接口原始定义里,只对外暴露了Inc()和Add()这两个增加接口,目的很明确,只希望这个值只增不减。

但是有一点格外需要注意:

若Exporter重启了,则Counter类型的Metric的值,必然是重新从0开始。

3 何为Gauge类型?

Gauge是可以任意上下波动数值的指标类型。

也即Gauge的值可增可减,可升可降。

例如:机器的CPU使用率,可大可小。

3.1 Gauge定义

参见Prometheus Go SDK

代码语言:javascript
复制
type Gauge interface {
	Metric
	Collector

	// 指定为任意值
	Set(float64)
	// 加1
	Inc()
	// 减1
	Dec()
	// 加任意值,该值可正可负。<注意这里和Counter类型的定义是不同的>
	Add(float64)
	// 减任意值,该值可正可负
	Sub(float64)

	// 将值设置成当前时间戳,单位s
	SetToCurrentTime()
}

可见Gauge接口原始定义,非常灵活,可加可减,并无过多限制。

4 Counter和Gauge的对比

Counter类型HTTP请求量的变化情况,其中T4时刻服务刚重启完,此时指标值恢复从0开始。

Gauge类型指标CPU使用率的变化情况,通过使用Gauge的Set()方法,可将机器的CPU使用率放到指标里。

【推荐阅读】

  1. Prometheus核心概念:一图了解瞬时向量Instant vector和区间向量Range vector的区别
  2. Prometheus源码分析:基于Go Client自定义的Exporter,是如何在Local存储Metrics的?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 背景
  • 2 何为Counter类型?
    • 2.1 Counter定义
    • 3 何为Gauge类型?
      • 3.1 Gauge定义
      • 4 Counter和Gauge的对比
      相关产品与服务
      前端性能监控
      前端性能监控(Real User Monitoring,RUM)是一站式前端监控解决方案,专注于 Web、小程序等场景监控。前端性能监控聚焦用户页面性能(页面测速,接口测速,CDN 测速等)和质量(JS 错误,Ajax 错误等),并且联动腾讯云应用性能监控实现前后端一体化监控。用户只需要安装 SDK 到自己的项目中,通过简单配置化,即可实现对用户页面质量的全方位守护,真正做到低成本使用和无侵入监控。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档