当前位置: 首页 > news >正文

5、prometheus标签

Prometheus标签

本章重点: 标签说明,标签二次处理,标签打标规则,重新打标说明

参考:prometheus监控实战一书+ai优化

一、标签核心认知

标签是Prometheus时间序列数据的核心维度,其核心作用是为指标提供上下文信息、定义监控目标,与指标名称共同构成时间序列的唯一标识——标签的任何变更(新增、修改、删除)都会生成全新的时间序列。

⚠️关键警示:标签变更会断裂历史数据连续性,导致监控图表断层、警报规则失效等问题,需谨慎设计标签体系并尽量保持稳定。

二、Target重新打标:抓取前的标签预处理

Target重新打标是在指标抓取前对监控目标标签的预处理操作,支持删除标签、修改标签值、重命名标签等场景。每个抓取配置(scrape_configs)中可定义多组打标规则,按顺序执行。

2.1 默认打标行为

Prometheus对发现的每个Target会自动执行以下默认打标操作,无需手动配置:

  1. job标签值设为当前抓取配置的job_name
  2. __address__标签值设为Target的“IP:端口”套接字地址;
  3. instance标签值默认设为__address__的值;
  4. __scheme__标签值设为抓取协议(默认http);
  5. __metrics_path__标签值设为指标抓取路径(默认/metrics);
  6. __param_<name>标签值设为URL参数中第一个名为的值。

2.2 核心打标规则配置

通过relabel_configs定义打标规则,核心配置字段如下(方括号表示可选):

# 1. 源标签:从现有标签中选择值,多标签会按separator拼接
[ source_labels: [ <labelname> [, ...] ] ]
# 2. 分隔符:多源标签值的拼接符,默认分号(;)
[ separator: <string> | default = ; ]
# 3. 目标标签:替换或新增的标签名(replace动作必选)
[ target_label: <labelname> ]
# 4. 正则表达式:匹配源标签值的模式,默认匹配所有(.*)
[ regex: <regex> | default = (.*) ]
# 5. 哈希模:对源标签哈希值取模(仅hashmod动作使用)
[ modulus: <int> ]
# 6. 替换值:匹配后替换的内容,支持引用正则分组($1表示第一个分组)
[ replacement: <string> | default = $1 ]
# 7. 执行动作:核心操作类型,默认replace
[ action: <relabel_action> | default = replace ]

2.3 七大核心动作详解

这里定义上面第7步action动作

动作类型作用说明关键场景
replace拼接源标签值并匹配正则,将结果赋值给目标标签修改标签值、拼接多标签生成新标签
hashmod对源标签哈希值取模,结果赋值给目标标签负载均衡、数据分片
keep正则不匹配源标签值时,删除该Target保留特定标签的目标(如生产环境节点)
drop正则匹配源标签值时,删除该Target剔除无效目标(如测试环境节点)
labelmap用正则匹配所有标签名,按替换规则生成新标签批量重命名标签(如给标签加前缀)
labeldrop用正则匹配标签名,删除匹配到的标签剔除冗余标签(如敏感元数据)
labelkeep用正则匹配标签名,保留匹配到的标签,删除其他精简标签集(如仅保留核心业务标签)

2.4 打标关键注意事项

  • 元标签使用:打标时可引用服务发现生成的__meta_*元标签(如K8s的__meta_kubernetes_pod_name);
  • 临时标签前缀:如需临时存储标签值,需用__tmp为前缀(如__tmp_temp_label),避免与内置标签冲突;
  • 内置标签清理:打标完成后,所有以__开头的标签会自动删除,无需手动处理。

三、标签分类:标准化标签体系设计

合理的标签分类可提升监控数据的可分析性,推荐按“拓扑维度”和“业务模式维度”划分:

分类定义典型标签示例核心作用
拓扑标签(Topological Label)按物理或逻辑架构划分服务组件的标签job(任务名)、instance(实例名)、namespace(命名空间)、node(节点名)定位监控目标的部署位置和所属任务
模式标签(Schematic Label)描述业务特征或请求属性的标签service(服务名)、env(环境)、error_code(错误码)、user(用户)、method(请求方法)实现业务维度的聚合分析(如按环境统计错误率)

最佳实践:固定拓扑标签(如job、instance),按需扩展模式标签(如env、service),避免标签数量过多(单指标建议不超过10个标签)。

请添加图片描述

四、标签实操:常用场景配置示例

以下示例基于文件服务发现(file_sd)或静态配置,核心规则可复用至其他服务发现模式(如K8s SD)。

4.1 标签添加:静态添加与批量生成

场景1:静态配置直接添加标签

适用于静态目标,直接在配置中定义业务标签:

- job_name: 'zookeeper_exporter'static_configs:- targets: ["192.168.0.10:9143"]  # Zookeeper监控目标labels:service: "zookeeper"  # 业务服务标签env: "production"     # 环境标签cluster: "cluster-1"  # 集群标签
场景2:批量重命名标签(labelmap)

将现有标签名按规则重命名并生成新标签,原标签可通过labeldrop删除:

- job_name: 'node_exporter'file_sd_configs:- files: ["targets/node*.yaml"]  # 文件服务发现目标refresh_interval: 30srelabel_configs:# 匹配job和app开头的标签,重命名为"原标签名_name"(如job→job_name)- regex: "^(job|app).*"replacement: "${1}_name"action: labelmap# 可选:删除原标签(注释后保留原标签)# - regex: "^(job|app)$"#   action: labeldrop

