Prometheus基础概念
Posted shark_西瓜甜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_totalmethod="POST", handler="/messages"
二、指标类型
Prometheus 客户端库提供四种核心指标类型。
Counter(计数器)
计数器是一个累积指标,表示单个单调递增的计数器,其值只能在重新启动时增加或重置为零。例如,可以使用计数器来表示服务的请求数、完成的任务数或错误数。
不要使用计数器来公开可能减小的值。例如,不要对当前正在运行的进程数使用计数器。而是使用仪表。
Gauge(仪表)
Gauage 是一种指标,表示可以任意上下移动的单个数值。
通常用于测量值,如当前内存使用情况,但也用于可以上升和下降的 “计数”,例如并发请求的数量。
Histogram(直方图)
Histogram 对应观察结果(通常是请求持续时间或相应大小等内容)进行采样,并在可配置的存储桶中对其进行计数。它还提供所有观测值的总和。
基本度量名称为<basename>
的直方图在抓取期间显示多个时间序列:
- 观察存储桶的累积计数器,显示为
<basename>_bucketle="<upper inclusive bound>"
- 所有观测值的总和,显示为
<basename>_sum
- 已观察到的事件计数,显示为
<basename>_count
(与上文的<basename>_bucketle="+Inf"
相同)
Summary
于 Histogram 类似,Summary 对观察结果(通常是请求持续时间或相应大小等内容)进行采样,虽然它还提供观测值的总数和所有观测值的总和,但它在滑动时间窗口内计算可配置的分位数。
基本指标名称为 <basename>
的摘要在抓取期间公开多个时间序列:
- **φ-quantiles **(0 ≤ φ ≤ 1)的已观测事件,显示为
<basename>quantile="<φ>"
- 所有观测值的总和,显示为
<basename>_sum
- 已观察到的事件计数,显示为
<basename>_count
三、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 在以下时间序列中存储一个样本: -
upjob="<job-name>", instance="<instance-id>"
:如果实例运行正常,即可访问,或者抓取失败。10 -
scrape_duration_secondsjob="<job-name>", instance="<instance-id>"
:刮擦的持续时间。 -
scrape_samples_post_metric_relabelingjob="<job-name>", instance="<instance-id>"
:应用公制重新标记后剩余的样本数。 -
scrape_samples_scrapedjob="<job-name>", instance="<instance-id>"
:目标暴露的样本数。 -
scrape_series_addedjob="<job-name>", instance="<instance-id>"
:此刮擦中新系列的大致数量。v2.10 中的新增功能
up
对于实例可用性监视非常有用
以上是关于Prometheus基础概念的主要内容,如果未能解决你的问题,请参考以下文章