Prometheus处理metrics的标签
Prometheus在拉取exporter的数据之后,会对数据标签进行编辑,也允许用户通过relabel_configs对标签进行处理,包括修改、删除标签以及删除不必要的标签。
1、配置说明
相关配置具体如下:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['47.95.32.229:9100']
relabel_configs:
- source_labels: '[' <labelname> [, ...] ']' #从target数据中现有标签中选择值,source_label的值使用separator的配置进行连接,当与regex的正则表达式匹配时,进行action中配置的动作,如:替换、保留、删除等
separator: <string> | default = ; #连接source_label中的多个标签,默认值是";"
target_label: <labelname> #目标标签,当action配置为replace时,target_label是必须的
regex: <regex> | default = (.*) #通过正则表达式匹配提取值
modulus: <uint64> #获取source_labels的哈希值模数
replacement: <string> | default = $1 #如果正则表达式匹配到值的话,则用当前值进行替换
action: <relabel_action> | default = replace #对匹配到的标签进行的操作,
其中,<relabel_action>包含以下几种操作:
- replace:使用replacement的值替换被regex正则匹配到source_label;
- keep:保留被匹配到的标签的metric,删除未被匹配到标签的 metric;
- drop:删除被匹配到的标签的metric,保留未被匹配到标签的metric;
- hashmod:将target_label设置成source_label的modulus配置的hash值;
- labelmap:将regex匹配到的所有标签的名称配置成新的标签,值配置成新标签的值;
- labeldrop:将符合规则的标签删除,保留未被匹配的标签;
- labelkeep:将符合规则的标签保留,删除未被匹配的标签。
2. 给metrics添加标签
在基于Prometheus进行监控平台的设计的过程中,通过标签对metrics进行分类,所以需要给metrics添加标签。配置举例如下:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
metric_relabel_configs:
- target_label: test_key
replacement: test_value
在去Prometheus上查看收集到的metrics:
可以看到该node上的metrics都增加了test_key的label,内容为指定的test_value。
(而且标签的值还可以支持中文,这什么神仙监控组件啊,我哭了o(╥﹏╥)o)
我们可以通过这种方式metrics添加自己想要的标签,更灵活的使用Prometheus的标签处理自己的监控项。
官方文档如下:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
自勉小尾巴: 多少事,从来急;天地转,光阴迫。一万年太久,只争朝夕。