4.2 标签替换:多标签拼接与格式优化

将协议、地址、路径等标签拼接为标准端点地址,赋值给新标签endpoint:

- job_name: 'node_exporter'file_sd_configs:- files: ["targets/node*.yaml"]refresh_interval: 30srelabel_configs:- source_labels: [__scheme__, __address__, __metrics_path__]separator: ""  # 取消拼接分隔符regex: "(http|https)(.*)(/.*)"  # 正则分组匹配协议、地址、路径target_label: "endpoint"        # 目标标签名replacement: "${1}://${2}${3}"  # 拼接为完整URL(如http://192.168.0.236:9100/metrics)action: replace

对应目标文件(targets/node-exporter.yaml):

- targets: ["192.168.0.236:9100"]labels:job: "node_exporter"

4.3 目标过滤:保留/删除指定Target

场景1:保留生产环境目标(keep)

通过标签匹配保留特定环境的Target,剔除其他环境:

- job_name: 'app_exporter'file_sd_configs:- files: ["targets/app*.yaml"]refresh_interval: 30srelabel_configs:# 仅保留env标签为production的目标- source_labels: [env]regex: "production"action: keep
场景2:删除指定节点目标(drop)

通过地址匹配删除节点名大于1的Target(如node2、node3):

- job_name: 'node_exporter'file_sd_configs:- files: ["targets/node*.yaml"]refresh_interval: 30srelabel_configs:# 匹配地址以node2-node9开头的目标并删除- source_labels: [__address__]regex: "^node[2-9].*"  # 正则匹配节点名action: drop

五、Metrics重新打标:抓取后的指标处理

Metrics重新打标(metric_relabel_configs)与Target打标逻辑完全一致,区别在于执行时机——在指标抓取后、存储前执行,用于处理指标级别的标签或过滤指标。

5.1 核心使用场景

  1. 删除无用指标(如Go语言内置指标);
  2. 修改指标的标签值或新增标签;
  3. 剔除指标中的敏感标签(如包含IP的instance标签)。

5.2 常用配置示例

- job_name: 'node_exporter'static_configs:- targets: ["192.168.0.236:9100"]# 指标级打标规则(抓取后执行)metric_relabel_configs:# 1. 删除指定指标(Go内置的GC和版本指标)- source_labels: [__name__]  # __name__是指标名的内置标签regex: 'go_gc_duration_seconds|go_info'  # 多指标用|分隔action: drop# 2. 复制标签值(将instance标签值复制给cce标签)- source_labels: [instance]regex: '(.*)'replacement: "$1"target_label: cceaction: replace# 3. 删除敏感标签(如instance标签)- regex: 'instance'action: labeldrop

六、标签使用最佳实践

  1. 标签命名规范:使用小写字母+下划线(snake_case),避免特殊字符,标签名需语义清晰(如用env而非e);
  2. 避免高频变更:拓扑标签(job、instance)建议永久固定,模式标签(如user)避免用于高频变化的维度(可改用日志记录);
  3. 控制标签数量:单指标标签不超过10个,避免“标签爆炸”导致存储和查询性能下降;
  4. 复用元标签:服务发现生成的__meta_*标签可直接用于打标(如K8s的命名空间、Pod名);
  5. 测试打标效果:通过Prometheus WebUI的“Status → Targets”查看打标后的标签,确认规则生效后再上线。
http://www.dtcms.com/a/580896.html

相关文章:

  • python+django/flask基于机器学习的就业岗位推荐系统
  • Mysql作业5
  • 为什么Vue 3需要ref函数?它的响应式原理与正确用法是什么?
  • STM32外设学习--TIM定时器--输入捕获---测频方法(代码编写)
  • 如何设置JVM参数避开直接内存溢出的坑?
  • (七)嵌入式面试题收集:8道
  • AI搜索营销破局:光引GEO多平台适配与实时优化引擎开发详解
  • 【有源码】基于Hadoop+Spark的起点小说网大数据可视化分析系统-基于Python大数据生态的网络文学数据挖掘与可视化系统
  • Windows10 wsl2 ubuntu22.04 docker安装
  • 使用docker-compose部署应用保姆级教程
  • 【Linux工具链】从跨平台适配到一键部署:yum多架构支持+Vim远程编辑+gcc交叉编译,解决多场景开发效率瓶颈
  • 简单做网站企业宣传视频制作免费模板
  • 西安SEO网站建设哪家好食品网站的网页设计
  • 网站开发公司哪家好嘉兴市建设工程监理协会网站
  • 天津做一个简单的网站首页wap门户网站源码
  • 热门软件排行榜泰州网站关键词优化
  • 怎么查询网站开发公司个人网站数据库大小
  • 营销型网站和传统网站区别ui设计技能就业培训
  • 威宁住房和城乡建设局网站wordpress is ssl
  • 网站域名缴费wordpress怎么改登陆地址
  • 网站底备案号链接代码小程序登录入口qq浏览器
  • 电商网站建设功能个人网页免费域名注册入口
  • 网站建设所用系统没有文字的网站怎么优化
  • 站长工具seo综合查询隐私查询做网站功能
  • 扬州市广陵区建设局网站做代理稳妥的彩票网站有哪些
  • 软件下载类型网站怎么做建筑公司资质甲级乙级
  • 自己建站百度企业查询官网
  • 如皋建设网站wordpress中级教程
  • 正规轻电商网站模板做美足网站违法吗
  • 可以做本地生活服务的有哪些网站平面设计作品欣赏官网