Prometheus监控实战系列八:标签重写

news/2024/5/19 0:03:33 标签: prometheus, 正则表达式

标签重写(Relabeling)是Prometheus一个非常有用的功能,它可以在任务拉取(scraping)阶段前,修改target和它的labels。

1、默认标签

默认情况下,Prometheus加载targets后,都会包含一些默认的标签,其中以__作为前置的标签是在系统内部使用的,因此这些标签不会写入到样本数据中。
在这里插入图片描述
如:

address:当前Target实例的访问地址

scheme:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS;

metrics_path:采集目标服务访问地址的访问路径;

2、relabel_config

标签重写的配置参数为relabel_config,其完整的配置格式如下 :

#源标签,需要在现有标签中已存在
[ source_labels: '[' <labelname> [, ...] ']' ]
 
# 多个源标签的分隔符;
[ separator: <string> | default = ; ]
 
# 要替换的目标标签;
[ target_label: <labelname> ]
 
# 正则表达式,用于匹配源标签的值
[ regex: <regex> | default = (.*) ]
 
# 源标签值取hash的模块;
[ modulus: <uint64> ]
 
# 当正则表达式匹配时,用于替换的值,$1代替正则匹配到的值;
[ replacement: <string> | default = $1 ]
 
# 基于正则匹配的动作
[ action: <relabel_action> | default = replace ]

其中,相关的action类型有如下几种:

  • replace:正则匹配源标签的值用来替换目标标签,如果有replacement,使用replacement替换目标标签;
  • keep: 如果正则没有匹配到源标签的值,删除该targets ,不进行采集;
  • drop: 与keep相反,正则匹配到源标签,删除该targets;
  • labelmap:正则匹配所有标签名,将匹配的标签值部分做为新标签名,原标签值 做为新标签的值;
  • labeldrop:正则匹配所有标签名,匹配则移除标签;
  • labelkeep:正则匹配所有标签名,不匹配的标签会被移除;

注意:重定义标签并应用后,__开头的标签会被删除;要临时存储值用于下一阶段的处理,使用__tmp开头的标签名,这种标签不会被Prometheus使用;

3、功能操作

在开始测试前,我们先配置一个测试Job,该Job包含两个实例,实例分别包含了两个标签,machine_hostnamemachine_idc__

# 被监控机器
  - job_name: 'agent1'
    scrape_interval: 15s
    scrape_timeout: 10s
    static_configs:
    - targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
      labels:
        __machine_hostname__: 'node-01'
        __machine_idc__: 'idc-01'
    - targets: ['192.168.75.162:9100']
      labels:
        __machine_hostname__: 'node-02'
        __machine_idc__: 'idc-02'

在这里插入图片描述

3.1 replace操作

将machine_hostname的值替换到新标签hostname

# 被监控机器
  - job_name: 'agent1'
    scrape_interval: 15s
    scrape_timeout: 10s
    static_configs:
    - targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
      labels:
        __machine_hostname__: 'node-01'
        __machine_idc__: 'idc-01'
    - targets: ['192.168.75.162:9100']
      labels:
        __machine_hostname__: 'node-02'
        __machine_idc__: 'idc-02'
    relabel_configs:
    - source_labels: [__machine_hostname__]
      regex: "(.*)"
      target_label: 'hostname'
      action: replace
      replacement: '$1'

重启Prometheus后,查看target信息如下:
在这里插入图片描述

3.2 keep/drop操作

排除标签值不匹配正则的targets 目标,此处正则匹配machine_hostname: 'node-01'

  # 被监控机器
  - job_name: 'agent1'
    scrape_interval: 15s
    scrape_timeout: 10s
    static_configs:
    - targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
      labels:
        __machine_hostname__: 'node-01'
        __machine_idc__: 'idc-01'
    - targets: ['192.168.75.162:9100']
      labels:
        __machine_hostname__: 'node-02'
        __machine_idc__: 'idc-02'
    relabel_configs:
    - source_labels: [__machine_hostname__]
      regex: "(.*)-01"
      target_label: 'hostname'
      action: keep
      replacement: '$1'

在这里插入图片描述
如果将上面配置的action改为drop,则结果相反,将删除正则匹配到标签的实例。
在这里插入图片描述

3.3 labelmap操作

重写新的标签hostnameidc,使用原有machine_hostnamemachine_idc标签的值。

 # 被监控机器
  - job_name: 'agent1'
    scrape_interval: 15s
    scrape_timeout: 10s
    static_configs:
    - targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
      labels:
        __machine_hostname__: 'node-01'
        __machine_idc__: 'idc-01'
    - targets: ['192.168.75.162:9100']
      labels:
        __machine_hostname__: 'node-02'
        __machine_idc__: 'idc-02'
    relabel_configs:
      - action: labelmap
        regex: __machine_(.+)__

查看target信息,可看到重写的新标签。
在这里插入图片描述

上一篇:Prometheus监控实战系列七:任务与实例
下一篇:Prometheus监控实战系列九:主机监控


http://www.niftyadmin.cn/n/179743.html

相关文章

愚人节与海外网红营销相遇:这些品牌的营销创意让人眼前一亮

愚人节是一年一度的恶作剧日&#xff0c;也是各大品牌营销的黄金时期。在这一天&#xff0c;各大企业和网红们都会用独特的方式为消费者带来欢乐和惊喜。在这篇文章中&#xff0c;Nox聚星将分享一些成功的愚人节海外网红营销案例&#xff0c;希望能给您带来一些营销灵感。 1、快…

【SSM】Spring + SpringMVC +MyBatis 框架整合

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ SSM框架整合一、导入相关依赖二、配置web.xml文…

嵌入式驱动开发(入门)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 现在的嵌入式芯片越来越多&#xff0c;从51、stm32、soc到gpu、fpga、dsp等专用芯片&#xff0c;基本上只要涉及到逻辑编程&#xff0c;就会涉及到…

国产蓝牙耳机哪个好?2023国产无线蓝牙耳机排名

随着智能终端的不断普及&#xff0c;以及消费者对高质量的耳机产品的日益增长的需求&#xff0c;功能也将不断提升&#xff0c;对于绝大多数用户来说&#xff0c;蓝牙耳机听音乐给力就足够了&#xff0c;这次为大家带来4款热门国产真无线蓝牙耳机&#xff0c;整体听感不俗。大家…

山东大学机器学习大作业

数据处理与可视化这里是DLRM模型数据集预处理模块&#xff1a;args.ln_emb ln_emb.tolist() m_spa args.arch_sparse_feature_sizeln_emb np.asarray(ln_emb)num_fea ln_emb.size 1 # num sparse num dense featuresm_den_out ln_bot[ln_bot.size - 1]Sparse fea 26, D…

Tomcat启动JSP项目,搞起来了

虽然有点复古&#xff0c;但是还是有很多小伙伴在使用的&#xff0c;小编来一篇保姆级教程 1、用idea打开jsp项目 2、添加tomcat配置 3、点击后会出现配置框,这里画框的地方都选上&#xff0c;版本选择1.8&#xff0c;其他的信息内容默认后&#xff0c;点击确认 4、点击…

【LeetCode】剑指 Offer 42. 连续子数组的最大和 p218 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/ 1. 题目介绍&#xff08;42. 连续子数组的最大和&#xff09; 输入一个整型数组&#xff0c;数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度…

aliexpress.接入API文档说明及参数说明

item_get-获得aliexpress商品详情 aliexpress.item_get 公共参数 请求地址: 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_sea…