Prometheus 从根本上将所有数据存储为时间序列:属于同一指标和同一组标记维度的带时间戳的流。
除了存储的时间序列外,Prometheus还可以通过查询语句生成临时派生的时间序列作为查询的结果。
每个时序都由其指标名称和称为标签的可选键值对唯一标识。
http_requests_total[a-zA-Z_:][a-zA-Z0-9_:]*[a-zA-Z_][a-zA-Z0-9_]*__具有空标签值的标签被视为等效于不存在的标签。
另请参阅命名指标和标签的最佳做法。
样本构成实际的时间序列数据。每个样本包括:
给定一个指标名称和一组标签,时序通常使用以下表示法进行标识:
metric name>{<label name>=<label value>, ...}
例如,具有指标名称和标签的时间序列可以这样编写:
api_http_requests_total{method="POST", handler="/messages"}
Prometheus 客户端库提供四种核心指标类型。
计数器是一个累积指标,表示单个单调递增的计数器,其值只能在重新启动时增加或重置为零。例如,可以使用计数器来表示服务的请求数、完成的任务数或错误数。
不要使用计数器来公开可能减小的值。例如,不要对当前正在运行的进程数使用计数器。而是使用仪表。
Gauage 是一种指标,表示可以任意上下移动的单个数值。
通常用于测量值,如当前内存使用情况,但也用于可以上升和下降的 “计数”,例如并发请求的数量。
Histogram 对应观察结果(通常是请求持续时间或相应大小等内容)进行采样,并在可配置的存储桶中对其进行计数。它还提供所有观测值的总和。
基本度量名称为<basename>的直方图在抓取期间显示多个时间序列:
<basename>_bucket{le="<upper inclusive bound>"}<basename>_sum<basename>_count(与上文的<basename>_bucket{le="+Inf"}相同)于 Histogram 类似,Summary 对观察结果(通常是请求持续时间或相应大小等内容)进行采样,虽然它还提供观测值的总数和所有观测值的总和,但它在滑动时间窗口内计算可配置的分位数。
基本指标名称为 <basename> 的摘要在抓取期间公开多个时间序列:
<basename>{quantile="<φ>"}<basename>_sum<basename>_count在Prometheus术语中,您可以抓取的服务器称为 Instances,通常对应于单个进程。
具有相同用途的 Instances 集合称为 Jobs。
例如,具有 4 个实例的 API 服务器 Jobs:
当Prometheus 抓取目标时,它会自动将一些标签附加到抓取的时间序列上,用于识别抓取的目标:
job:目标所属的已配置作业名称。
instance:目标URL中被刮取的 <host>:<port> 部分。
对于每个实例抓取,Prometheus 在以下时间序列中存储一个样本:
up{job="<job-name>", instance="<instance-id>"}:如果实例运行正常,即可访问,或者抓取失败。10
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 对于实例可用性监视非常有用