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的使用方式

原文地址:https://www.cnblogs.com/kebibuluan/p/14304083.html