prometheus relabel_configs 实现自定义标签及分类

网友投稿 436 2022-09-10

prometheus relabel_configs 实现自定义标签及分类

1. 介绍

配​​relabel_configs​​ 的功能, Prometheus 允许用户在采集任务设置中,通过 relabel_configs 来添加自定义的 Relabeling 的额过程,来对标签进行指定规则的重写。 Prometheus 加载 Targets 后,这些 Targets 会自动包含一些默认的标签,Target 以 __ 作为前置的标签是在系统内部使用的,这些标签不会被写入到样本数据中。眼尖的会发现,每次增加 Target 时会自动增加一个 instance 标签,而 instance 标签的内容刚好对应 Target 实例的 address 值,这是因为实际上 Prometheus 内部做了一次标签重写处理,默认 address 标签设置为 : 地址,经过标签重写后,默认会自动将该值设置为 instance 标签,所以我们能够在页面看到该标签。

​​replace​​​: 根据​​regex​​​ 的配置匹配​​source_labels​​​ 标签的值(注意:多个 source_label 的值会按照​​separator​​​ 进行拼接),并且将匹配到的值写入到​​target_label​​​ 当中,如果有多个匹配组,则可以使用 ${1}, ${2}确定写入的内容。如果没匹配到任何内容则不对 target_label 进行重新, 默认为​​replace​​。​​keep​​: 丢弃 source_labels 的值中没有匹配到 regex 正则表达式内容的 Target 实例​​drop​​: 丢弃 source_labels 的值中匹配到 regex 正则表达式内容的 Target 实例​​hashmod​​: 将 target_label 设置为关联的 source_label 的哈希模块​​labelmap​​: 根据 regex 去匹配 Target 实例所有标签的名称(注意是名称),并且将捕获到的内容作为为新的标签名称,regex 匹配到标签的的值作为新标签的值​​labeldrop​​: 对 Target 标签进行过滤,会移除匹配过滤条件的所有标签​​labelkeep​​: 对 Target 标签进行过滤,会移除不匹配过滤条件的所有标签

2. 示例

2.1 kubernetes-nodes

- job_name: 'kubernetes-nodes' kubernetes_sd_configs: - role: node

- job_name: 'kubernetes-nodes' kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:9100' target_label: __address__ action: replace

9100端口变过来了,labels少,如何变多,利用​​labelmap​​功能

- job_name: 'kubernetes-nodes' kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:9100' target_label: __address__ action: replace - action: labelmap regex: __meta_kubernetes_node_label_(.+)

2.2 kubernetes-service-endpoints

- job_name: 'kubernetes-service-endpoints' kubernetes_sd_configs: - role: endpoints

发现有一些endpoints并不是我们想要的,通过label可能匹配一类有共同特点并且是我们想要展示的endpoints。我们利用​​source_labels​​​选出一个label,并通过​​regex​​​过滤我们想要的值(true),然后通过​​keep​​舍弃没有这个label并且等于这个label却值不等于true的endpoints。

kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] action: keep regex: true

- job_name: 'kubernetes-service-endpoints' kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] action: replace target_label: __scheme__ regex: (当然,metrics的路径也有可能各不相同,因此,采用正则匹配路径的各种形式。

- job_name: 'kubernetes-service-endpoints' kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] action: replace target_label: __scheme__ regex: ( - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.+)

labmap可以显示更多标签,source_labels、replace、target_label组合方法可以修改较长的label。

- job_name: 'kubernetes-service-endpoints' kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] action: replace target_label: __scheme__ regex: ( - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.+) - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] action: replace target_label: __address__ regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 - action: labelmap regex: __meta_kubernetes_service_label_(.+) - source_labels: [__meta_kubernetes_namespace] action: replace target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_service_name] action: replace target_label: kubernetes_name

2.3 kube-state-metrics

- job_name: 'kube-state-metrics' kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:8080' target_label: __address__ action: replace - source_labels: [__meta_kubernetes_service_name] action: keep regex: 'kube-state-metrics'

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kubernetes 【网络组件】coredns【1】配置使用详解
下一篇:Kubernetes 【网络组件】kube-proxy使用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~