📊 Prometheus 指标类型,完美征服指南!

大家好!👋 今天,我们将深入探讨系统和应用程序监控的必备工具 Prometheus 的核心组成部分——指标类型。无论您是初次接触 Prometheus,还是已经在使用它,这都是一个巩固概念的绝佳机会!🚀

要准确掌握系统状态,决定收集哪些数据以及如何收集至关重要。Prometheus 为此提供了 四种核心指标类型:计数器 (Counter)、仪表盘 (Gauge)、直方图 (Histogram) 和摘要 (Summary)。接下来,我们将逐一深入了解每种类型的特点以及何时使用它们!


1. 计数器 (Counter) 📈: 只增不减的数字

计数器顾名思义,是一种记录累积值的指标类型。其最大特点是值只能增加。它就像汽车的总里程表,只向前进,从不后退。当然,系统重启时可以重置为0。

  • 🤔 何时使用?
  • Web 服务器的总 HTTP 请求次数
  • API 调用成功或失败的次数
  • 任务完成数量
  • 错误发生的总次数
  • 示例: http_requests_total
  • 此指标表示服务启动以来收到的所有 HTTP 请求的总数。
  • 💡 核心要点!
  • 计数器主要用于计算随时间变化的速率(rate),从而提取出“每秒请求数”等有意义的数据,而不是其自身的绝对值。为此,通常会结合使用 PromQL 的 rate() 或 irate() 函数。

2. 仪表盘 (Gauge) 🌡️: 显示实时状态的温度计

仪表盘是一种表示当前状态测量值的指标类型。与计数器不同,它的值可以增加也可以减少。就像温度计会根据环境温度上升或下降一样。

  • 🤔 何时使用?
  • 当前使用的内存量
  • 活跃用户会话数
  • 队列中积压的任务数量
  • CPU 使用率
  • 示例: memory_usage_bytes, cpu_temperature_celsius
  • memory_usage_bytes 表示应用程序当前使用的内存量,cpu_temperature_celsius 表示当前 CPU 温度。这些值会随时变化。
  • 💡 核心要点!
  • 当您希望像快照一样了解系统的当前状态时,它非常有用。

3. 直方图 (Histogram) 📊: 数据分布一目了然

直方图是一种稍微复杂的指标类型,用于测量观测数据的分布。当需要了解值的分布时,例如请求处理时间(latency)或响应大小(response size),它非常有用。

直方图将数据划分到预定义的多个桶(bucket)中。例如,可以划分为小于等于0.1秒、小于等于0.5秒、小于等于1秒等桶,每当处理一个请求时,相应桶的计数就会增加1。

  • 🤔 何时使用?
  • API 请求的响应时间分布
  • HTTP 请求的大小分布

直方图在内部创建以下多个时间序列数据:

  • _bucket{le=”<上限值>“}: 每个桶的上限值(le, less than or equal)以下或等于该值的累积数量
  • _sum: 所有观测值的总和
  • _count: 观测事件的总次数
  • 示例: http_request_duration_seconds
  • 通过此指标,可以计算出“所有请求中有95%在多少秒内处理完成?”这样的百分位数(percentile)。
  • 💡 核心要点!
  • 对于跨多个实例聚合数据并计算百分位数非常有用。可以在服务器端使用 PromQL 的 histogram_quantile() 函数灵活地计算分位数。

4. 摘要 (Summary) 📝: 用于精确百分位数的摘要

摘要与直方图类似,也用于测量数据的分布。但它们的工作方式存在重要差异。与在服务器端计算百分位数的直方图不同,摘要是在客户端(应用程序)直接计算并暴露百分位数(quantile)。

  • 🤔 何时使用?
  • 当您需要精确地了解响应时间的中位数(50th percentile)、95th percentile、99th percentile 等时。

摘要创建以下时间序列数据:

  • {quantile=”<分位数>“}: 对应于设定分位数的值
  • _sum: 所有观测值的总和
  • _count: 观测事件的总次数
  • 示例: http_request_duration_seconds (作为摘要类型)
  • 此指标直接提供百分位数,例如 http_request_duration_seconds{quantile=”0.95″}。
  • 💡 核心要点!
  • 由于百分位数是在客户端直接计算的,因此百分位数本身非常精确。但是,它有一个很大的缺点,即无法聚合多个实例的数据(例如,计算平均值)。因此,在大多数情况下,建议使用更灵活的直方图进行聚合。

🧐 指标类型一览

指标类型 特点 主要用例 PromQL 函数示例
计数器 单调递增的累积值 请求次数、错误数 rate(), increase()
仪表盘 可增可减的当前值 内存使用量、CPU 温度 avg_over_time()
直方图 数据分布(服务器计算分位数) 响应时间分布、请求大小 histogram_quantile()
摘要 数据分布(客户端计算分位数) 精确的单实例分位数 直接查询

结论

至此,我们已经了解了 Prometheus 的四种核心指标类型。充分理解每种类型的特点和用途,并根据实际情况选择合适的指标,是构建高效监控系统的第一步。

  • 如果需要简单计数,请使用计数器!
  • 如果想了解当前状态值,请使用仪表盘!
  • 如果需要数据分布和聚合,请使用直方图!
  • 如果需要精确的单个百分位数,请使用摘要!

希望本指南能对您的 Prometheus 之旅有所帮助!😊

标签: Prometheus, Monitoring, Metric Types, Counter, Gauge, Histogram, Summary, Observability, DevOps


Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注