prometheus relabel_configs 标签重写
标签重写
双下划线“__address__”的标签是系统默认标签,是不会显示在metrics里面的。
默认的标签是不显示的,需要鼠标放到label上才会显示。
标签重写规则:
source_labels: [<labelname>,] # 原始标签,多个用分隔符分割 separator: ; # 分隔符,将source_labels的多个“值”进行连接 regex: (.+) # 使用正则去匹配source_labels中的标签 target_label: # regex规则匹配到的标签放到这里 replacement: $1 # 对某一部分进行操作 action: replace # 执行的动作
action:
替换标签值:
replace: 根据 regex 的配置匹配 source_labels 标签的值(注意:多个 source_label 的值会按照 separator 进行拼接),并且将匹配到的值写入到 target_label 当中,如果有多个匹配组,则可以使用 ${1}, ${2} 确定写入的内容。如果没匹配到任何内容则不对 target_label 进行重新, 默认为 replace。
hashmod: 将 target_label 设置为关联的 source_label 的哈希模块
删除指标:如:不想监控某个target可以用drop删除。
keep: 丢弃 source_labels 的值中没有匹配到 regex 正则表达式内容的 Target 实例
drop: 丢弃 source_labels 的值中匹配到 regex 正则表达式内容的 Target 实例
创建或删除标签:
labelmap: 改标签名称
labeldrop: 对 Target 标签进行过滤,会移除匹配过滤条件的所有标签
labelkeep: 对 Target 标签进行过滤,会移除不匹配过滤条件的所有标签
示例:
添加标签:
- job_name: 'prometheus' static_configs: - targets: [ 'localhost:9090'] labels: env: 'prod' # 标签1 __hostname__: 'localhost' # 标签2,不显示到metrics
热加载配置:
curl -XPOST http://localhost:9090/-/reload
删除标签:
- job_name: 'delete_label' relabel_configs: - regex: metadata_user_(.+) action: labeldrop
修改标签名称:
relabel_configs: - action: replace # 执行的动作为替换 source_labels: [__meta_consul_node] target_label: hostname # 新的标签名称
修改后效果:
替换标签:替换标签的键名与值
- job_name: 'elasticsearch' metrics_path: "/metrics" static_configs: - targets: - '10.32.238.22:9114' labels: service: elasticsearch # 新添加的标签 relabel_configs: - action: replace # 执行的动作,默认就是这个值,可以省略不写。 source_labels: [__address__] # 要替换的标签 regex: '(.*)\:9114' # 正则匹配标签中的值,以备后面替换使用 target_label: 'instance' # 替换后的标签名,instance=$1,target_label用于创建新标签 replacement: '$1' # 替换为正则匹配中的子模式的值,就是regex中的括号里的值
批量匹配标签:
action: labelmap #根据 regex 去匹配 Target 实例所有标签的名称(注意是名称),并且将捕获到的内容作为为新的标签名称,regex 匹配到标签的的值作为新标签的值。
relabel_configs: - action: labelmap regex: __meta_consul_(.+)
修改效果如下:匹配到的标签都成为新标签。
更多示例:
scriptjc.com/article/1228
参考文章:
http://www.51niux.com/?id=254
指标重写
对抓取到的指标数据metrics的名称进行重写。
删除某个指标数据:这里删除的是某个指标,而不是指标中{}里面的标签。
metric_relabel_configs: - source_labels: - __name__ regex: "go_info.*" action: drop