前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Prometheus】Prometheus的样本

【Prometheus】Prometheus的样本

作者头像
人不走空
发布2024-12-18 16:28:04
发布2024-12-18 16:28:04
1090
举报
文章被收录于专栏:学习与分享

Prometheus 中,"样本"(Sample)是指时间序列数据的一个基本单位,包含了某个特定时刻的一个度量值。一个样本由以下几部分组成:

1. 时间戳(Timestamp)
  • 样本会记录数据的时间戳,表示这个数据值是在什么时候被采集的。
  • Prometheus 会根据配置的抓取间隔定期拉取目标的度量数据。每次采集的数据都会附带一个时间戳,表示数据的时间点。
2. 度量名称(Metric Name)
  • 每个样本都关联着一个度量(或指标)名称,这个名称用于描述被监控的事物。例如,http_requests_total(HTTP请求总数)或 cpu_usage(CPU使用率)。
3. 标签(Labels)
  • Prometheus 允许你为每个样本添加一组键值对标签,用于进一步细分和过滤数据。标签可以帮助你区分相同名称的不同度量,通常用于区分不同的实例、应用程序、环境、区域等。
  • 例如,你可以使用 job="api-server"instance="server1" 等标签来区分同一度量的不同来源。
4. 度量值(Value)
  • 每个样本包含一个度量值,即采集到的数值。例如,一个计数器可能表示某个事件发生的次数,或者一个 gauge(仪表)指标可能表示某个资源的当前使用量。
示例:Prometheus 样本的结构

假设我们有一个 HTTP 请求的计数器指标 http_requests_total,用于表示服务接收到的 HTTP 请求总数。这个度量可能会有以下样本数据:

http_requests_total{method="GET", status="200", job="api-server", instance="server1"} 10234 1617902462000

上面的样本表示:

  • 度量名称http_requests_total(HTTP请求总数)
  • 标签method="GET", status="200", job="api-server", instance="server1"
  • 10234(表示接收到的 HTTP GET 请求的数量)
  • 时间戳1617902462000(这个样本的时间戳,单位为毫秒)
5. Prometheus 中的时间序列

Prometheus 中的时间序列是由一系列带有时间戳的样本组成的。每个时间序列都有一个度量名称和一组标签,而这些标签帮助 Prometheus 区分不同的时间序列。例如,假设有两个不同的 job(如 api-serverdb-server),它们会有不同的时间序列,尽管它们可能使用相同的指标名称(例如 http_requests_total)。

6. Prometheus 查询语言(PromQL)

Prometheus 查询语言(PromQL)可以用来查询时间序列数据,并操作这些样本。例如,可以查询过去某个时间段内的最大值、平均值、总和等:

  • 查询一个时间序列的最新值http_requests_total{job="api-server", instance="server1"} 这个查询会返回 job="api-server"instance="server1" 下所有 HTTP 请求的最新计数值。
  • 查询某个时间段内的总和sum(http_requests_total{job="api-server"}) by (status) 这条查询会返回 job="api-server" 下按 status 标签汇总的 HTTP 请求总数。
  • 查询某个时间段内的最大值max_over_time(http_requests_total[1h]) 这个查询会返回过去 1 小时内 http_requests_total 指标的最大值。
7. Prometheus 样本的类型

Prometheus 支持多种度量类型,它们定义了样本值的含义和如何增长:

  • Counter(计数器):计数器值只能增加,表示某个事件的累计发生次数(例如 HTTP 请求总数)。
  • Gauge(仪表):仪表可以增加也可以减少,表示一个瞬时的测量值(例如当前 CPU 使用率、内存使用量等)。
  • Histogram(分布):直方图用于表示数据分布,记录某个度量的不同范围值的数量。例如,HTTP 响应时间的分布。
  • Summary(概述):概述也用于表示分布,但它不仅记录范围分布,还提供如百分位数(例如 95% 响应时间)的信息。
示例:不同类型的样本
1. Counter 样本

http_requests_total{method="GET", status="200", job="api-server", instance="server1"} 10234

这个样本表示 http_requests_total 的计数器,当前值为 10234

2. Gauge 样本

cpu_usage{job="api-server", instance="server1"} 0.75

这个样本表示 cpu_usage(CPU 使用率)为 0.75,即 75%。

3. Histogram 样本

http_request_duration_seconds_bucket{le="0.1", job="api-server", instance="server1"} 300 http_request_duration_seconds_bucket{le="0.2", job="api-server", instance="server1"} 500

这表示 http_request_duration_seconds(HTTP 请求时长)的直方图数据:在 0.1 秒内完成的请求有 300 个,在 0.2 秒内完成的请求有 500 个。

4. Summary 样本

http_request_duration_seconds_sum{job="api-server", instance="server1"} 350 http_request_duration_seconds_count{job="api-server", instance="server1"} 500

这个样本表示 http_request_duration_seconds 的总结:所有请求的总时长为 350 秒,总请求数为 500。

总结:

在 Prometheus 中,样本 是一个时间序列的基本单位,由度量名称、标签、数值和时间戳组成。Prometheus 通过这种方式存储和管理大量的度量数据,从而使得我们能够对系统进行详细的监控和查询。通过 PromQL 查询语言,我们可以灵活地提取和分析这些样本数据,帮助我们更好地理解系统的健康状况和性能瓶颈。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 时间戳(Timestamp)
  • 2. 度量名称(Metric Name)
  • 3. 标签(Labels)
  • 4. 度量值(Value)
  • 示例:Prometheus 样本的结构
  • 5. Prometheus 中的时间序列
  • 6. Prometheus 查询语言(PromQL)
  • 7. Prometheus 样本的类型
  • 示例:不同类型的样本
    • 1. Counter 样本
    • 2. Gauge 样本
    • 3. Histogram 样本
    • 4. Summary 样本
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档