1. 前言
Prometheus中,数据模型的核心是标签(Labels)。标签允许我们对指标数据进行维度化和分类,从而更好地理解系统的运行状态和性能。
本文将学习 Prometheus 中标签的基础知识,以及如何使用标签来优化指标的管理和查询。
参考文档:
2. 标签是什么?
标签是 Prometheus 数据模型中的重要组成部分,它是一个键值对,用于描述指标的维度和属性。
每个样本数据都附带一组标签,这样我们可以将数据划分为不同的维度,从而更好地分析和查询数据。
例如,对于 CPU 使用率指标,我们可以使用 instance 标签来表示不同的主机,使用 job 标签来表示不同的任务。
标签的作用包括:
- 数据分类和分组: 标签允许我们将数据按照不同的维度进行分类和分组,从而在查询和分析时更精确地选择数据。
- 查询和过滤: 标签使我们能够在查询时按照特定维度进行过滤,从而获取我们所需的数据。
- 聚合和计算: 标签使我们能够对数据进行聚合和计算,生成更高级别的指标,如平均值、总和等。
3. 使用标签
3.1. 添加标签
1 | scrape_configs: |
在上述示例中,我们通过 labels 字段添加了两个标签:app 和 environment。这样,所有从 example-host:9090 采集到的指标都会带有这两个标签,从而更好地描述数据的来源和环境。
3.2. 查询和分组
在 PromQL 查询中,我们可以使用标签进行数据的选择、分组和聚合。
例如,我们可以使用以下查询来获取特定应用的请求计数:
1 | http_requests_total{app="example-app"} |
4. relabel_configs是什么?
relabel_configs 是Prometheus中的一个关键配置项,它允许我们在数据采集之前对指标的标签进行操作。
relabel_configs 允许我们对标签进行添加、删除、重命名、合并,以及对标签值进行提取和替换等操作,以满足不同场景下的需求。
5. 使用relabel_configs
5.1. relabel_configs 的配置格式
在 Prometheus 的配置文件中,我们可以在 scrape_config(用于数据采集配置)或者 service_monitor(用于服务监控配置)中使用 relabel_configs。
下面是一个示例配置:
1 | scrape_configs: |
在上面的配置中,我们可以配置以下属性:
- source_labels:源标签,用于指定操作的源标签。
- target_label:目标标签,用于存储操作的结果。
- action:操作类型,可以是 keep(保留)、drop(删除)、replace(替换)和 labelmap(从标签名中提取)。
- regex:正则表达式,用于匹配源标签的值。
- replacement:在替换操作中使用的字符串。
5.2. relabel_configs 常见操作
1 | scrape_configs: |
5.3. relabel_configs示例
场景: 我们有一个 Kubernetes 集群中运行的微服务架构,每个服务都暴露了 /metrics 端点。我们想要为每个服务添加一个标签,以标识不同的应用。
步骤:
1、在 Prometheus 的 scrape_configs 中,配置每个服务的 job_name 和 targets。
2、使用 relabel_configs 来为每个服务添加一个标签,如 app_name。
以下是一个示例的配置:
1 | scrape_configs: |
在上述配置中,我们使用 relabel_configs 将 Kubernetes 服务标签 __meta_kubernetes_service_label_app
的值赋给了 app_name 标签。
6. relabelings是什么?
relabelings是Kubernetes servicemonitor中专用配置项,配置方式和 relabel_configs 相同。
relabelings 和 relabel_configs 有什么区别?名字不同,子项的大小写不同,其余没有区别。