Prometheus(二)基础概念

一、数据模型

Prometheus 从根本上将所有数据存储为时间序列:属于同一指标和同一组标记维度的带时间戳的流。
除了存储的时间序列外,Prometheus还可以通过查询语句生成临时派生的时间序列作为查询的结果。

指标名称和标签

每个时序都由其指标名称和称为标签的可选键值对唯一标识。

  • 指标名称: 指定被测量系统的一般特征(例如 - 收到的 HTTP 请求总数)。它可能包含 ASCII 字母和数字,以及下划线和冒号。它必须与正则表达式 匹配。例如: http_requests_total[a-zA-Z_:][a-zA-Z0-9_:]*
  • 标签: 标签支持 Prometheus 的维度数据模型:可以使用指定的标签,对同一指标名称的监控数据进行特定维度的查询。例如: 对应用程序使用了 POST 方法 的HTTP请求。
    标签名称可能包含ASCII字母、数字、以及下划线。它们必须与正则表达式匹配。以标签名称开头的保留供内部使用。示例: [a-zA-Z_][a-zA-Z0-9_]*__
    标签值可以包含任何 Unicode 字符。

具有空标签值的标签等于没标签。

另请参阅命名指标和标签的最佳做法

Samples (样本)

样本构成实际的时间序列数据。每个样本包括:

  • 一个64位的浮点数值
  • 一个毫秒级精度的时间戳

表示法

给定一个指标名称和一组标签,时序通常使用以下表示法进行标识:

metric name{<label name>=<label value>, ...}

例如,具有指标名称和标签的时间序列可以这样编写:

api_http_requests_total{method="POST", handler="/messages"}

二、指标类型

Prometheus 客户端库提供四种核心指标类型。

Counter(计数器)

计数器是一个指标值,只能增加或重置,即该值不能小于以前的值。它可用于诸如请求数,错误数等指标。

不要使用计数器来公开可能减小的值。例如,不要对当前正在运行的进程数使用计数器。而是使用仪表。

可以用于 http_requests_total http的请求数
node_cpu CPU 使用累计时间

Gauge(仪表)

Gauage 是一个可以上升或下降的数字,就是可以上下波动的指标数据。

它可用于集群中的 Pod 数量、队列中的事件数量等。
主机的进程数,主机 CPU、内存、磁盘使用率,当前的并发数等

Histogram(直方图)

Histogram 对观察结果(通常是请求持续时间或相应大小等内容)进行采样,并在可配置的上下限数据范围内对其进行计数。它还提供所有观测值的总和。
简单来说就是可以统计在某个值范围内出现的次数。比较典型的就是一个请求的响应时间。例如,请求的响应时间在0.5 秒内的有多少个。

基本度量名称为<basename>的直方图在抓取期间显示多个时间序列:

  • 观察存储桶的累积计数器,显示为<basename>_bucket{le="<upper inclusive bound>"}
  • 所有观测值的总和,显示为 <basename>_sum
  • 已观察到的事件计数,显示为 <basename>_count(与上文的<basename>_bucket{le="+Inf"}相同)

histogram_quantile() 函数可用于从直方图计算分位数

histogram_quantile(0.9,prometheus_http_request_duration_seconds_bucket{handler="/graph"})

Summary

于 Histogram 类似,Summary 对观察结果(通常是请求持续时间或相应大小等内容)进行采样,
是 Histogram 的替代方法。它的代价更低,但会丢失更多数据。它们是在应用程序级别计算的,因此无法聚合来自同一进程的多个实例的指标。

当事先不知道指标的存储桶时,会使用它们,但强烈建议尽可能使用 Histogram 而不是 Summary。

基本指标名称为 <basename> 的Summary 在抓取期间公开多个时间序列:

  • φ-quantiles(0 ≤ φ ≤ 1)的已观测事件,显示为 <basename>{quantile="<φ>"}
  • 所有观测值的总和,显示为 <basename>_sum
  • 已观察到的事件计数,显示为 <basename>_count

如下示例表示统计的数据中有 50% 的值达到了 5.000036869

prometheus_target_interval_length_seconds{instance="localhost:9090", interval="5s", job="prometheus", quantile="0.5"}  5.000036869

三、Job 和 Instances

在Prometheus术语中,您可以抓取的服务器称为 Instances,通常对应于单个进程。
具有相同用途的 Instances 集合称为 Jobs。
例如,具有 4 个实例的 API 服务器 Jobs:

  • job: api-server
    • instance 1: 1.2.3.4:5670
    • instance 2: 1.2.3.4:5671
    • instance 3: 5.6.7.8:5670
    • instance 4: 5.6.7.8:5671

自动生成的标签和时间序列

当Prometheus 抓取目标时,它会自动将一些标签附加到抓取的时间序列上,用于识别抓取的目标:

  • job:目标所属的已配置作业名称。

  • instance:目标URL中被抓取的 <host>:<port> 部分。
    对于每个实例抓取,Prometheus 在以下时间序列中存储一个样本:

  • up{job="<job-name>", instance="<instance-id>"}: 1如果实例运行正常,即可访问,或者抓取失败 0

  • scrape_duration_seconds{job="<job-name>", instance="<instance-id>"}: 抓取的持续时间。

  • scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"}:应用度量重新标记后剩余的样本数。

  • scrape_samples_scraped{job="<job-name>", instance="<instance-id>"}:目标暴露的样本数。

  • scrape_series_added{job="<job-name>", instance="<instance-id>"}:近似值中新系列的大致数量。v2.10 中的新增功能

up 对于实例可用性监视非常有用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值