
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"} 这个指标, 里面的instance和job是 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的机房
