首页 > 其他分享 >2.Prometheus的Relabeling机制(标签的增删改查)

2.Prometheus的Relabeling机制(标签的增删改查)

时间:2023-01-23 13:12:18浏览次数:42  
标签:regex __ target 标签 改查 Relabeling Prometheus relabel configs

1.Relabeling 标签重写介绍
2.relabel功能详解
3.标签增删改查

Relabeling标签重写介绍

在Prometheus所有的Target实例中,都包含一些默认的Metadata标签信息。可以通过Prometheus UI的Targets页面中查看这些实例的Metadata标签的内容:

默认情况下,当Prometheus加载Target实例完成后,这些Target时候都会包含一些默认的标签:

  • address:当前Target实例的访问地址:
  • scheme:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS
  • metrics_path:采集目标服务访问地址的访问路径
  • _param:采集任务目标服务的中包含的请求参数

一般来说,Target以__作为前置的标签是在系统内部使用的,因此这些标签不会被写入到样本数据中。不过这里有一些例外,例如,我们会发现所有通过Prometheus采集的样本数据中都会包含一个名为instance的标签,该标签的内容对应到Target实例的__address__。 这里实际上是发生了一次标签的重写处理。

这种发生在采集样本数据之前,对Target实例的标签进行重写的机制在Prometheus被称为Relabeling。

Prometheus允许用户在采集任务设置中通过relabel_configs来添加自定义的Relabeling过程。

Relabel用来重写target的标签
每个Target可以配置多个Relabel动作,按照配置文件顺序应用
Target包含一些内置的标签(以’__'开头),都可以用于relabel,在relabel时未保留,内置标签将被删除

Relabel功能详解

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唯一

regex 和 replacement 参数详解
regex 正则匹配字段是标签名、标签值具体看上面的表格, Replacement会用到了正则捕获组(需要自行补充相关知识)来替换相应的值(标签名、值)

如何查看源标签
从prometheus --> status --> service Discovery

3.标签的增删改

3.1使用keep保留标签值regex到的targets

使用keep,保留标签值匹配regex的targets

scrape_configs:
 - …
 - job_name: "cephs"
    relabel_configs:
      - action: keep
        source_labels:
          -  __address__
        regex:  ceph01.* 

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

3.2使用drop 丢弃标签值regex到的targets

scrape_configs:
 - …
 - job_name: "cephs"
    relabel_configs:
      - action: drop
        source_labels:
          -  __address__
        regex:  ceph01.*

labeldrop or labelkeep

将标签名为job的标签删除

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


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

3.4修改标签的名称

使用replace将scheme标签改名为protocol

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


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

使用labelmap,将原始标签的一部分转换为target标签,这一功能replace无法实现

修改标签的值

修改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__

多标签合并

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

在文件服务发现中,将标签filename=“mysql.yml” 和sd_type="file"合并为sd=”file;mysql.yml”,标签值使用分号连接

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


将多个标签的值进行hash,形成一个target标签,只要target标签一致,则表示源标签一致,可以用来实现prometheus的负载均衡

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

完整案例

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

  • 根据标签值过滤target
  • 合并标签值,并进行正则匹配
  • 修改标签名
  • 直接添加标签名

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

标签:regex,__,target,标签,改查,Relabeling,Prometheus,relabel,configs
From: https://www.cnblogs.com/yangtao416/p/17065044.html

相关文章

  • MyBatis中配置文件实现增删改查
    配置文件完成增删改查:完成品牌数据的增删改查操作要完成的功能列表清单:​ 1、查询:​ 查询所有数据​ 查看详情​ 条件查询​ 2、添加​ 3、......
  • (17)go-micro微服务Prometheus监控
    目录一Prometheus监控介绍1.微服务监控系统promethues介绍2.微服务监控系统promethues工作流程二Prometheus监控重要组件和重要概念1.微服务监控系统promethues重要组件2......
  • prometheus告警处理Alertmanager
    1.prometheus告警简介prometheus告警架构分成两个独立的部分。通过prometheus中定义AlertRule,prometheus会周期的对告警规则进行计算,如果满足告警触发条件就会向Ale......
  • 一个User表的增删改查,我写了近200行代码
    Redis多级缓存架构的升级之路​​一、基础版(包含基础操作)​​​​二、升级版1.1(处理缓存数据一致性问题)​​​​三、升级版1.2(处理缓存数据一致性问题)​​​​四、优化版(优......
  • Prometheus Pushgateway数据推送失败(windows)
    环境windows10pushgatewayprometheus问题启动pushgateway及Prometheus后,通过curl往pushgateway推送数据出现以下问题C:\Users\Jruing>echo'cpu2'|curl--da......
  • 使用vector采集nginx日志,并输出为prometheus_exporter
    日志示例{"remote_addr":"10.43.144.171","@timestamp":"2023-01-17T17:27:14+08:00","request":"GET/v1/stat_des/?id=20230117170221HTTP/1.1","status":"200","size......
  • 1.Prometheus监控
    1.运维的主要职责2.监控的作用1.运维的主要职责主要职责是维护服务器,保证线上的产品稳定的运行!出现问题能及时的处理,保证用户数据的安全!2.监控的作用主要是为了保证......
  • Prometheus笔记-Grafana可视化
    Grafana官网下载Grafana[root@VM-24-9-centosPrometheus_server]#wgethttps://dl.grafana.com/oss/release/grafana-9.3.2.linux-amd64.tar.gz安装Grafana[root@VM......
  • 云原生周刊 | 使用 ChatGPT 协助解决 Prometheus 告警
    开源项目推荐kubernetes-chatgpt-bot这是一个适用于Slack的ChatGPT机器人,只要有监控告警发送到Slack频道中,你就可以通过机器人向ChatGPT咨询如何解决这个告警,Cha......
  • Prometheus笔记-安装blackbox_exporter
    BlackboxExporter是Prometheus社区提供的官方黑盒监控解决方案,其允许用户通过:HTTP、HTTPS、DNS、TCP以及ICMP 的方式对网络进行探测。我们可以利用这个exporter定时访问......