• 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>, ...}
    
    • 1

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

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

    二、指标类型

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

    Counter(计数器)

    计数器是一个累积指标,表示单个单调递增的计数器,其值只能在重新启动时增加或重置为零。例如,可以使用计数器来表示服务的请求数、完成的任务数或错误数。

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

    Gauge(仪表)

    Gauage 是一种指标,表示可以任意上下移动的单个数值。
    通常用于测量值,如当前内存使用情况,但也用于可以上升和下降的 “计数”,例如并发请求的数量。

    Histogram(直方图)

    Histogram 对应观察结果(通常是请求持续时间或相应大小等内容)进行采样,并在可配置的存储桶中对其进行计数。它还提供所有观测值的总和。

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

    • 观察存储桶的累积计数器,显示为<basename>_bucket{le="<upper inclusive bound>"}
    • 所有观测值的总和,显示为 <basename>_sum
    • 已观察到的事件计数,显示为 <basename>_count(与上文的<basename>_bucket{le="+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 在以下时间序列中存储一个样本:

    • 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 对于实例可用性监视非常有用

  • 相关阅读:
    合成事件在san.js中的应用
    《柳叶刀》发文,孩子睡觉时间一定要睡够9小时!认知能力很重要
    网站内的采集的外链该怎么进行本地化处理
    预处理的补充知识
    工程文档管理——有效控制工程项目范围、进度,实现高效的审查、批准和生产流程
    【lesson2】数据库的库操作
    基于变因子加权学习与邻代维度交叉策略的改进乌鸦算法求解单目标优化问题含Matlab代码
    使用 docker buildx 构建跨平台镜像
    python学习笔记(4)—— 模型
    java基于ssm的毕业论文管理系统
  • 原文地址:https://blog.csdn.net/qq_22648091/article/details/122889102