Skip to content
鼓励作者:欢迎打赏犒劳

Prometheus指标

什么是指标

Prometheus将所有数据存储为时间序列;具有相同度量名称以及标签属于同一个指标。

每个时间序列都由度量标准名称和**一组键值对(也成为标签)**唯一标识。

简单来说,就是 指标名称 + (多个键值对标签)

比如:

shell
process_cpu_seconds_total{app="prometheus", instance="localhost:9090", job="prometheus"}

指标类型

  • Counter:递增的计数器
  • Gauge:可以任意变化的数值
  • Histogram:对一段时间范围内数据进行采样,并对所有数值求和与统计数量
  • Summary:与Histogram类似

常用的指标

process_cpu_seconds_total

作用:监控 某个进程的 CPU 消耗,当前被监控进程自启动以来,在 CPU 上累计消耗的总时间(以秒为单位)。

  • 类型Counter(单调递增的计数器)
  • 单位:秒(seconds)

** 📌举个例子:**

假设你的应用进程运行了 10 分钟(600 秒),期间:

  • 有 3 个线程在满负荷跑 CPU 密集型任务(占满 2 个 CPU 核心)
  • 其余时间基本空闲

那么 process_cpu_seconds_total 的值大约是:

3 核 × 300 秒(活跃时间) = 900 秒

即使真实时钟只过了 600 秒,但因为用了 2 个核并行,CPU 总耗时就是 900 秒。

✅ 所以这个值可以超过进程的实际运行时间,这是正常现象!

🛠️ 实际用途 虽然它本身是个累计值,但配合 PromQL 函数就能发挥巨大作用。

比如:同样处理 1000 个请求,哪个版本消耗的 CPU 秒数更少。

标签

比如process_cpu_seconds_total{app="prometheus", instance="localhost:9090", job="prometheus"} 这个指标, 里面的instancejob是 Prometheus 在抓取(scrape)目标时自动注入的标签。

job 标签: 来源:来自 Prometheus 配置文件(prometheus.yml)中的 scrape_configs 下的 job_name

instance 标签:来源:默认等于抓取目标的地址(即 host:port)

当然也可以自定义标签,比如在labels下就可以新增一个idc,来标识机房

yml
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
        labels:
          app: "prometheus"
          idc: "sg"   # 自定义标签,说明是sg的机房

如有转载或 CV 的请标注本站原文地址