prometheus

Prometheus-Relabel

2019-09-27  本文已影响0人  潘猛_9f76
relabel流程
Target([source_label,…]) -> relabel ->  Target ([target_label,…])
Relabel的配置
 [ source_labels: '[' <labelname> [, ...] ']' ]
 [ separator: <string> | default = ; ]
 [ target_label: <labelname> ]
 [ regex: <regex> | default = (.*) ]
 [ modulus: <uint64> ]
 [ replacement: <string> | default = $1 ]
 [ action: <relabel_action> | default = replace ]
Relabel的action
ACTION Regex匹配 操作对象 重要参数 描述
keep 标签值 Target 源标签、regex 丢弃指定源标签的标签值没有匹配到regex的target
Drop 标签值 Target 源标签、regex 丢弃指定源标签的标签值匹配到regex的target
labeldrop 标签名 Label Regex 丢弃匹配到regex 的标签
labelkeep 标签名 Label Regex 丢弃没有匹配到regex 的标签
Replace 标签值 Label名+值 源标签、目标标签、替换(值)、regex(值) 更改标签名、更改标签值、合并标签
hashmod 标签名+值 源标签、hash长度、target标签 将多个源标签的值进行hash,作为target标签的值
labelmap 标签名 标签名 regex、replacement Regex匹配名->replacement用原标签名的部分来替换名

replace是缺省action,可以不配置action
使用labeldrop 和labelkeep Relabel后需要注意保证metrics+labels唯一
Replacement会用到了正则捕获组,需要自行补充相关知识

如何查看源标签

从prometheus-》status-》service Discovery


image.png
过滤target
scrape_configs:
 - …
 - job_name: "cephs"
    relabel_configs:
      - action: keep
        source_labels:
          -  __address__
        regex:  ceph01.* 

relabel结果可以在Prometheus网页的status/ Service Discovery中查看


image.png
scrape_configs:
 - …
 - job_name: "cephs"
    relabel_configs:
      - action: drop
        source_labels:
          -  __address__
        regex:  ceph01.*
image.png
删除标签

将标签名为job的标签删除

scrape_configs:
 - …
  - job_name: "cephs"
    relabel_configs:
      - regex: job
        action: labeldrop
image.png

labelKeep和labeldrop不操作’__’开头的标签,要操作需要先改名

修改label名

使用replace将scheme标签改名为protocol

scrape_configs:
  - …
  - job_name: "cephs"
    relabel_configs:
      - source_labels:
          - __scheme__
        target_label: procotol
image.png

这里可以是多个source_labels,只有值匹配到regex,才会进行替换

scrape_configs:
  - …
  - job_name: "sd_file_mysql"
    file_sd_configs:
      - files:
        - mysql.yml
        refresh_interval: 1m
    relabel_configs:
      - action: labelmap
        regex: (.*)(address)(.*) 
        replacement: ${2}
image.png
修改label值

配置k8s服务发现

scrape_configs:
  - …
  - job_name: "sd_k8s_nodes"
    kubernetes_sd_configs:
      - role: node
        bearer_token_file: bearer_token
        tls_config:
          ca_file: ca.crt
        namespaces:
          names:
            - default
        api_server: https://master01:6443

服务发现完成后,默认node的port是10250,会无法取得数据,同通过relabel修改标签.

    relabel_configs:
      - source_labels:
         - __address__
        regex: (.*)\:10250
        replacement: "${1}:10255"
        target_label: __address__
image.png
多标签合并

标签合并,可以将多个源标签合并为一个目标标签,可以取源标签的值,也可以进行hash,用户target分组

scrape_configs:
- …
  - job_name: "sd_file_mysql"
    file_sd_configs:
      - files:
        - mysql.yml
        refresh_interval: 1m
    relabel_configs:
      - source_labels:
          - sd_type
          - filename
        separator: ;
        target_label: sd
image.png
scrape_configs:
  - …
  - job_name: "sd_file_mysql"
    file_sd_configs:
      - files:
        - mysql.yml
        refresh_interval: 1m
    relabel_configs:
      - action: hashmod
        source_labels:
          - __scheme__
          - __metrics_path__
        modulus: 64
        target_label: hash_id
image.png
完整案例

以下是一个完整的relabel案例,这个案例包括

这个案例说明源标签是可以重复使用的


image.png
上一篇 下一篇

猜你喜欢

热点阅读