3.prometheus标签的使用
一、概述标签Label的使用
通过重新标记,你可以控制、管理并标准化环境中的指标。
重新标记操作一般常见的情况:1. 删除不必要的指标。2. 从指标中删除敏感或不需要的标签。3. 添加、编辑或者修改指标的标签值或者标签格式。
prometheus 从数据源拉取数据后,会对原始数据进行编辑;其中 metric_relabel_configs 是 prometheus 在保存数据前的最后一步标签重新编辑。
所以,哪怕你将 metric_relabel_configs 模块放在 job_name 模块的最前端,prometheus 解析编辑文件后,也会将 metric_relabel_configs 放在最后。
metric_relabel_configs 模块和 relabel_config 模块很相似。metric_relabel_configs 一个很常用的用途:将监控不需要的数据,直接丢掉,不在prometheus 中保存。
标签的重命名可以在两个阶段修改:1、重新标记来自服务发现的目标,即在scape之前 --- relabel_configs;2、scape之后但在保存到存储系统之前 --- metric_relabel_configs。
二、metric_relabel_configs
1、删除不必要的指标(metric):
metric_relabel_configs: - source_labels: [__name__] regex: 'node_network_receive.*' action: drop
更新配置后,在prometheus的搜索框内找不到该关键字开头的metric
注:多个标签通过分隔符连接在一起,默认分隔符为“;”,也可以使用separator参数覆盖分隔符配置。
action中drop操作,这将在数据存储之前删除指标。其他操作(如keep)则会保留与正则表达式匹配的指标。并删除所有其他指标。
2、更换标签:实际上是根据已有标签,生成一个新的标签
许多cAdvison指标都有一个id标签,其中包含正在运行的进程的名称。如果将进程id重新定义一个标签,放入container_id。
未更换之前:
- job_name: 'CAdvisor' static_configs: - targets: ['192.168.42.133:8181'] metric_relabel_configs: - source_labels: [id] regex: '/.*' replacement: '1234' target_label: container_id - source_labels: [job] regex: 'CAdvisor.*' replacement: 'myCAdvisor' target_label: myjob
更改配置之后:
3、删除标签
例,删除CAdvisor job中的id标签
- job_name: 'CAdvisor' static_configs: - targets: ['192.168.42.133:8181'] metric_relabel_configs: - source_labels: [id] regex: '/.*' replacement: '1234' target_label: container_id - source_labels: [job] regex: 'CAdvisor.*' replacement: 'myCAdvisor' target_label: myjob - regex: 'id.*' action: labeldrop
删除之后对比:
三、总结
action:重新标签动作
* replace:默认,通过regex匹配source_label的值,使用replacement来引用表达式匹配的分组
* keep:删除regex与连接不匹配的目标 source_labels
* drop:删除regex与连接匹配的目标 source_labels
* labeldrop:删除regex匹配的标签
* labelkeep:删除regex不匹配的标签
* hashmod:设置target_label为modulus连接的哈希值source_labels
* labelmap:匹配regex所有标签名称。然后复制匹配标签的值进行分组,replacement分组引用(${1},${2},…)替代
Tips:promtool check config prometheus.yml #检查配置文件语法