Prometheus 标签(Label)是什么?
标签是 Prometheus 数据模型的核心:指标名 + 一组键值对标签唯一确定一条时间序列。本文讲清标签的作用、与指标名的关系、基数概念与使用规范。
标签(Label)是附加在指标上的键值对维度,例如 http_requests_total{method="GET", status="200"}——同一个指标名靠不同标签组合区分出多条时间序列,查询时按标签过滤与分组。
标签的作用
没有标签的监控系统需要为每个维度造一个指标名(requests_get_200、requests_post_500……),无法聚合。有了标签:
- 一个指标名承载所有维度:
http_requests_total即可; - 灵活切片:
sum by (method)按方法看、{status="500"}只看错误; - 动态发现:新实例上线自动带
instance标签入库,无需改配置。
关键概念:序列与基数
每条指标名 + 完整标签集 = 一条独立时序。标签取值越多,序列(基数)越多——这是 Prometheus 性能的核心变量,用户 ID 这类无限取值的字段绝不能做标签。
两类标签
| 类型 | 来源 | 例子 |
|---|---|---|
| 目标标签 | 抓取配置/服务发现附加 | job、instance、datacenter |
| 指标标签 | 应用埋点时定义 | method、status、endpoint |
观测云对照
观测云全面沿用标签数据模型,标签在查看器中是可视化筛选项,并额外提供"标签管理"能力统一治理各数据类型的标签规范。
常见问题(FAQ)
Q:标签和注解(Annotation)有什么区别? 标签进存储参与索引查询;注解只在告警里做展示文案,不可查询。
Q:标签值能改吗? 序列的标签是身份,不可变——"改标签"实际是产生一条新序列。