• Prometheus 重新打标


    target 重新打标

    对 target 重新打标是在数据抓取之前动态重写 target 标签的强大工具. 在每个数据抓取配置中, 可以定义多个 relabel 步骤, 他们将按照定义的顺序依次执行.

    对于发现的每个 target, Prometheus 默认会执行如下操作.

    • job 的标签设定为所属的 job_name 的值.

    • __address__ 标签的值为该 target 的套接字地址

    • instance 标签的值为 __address 的值.

    • __scheme__ 标签的值为抓取该 target 上标签时使用的协议,

    • __metrics_path__ 标签的值为抓取该 target 上的指标时使用的 URL 默认路径, 默认为/metrics

    • __param_<name> 标签的值为传递的URL参数中第一个名称为 <name> 的参数的值.

    重新标记期间, 还可以使用该 target 上以 __meta_ 开头的元标签

    • 各服务发现机制为其target 添加的元标签会有所不同.

    重新标记完成后, 该 target 上以 __ 开头的所有标签都会被移除.

    • 所在 relabel 的过程中 需要临时存储标签值, 则要使用 __tmp 标签名为前缀进行保存, 以避免同 Prometheus 的内建标签冲突.

    relabel_config

        <relabels_action> 字段用于定义重新标记的行为

    • 替换标签值

      • replace: 首先将 source_labels 中指定的各标签的值进行串连, 而后将 regex 字段中的正则表达式对源标签值进行匹配判定, 若匹配, 则将 source_labels 字段中指定的标签的值替换为 replacement 字段中保存的值.

        • replacement 额按需引用保存 regex 中的某个值, 分组模式 匹配到的值默认保存整个 regex 匹配到的内容.

        • 进行替换时, replacement  字段中指定标签的值也支持分组格式进行引用.

    • 删除值 该出的每个指标名称对应一个 target

      • keep: regex 不能匹配到 target 上的 source_labels上的各标签的串联值时, 则删除该target.

      • drop: regex 能够匹配到 target 上的 source_labels 上的各标签的串连值时, 则删除该 target.

    • 创建或者删除标签

      • labelmap: 将regex 对所有的 标签名 进行匹配判定, 而后将匹配到的标签的值赋给 replacement  字段指定的标签名之上, 通常用于去除匹配的标签名的一部分生成新标签.

      • labeldrop: 将 regex 对所有的标签名进行匹配判定, 能够匹配到的标签将从该 target 的标签集中删除.

      • labelkeep: 将 regex 对所有的标签名进行匹配判定, 不能匹配到的标签将从该 target 的标签中删除.

    • 要确保在 labeldrop 和 labelkeep 操作后, 余下的标签集依然能唯一标识该指标.

    replace

    将三个源标签的值接顺序串联, 由指定的正则表达式进行匹配, 而后 replacement 引用模式匹配的结果, 并加以改造后, 将其赋值给 endpoint 标签.

      - job_name: 'nodes'
      
        file_sd_configs:
        - files:
          - targets/node-*.yml
          refresh_interval: 1m
          
        relabel_configs:
        - source_labels:                    # 源字段
          - __scheme__
          - __address__
          - __metrics_path__
          regex: '(http|https)(.*)'         # 根据正则匹配
          target_label: endpoint            # 新生成的键
          replacement: "${1}://${2}"        # 匹配后组成的值
          separator: ""                     # 不使用任何符号分隔 默认为;

    labelmap

        将 regex 指定的模式对 target 上的所有标签进行匹配判定, 对于匹配到的标签名, 它将以该标签名中匹配的部分为前缀, 指定的 __name 为后缀生成新的标签名, 而新标签的值则与其源标签的值相同.

      - job_name: 'nodes'
        file_sd_configs:
        - files:
          - targets/node-*.yml
          refresh_interval: 1m
        relabel_configs:
        - source_labels:                    # 源字段 
          - __scheme__
          - __address__
          - __metrics_path__
          regex: '(http|https)(.*)'         # 根据正则匹配
          target_label: endpoint            # 新生成的键
          replacement: "${1}://${2}"        # 匹配后组成的值
          separator: ""                     # 不使用任何符号分隔 默认为;
          action: replace
        - regex: "(app)"                    # 匹配的值
          replacement: ${1}_name            # 新的 key name
          action: labelmap

    labeldrop

    删除 app 标签, 能匹配到则删除

         - regex: "(app)"
           action: labeldrop

    drop

    删除 以 127 开头的 target.

         - source_labels:
           - __address__
           regex: "127.*"
           action: drop

    metric 重新打标

    对 metric 重新打标是在数据抓取之后动态重写 metric 标签的工具, 在每个数据抓取配置中, 可以定义多个 metric relabel 的步骤, 他们将按照定义的顺序依次执行.

    • 删除不必要的指标

    • 从指标中删除敏感或者不需要的标签

    • 添加, 编辑或修改指标的标签值或标签格式.

    • 对 metric 重新打标的配置格式与 target 重新打标的格式相同, 但前者要定义在专用的 metric_relabel_configs 字段中.

    • 但是要注意的是, 更改或添加标签会创建新的时间序列.

      • 应该明确的使用各个标签, 并尽可能保持不变, 以避免创建一个动态的数据环境.

      • 标签时时间序列的唯一性约束, 删除标签并导致时间序列重复时, 可能会导致系统出现问题.

    drop

    在 source_labels 字段上, 通过指标上的元数据 __name__ 引用指标名称, 而后由 regex 进行匹配判定, 可使用 drop action 删除匹配的指标, 或使用 keep action 仅保留匹配的指标.

    在相应的job上, 在发现的各 target 之上, 删除以 'go_info' 为名称前缀的指标.

         metric_relabel_configs:
          - source_labels: [ __name__ ]
            regex: 'go_info'
            action: drop

     

     

    作者:闫世成

    出处:http://cnblogs.com/yanshicheng

    联系:yans121@sina.com

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    Sublime Text 2 && MinGW G++ On Windows
    [zz]linux IO(function open read write close)
    PHP的基本常识(1)
    helloworld.c 的一次系统旅行(1) 读书笔记
    PHP 仿博客园 个人博客(1)
    配置 .htaccess 单点入口
    仿博客园个人博客(3)基本完成
    PHP的基本常识(2)
    JQuery 获得所有表单值
    PHP 仿博客园 个人博客(2)
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/15237838.html
Copyright © 2020-2023  润新知