relabel_config
重新标记是一个功能强大的工具,可以在目标的标签集被抓取之前重写它,每个采集配置可以配置多个重写标签设置,并按照配置的顺序来应用于每个目标的标签集。
目标重新标签之后,以__开头的标签将从标签集中删除的。
如果使用只需要临时的存储临时标签值的,可以使用_tmp作为前缀标识。
relabel的action类型
- replace: 对标签和标签值进行替换。
- keep: 满足特定条件的实例进行采集,其他的不采集。
- drop: 满足特定条件的实例不采集,其他的采集。
- hashmod: 这个我也没看懂啥意思,囧。
- labelmap: 这个我也没看懂啥意思,囧。
- labeldrop: 对抓取的实例特定标签进行删除。
- labelkeep: 对抓取的实例特定标签进行保留,其他标签删除。
常用action的测试
在测试前,同步下配置文件如下。
以上的机器,我已经在 hosts 做好解析了。
此时如果查看target信息,如下图。
这些都是默认的 label ,因为系统生成的 label 都是以__
开头的,目标重新标签之后,以__
开头的标签将从标签集中删除的。
replace
比如将所有 labels 中的 instance 的 9100 端口去掉
重启服务查看 target 信息如下图:
说下上面的配置:
- source_labels 指定我们我们需要处理的源标签, 我们这里处理
__address__
- target_labels 指定了我们要 replace 后的标签名字, 我们这里选择
instance
- action 指定 relabel 动作,这里使用 replace 替换动作。
- regex 去匹配源标签
__address__
的值,"(.*):9100"
代表匹配这个表情9100前部分 - replacement 指定的替换后的标签(target_label)对应的数值,采用正则引用方式获取的。
keep
比如只采集所匹配名称为 APP* 的机器。
修改配置文件如下
重启之后查看 target 如下图,可以看到只采集 APP 开头的服务器。
drop
在上面的基础上,修改 action 为 drop。
重启之后,target 如下图
action 为 drop,其实和 keep 是相似的, 不过是相反的, 只要 source_labels 的值匹配APP.*
的实例不会被采集。 其他的实例会被采集。
给 target 手动增加 label
配置文件修改为如下