zoukankan      html  css  js  c++  java
  • Prometheus标签的管理

    Prometheus 在处理数据指标的过程中,包括【抓取的生命周期】和【标签的生命周期】。
    默认情况下,当 Prometheus加载 Target 实例完成后,这些Target时候都会包含一些默认的标签:这些标签将会告诉Prometheus如何从该Target实例中获取监控数据。

    3、Prometheus的标签配置

    Prometheus通过标签可以实现查询过滤,并且还支持重新标签实现动态生成标签、过滤、删除无用标签等灵活配置。在采集数据之前可以使用relabel_configs进行重新标记,存储数据之前可以使用metric_relabel_configs重新标记。两种重新打标签的方式都支持以下动作:

    · replace:默认动作,将匹配到的标签内容做替换
    • keep:通过正则匹配,仅保留正则匹配到的标签
    • drop:通过正则匹配,删除正则匹配到的标签
    • labeldrop:删除指定标签,比如一些默认标签并不需要,可以用该动作删除
    • labelkeep:仅保留指定标签

    4、为了删除标签,我们指定一个正则表达式,然后指定删除标签的操作labeldrop。这将删除与正则表达式匹配的所有标签。此操作还有一个对应的反向操作labelkeep,它将保留与正则表达式匹配的标签,并删除所有其他标签。

    # my global config
    global:
      scrape_interval:     5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
           - 127.0.0.1:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      - "simulator_alert_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
    # 任意写,建议英文,不要包含特殊字符
    - job_name: 'http-simulator'
      # 多久采集一次数据
      scrape_interval: 15s
      # 采集时的超时时间
      scrape_timeout: 10s
      # 采集的路径是啥
      metrics_path: '/prometheus'
      # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。
    # 静态配置
      static_configs:
      # 指定要抓取的目标地址
      - targets: ['localhost:8080']
        # 给抓取出来的所有指标添加指定的标签
        labels:
          my: label
          your: label

    上面使用labels标签标记了两个标签:

    在收集的指标中就可以看到对应的两个标签的值

    第二种方式使用metric_relabel_configs添加标签:

    # my global config
    global:
      scrape_interval:     5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
           - 127.0.0.1:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      - "simulator_alert_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
    # 任意写,建议英文,不要包含特殊字符
    - job_name: 'http-simulator'
      # 多久采集一次数据
      scrape_interval: 15s
      # 采集时的超时时间
      scrape_timeout: 10s
      # 采集的路径是啥
      metrics_path: '/prometheus'
      # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。
    # 静态配置
      static_configs:
      # 指定要抓取的目标地址
      - targets: ['localhost:8080']
        # 给抓取出来的所有指标添加指定的标签
      metric_relabel_configs:
      - target_label: test_key
        replacement: 中国

    我们可以看到在添加的指标中,已经携带了对应的标签纸test_key对于的标签的值为中国

     我们可以通过这种方式metrics添加自己想要的标签,更灵活的使用Prometheus的标签处理自己的监控项。

    针对中间件的拉取需要配置下面的信息:

      - job_name: redis_exporter
        static_configs:
          - targets: ['10.100.11.53:9121','10.100.11.54:9121','10.100.11.55:9121']
            labels:
              instance: redis
      - job_name: 'linux'
        static_configs:
          - targets: ['10.100.11.53:9100','10.100.11.54:9100','10.100.11.55:9100']
            labels:
              instance: linux

    prometheus配置文件动态管理

    每次新加监控节点的时候,只需要添加一个新的targets即可,“instance”是一个label标签,方便区分。那么这里就产生一个问题,当targets的数量达到几百上千之后,配置文件看起来就会特别冗余。所以有经验的运维人就会想到用include的方式,把其他的配置文件包含进来,这样就把一个大而冗余的主配置文件,切分成一个个小的配置文件。Prometheus这里用的方法就是基于文件的服务发现–“file_sd_config”。

    - job_name: 'file_ds'
      file_sd_configs:
      - refresh_interval: 1m
        files:
        - ./conf.d/*.json

    prometheus 实时更新./conf.d/下以.json结尾的文件。有变化自动更新到prometheus的监控页面上展示。

    我们来看下我们的一个案例

    # my global config
    global:
      scrape_interval:     5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
           - 127.0.0.1:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      - "simulator_alert_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
    # 任意写,建议英文,不要包含特殊字符
    - job_name: 'http-simulator'
      # 多久采集一次数据
      scrape_interval: 15s
      # 采集时的超时时间
      scrape_timeout: 10s
      # 采集的路径是啥
      metrics_path: '/prometheus'
      # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。
    # 静态配置
      static_configs:
      # 指定要抓取的目标地址
      - targets: ['localhost:8080']
        # 给抓取出来的所有指标添加指定的标签
      params:
        collect[]:
          - go_memstats_heap_inuse_bytes
          - tomcat    
      metric_relabel_configs:
      - target_label: test_key
        replacement: 中国
    - job_name: 'file_ds'
     # 多久采集一次数据
      scrape_interval: 15s
      # 采集时的超时时间
      scrape_timeout: 10s
      # 采集的路径是啥
      metrics_path: '/prometheus'
      file_sd_configs:
      - refresh_interval: 1m
        files:
        - C:1.json

    我们对应的1.json文件如下

    [
      {
        "targets": [ "127.0.0.1:8080" ],
        "labels": {
          "env": "product",
          "job": "prometheus",
          "instance": "100.100.110.71_prometheus_server"
        }
      },
      {
        "targets": [ "100.100.110.53:9121" ],
        "labels": {
          "env": "product",
          "job": "redis",
          "instance": "redis53"
        }
      }
    ]

    我们在普罗米修斯下面能够看到对应的文件

    一个job对应下面的一条记录

     我们来看监控的指标记录中就已经添加了下面的信息和记录

    https://www.cnblogs.com/zqj-blog/p/11024834.html  pushgateway的使用方式

  • 相关阅读:
    [转]测试的基本概念
    记录
    flash 与 程序通讯
    怎么正确的建立项目
    安装包的制作
    JS
    页面刷新定位
    [转]C#处理XML
    MSN机器人
    报表 的使用
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/14304083.html
Copyright © 2011-2022 走看看