添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Prometheus为何要进行服务发现

  Prometheus Server的数据抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能从相应的Exporter中抓取数据。对于小型的系统环境来说,通过static_configs指定各Target便能解决问题,这也是最简单的配置方法;对于中大型的系统环境或具有较强动态性的容器环境来说,每个容器都有可能是一个抓取端点他随时可能创建或删除,静态配置显然难以适用。因此,Prometheus为此专门设计了一组服务发现机制,以便于能够基于服务注册中心自动发现、检测、分类可被监控的各Target,以及更新发生了变动的Target。

配置Prometheus实现自动服务发现

  Prometheus支持多种服务发现机制,具体自己需要使用哪种发现机制请查看官方网站,本文将根据本公司业务来讲解Prometheus结合consul来做服务发现和注册,这也是目前比较流行的一种做法。接下来,我们需要配置 Prometheus 来使用 Consul 自动服务发现。至于怎么安装consul请参考 高可用的SSL consul cluster实践 这里我就不在赘述了。注意:在注册到 Consul 时 name 字段可以相同,但是 id 字段一定不能相同。

prometheus.yml 配置如下:

1
2
3
4
5
6
7
8
9
...
scrape_configs:
- job_name: 'prometheus'
consul_sd_configs:
- server: "192.168.28.10:8500"
- server: "192.168.28.11:8500"
- server: "192.168.28.12:8500"
datacenter: 'dc1'
services: []

说明一下:这里需要使用 consul_sd_configs 来配置使用 Consul 服务发现类型, server 为 Consul 的服务地址, 配置完毕后重启 Prometheus 服务,此时可以通过 Prometheus UI 页面的 Targets 下查看是否配置成功。

通过consul的其中一个节点查看注册服务
Prometheus-config-3

可以看到,在 Targets 中能够成功的自动发现 Consul 中的 Services 信息,后期需要添加新的 Targets 时,只需要通过 API或JSON格式文件往 Consul 中注册服务即可,Prometheus 就能自动发现该服务,是不是很方便。

不过,我们会发现有如下几个问题:

  • 会发现 Prometheus 同时加载出来了默认服务 consul,这个是不需要的。
  • 默认只显示 job 及 instance 两个标签,其他标签都默认属于 before relabeling 下,有些必要的服务信息,也想要在标签中展示,该如何操作呢?
  • 如果需要自定义一些标签,例如 team、group、project 等关键分组信息,方便后边 alertmanager 进行告警规则匹配,该如何处理呢?
  • 所有 Consul 中注册的 Service 都会默认加载到 Prometheus 下配置的 prometheus 组,如果有多种类型的 exporter,如何在 Prometheus 中配置分配给指定类型的组,方便直观的区别它们?
  • 以上问题,我们可以通过 Prometheus 配置中的 relabel_configs 参数来解决。

    配置 relabel_configs 实现自定义标签及分类

      Prometheus 加载 Targets 后,这些 Targets 会自动包含一些默认的标签,这里的标签分两类;如果使用consul做服务发现则Target包含如下标签:不同的服务发现机制为其target添加的元标签会有所不同; Prometheus 允许用户在指标抓取前,通过 relabel_configs 来对 Target 标签进行重新标记(relabel) 。 常用于实现两个功能,一、将来自服务发现的元数据标签中的信息附加到指标的标签上; 二、过滤目标,可以针对标签的某个值进行过滤(处理问题一将使用这个功能)

    Consul元标签:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    __meta_consul_address
    __meta_consul_dc
    __meta_consul_health
    __meta_consul_metadata_<key>
    __meta_consul_node
    __meta_consul_service_address
    __meta_consul_service_id
    __meta_consul_service_metadata_<key>
    __meta_consul_service_port
    __meta_consul_service
    __meta_consul_tagged_address_<key>
    __meta_consul_tags

    Prometheus内置标签:

    1
    2
    3
    __address__
    __metrics_path__
    __scheme__

    在上图我们我可以看到 Before relabeling 是重新标记以前的,而 Labels 中是重新标记以后的。

    默认 target job 标签设置为配置文件里的 job_name 的值;
    __address__ 设置为配置里的targets的值;
    instance 标签的值,是重定义标签操作之后 __address__ 的值
    __scheme__ __metrics_path__ 标签的值,也是从配置里取值的;
    __param_<name> 标签的值,是传给URL的查询参数 <name> 的值;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    scrape_configs:
    - job_name: 'job' #实例名称
    static_configs:
    - targets: ['prometheus-server:9090'] #监控主机ip
    relabel_configs: #重新标记标签
    - source_labels: ['job'] #源标签的名字
    separator: ; #源标签的分隔符,当有多个源标签的值的时候默认使用`;`连接
    regex: (.*) #使用正则匹配元标签的值,.*表示匹配所有
    action: replace #动作,replace动作就是将原来标签的值传给新标签
    replacement: $1 #将正则表达式匹配到的结果值引用给新标签
    target_label: idc #新标签的名称

    对 Target 重新打标是在数据抓取之前动态重写 Target 标签的强大工具,在配置中可以定义多个relabel步骤,它们将按照定义的顺序依次执行;重新标记完成后,该 Target 上以“__”开头的所有标签都会被移除;
    详细 relabel_configs 配置及说明可以参考 relabel_config 官网说明,这里我简单列举一下里面每个 relabel_action 的作用,方便下边演示。

  • replace: 根据 regex 的配置匹配 source_labels 标签的值(注意:source_label 中有多个元标签时,则他们的值会按照 separator 进行拼接),并且将匹配到的值写入到 target_label 当中,如果有多个匹配组,则可以使用 ${1} , ${2} 确定写入的内容。如果没匹配到任何内容则不对 target_label 进行重写, 默认为 replace
  • keep: 丢弃 source_labels 的值中没有匹配到 regex 正则表达式内容的 Target 实例
  • drop: 丢弃 source_labels 的值中匹配到 regex 正则表达式内容的 Target 实例
  • hashmod: 将 target_label 设置为关联的 source_label 的哈希模块
  • labelmap: 根据 regex 去匹配 Target 实例所有标签的名称(注意是名称),并且将捕获到的内容作为为新的标签名称, regex 匹配到标签的的值作为新标签的值
  • labeldrop: 将 regex 对所有的标签名进行匹配判定,能够匹配到的标签将从该 Target 的标签集中删除;
  • labelkeep: 将 regex 对所有的标签名进行匹配判定,不能匹配到的标签将从该 Target 的标签集中删除;
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    - job_name: 'node-exporter'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    relabel_configs:
    - source_labels: [__meta_consul_service]
    regex: ".*node-exporter.*"
    action: keep
    - source_labels: [__scheme__, __address__, __metrics_path__]
    regex: "(http|https)(.*)" # 两个分组
    separator: ""
    target_label: "endpoint"
    replacement: "${1}://${2}" # 引用两个分组
    action: replace

    当有多个源标签的值时如果不设置 separator 为空则每个源标签的值将使用 ; 做连接
    Prometheus-config-21

    处理上述问题

    问题一,首先我们鼠标指向labels下的某一个target的元标签时可以看到,使用consul做服务发现时会自动添加的元标签。细心的我们在查看consul注册进来的服务发现 __meta_consul_service 标签的值都是 consul 。那么我们可以配置 relabel_configs 来实现标签过滤,只加载符合规则的服务。
    Prometheus-config-5

    修改 prometheus.yml 配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    scrape_configs:
    - job_name: 'prometheus'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    relabel_configs:
    - source_labels: [__meta_consul_service]
    regex: "consul"
    action: drop

    解释下,这里的 relabel_configs 配置作用为如果元标签 __meta_consul_service 的值是 consul 的服务则丢弃, __meta_consul_service 的值对应到 Consul 服务中的值为 "name": 字段,重启 Prometheus 可以看到现在只获取了 node-exporter-192.168.28.13 这个服务了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "service": {
    "id": "node-01",
    "name": "node-1", # 注意:此值是可以在别的service中重复出现的
    "tags": ["ngx_exporter","prod","xcws","monitor"],
    "address": "192.168.28.13",
    "port": 9100,
    "Meta": {
    "app": "spring-boot",
    "team": "appgroup",
    "project": "bigdata"
    },
    "check": {
    "id": "node-01",
    "name": "node-1",
    "http": "http://192.168.28.13:9100/metrics",
    "interval": "10s",
    "timeout": "1s"
    }
    }
    }

    问题二和问题三可以归为一类,就是将系统默认标签或者用户自定义标签转换成可视化标签,方便查看及后续 Alertmanager 进行告警规则匹配分组。不过要实现给服务添加自定义标签,我们还得做一下修改,就是在注册服务时,将自定义标签信息添加到 Meta Data 数据中,下边来演示一下如何操作。

    新建 consul-0.json 如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "service": {
    "id": "node-01",
    "name": "node-1",
    "tags": ["ngx_exporter","prod","xcws","monitor"],
    "address": "192.168.28.13",
    "port": 9100,
    "Meta": {
    "app": "spring-boot",
    "team": "appgroup",
    "project": "bigdata"
    },
    "check": {
    "id": "node-01",
    "name": "node-1",
    "http": "http://192.168.28.13:9100/metrics",
    "interval": "10s",
    "timeout": "1s"
    }
    }
    }

    说明一下:该 Json 文件为要注册的服务信息,同时往 Meta 信息中添加了 app=spring-boot team=appgroup project=bigdata 三组标签,目的就是为了方便告警分组使用。

    重启 Consul 服务后注册完毕,通过 Consul Web 管理页面可以查看到已注册成功,并且包含了 Meta 信息。

    然后修改 prometheus.yml 配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    scrape_configs:
    - job_name: 'prometheus'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    relabel_configs:
    - source_labels: [__meta_consul_service]
    regex: "consul"
    action: drop
    - regex: __meta_consul_service_metadata_(.+)
    replacement: ${1}
    action: labelmap

    解释一下,增加的配置作用为匹配 __meta_consul_service_metadata_ 开头的标签,将捕获到的内容作为新的标签名称,匹配到标签的值作为新标签的值,而我们刚添加的三个自定义标签,系统会自动添加 __meta_consul_service_metadata_app=spring-boot __meta_consul_service_metadata_team=appgroup __meta_consul_service_metadata_project=bigdata 三个标签,经过 relabel 后,Prometheus 将会新增 app=spring-boot team=appgroup project=bigdata 三个标签。重启 Prometheus 服务,可以看到新增了对应了三个自定义标签。

    relabel示例之labelmap最简单示例

    1
    2
    3
    4
    5
    6
    7
    8
    - job_name: 'nodes' file_sd_configs:
    file_sd_configs:
    - files:
    targets/prometheus/node*.yaml
    relabel_configs:
    - regex: "(job|app)"
    replacement: ${1}_name
    action: labelmap

    生成的结果如下图所示(注意这里是配了的是标签名称 job app 都是存在的)

    relabel示例之labeldrop最简单示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    - job_name: 'nodes' file_sd_configs:
    file_sd_configs:
    - files:
    targets/prometheus/node*.yaml
    relabel_configs:
    - regex: "(job|app)"
    replacement: ${1}_name
    action: labelmap
    - regex: "(app)"
    action: labeldrop

    生成的结果如下图所示(删除标签为 app 的标签)
    Prometheus-config-17

    另外一种处理方式,可以看到上面的 consul-0.json 文件中定义了 tags 这个字段。我们也可以使用这里的 tags 的值来自定义标签。

    修改 prometheus.yml 配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    scrape_configs:
    - job_name: 'prometheus'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    relabel_configs:
    - source_labels: [__meta_consul_service]
    regex: "consul"
    action: drop
    - regex: __meta_consul_service_metadata_(.+)
    replacement: ${1}
    action: labelmap
    - source_labels: ["__meta_consul_tags"]
    regex: ",(.+),(.+),(.+),(.+),"
    replacement: $1
    action: replace
    target_label: exporter_type
    - source_labels: ["__meta_consul_tags"]
    regex: ",(.+),(.+),(.+),(.+),"
    replacement: $2
    action: replace
    target_label: env
    - source_labels: ["__meta_consul_tags"]
    regex: ",(.+),(.+),(.+),(.+),"
    replacement: $3
    action: replace
    target_label: job
    - source_labels: ["__meta_consul_tags"]
    regex: ",(.+),(.+),(.+),(.+),"
    replacement: $4
    action: replace
    target_label: platform

    解释一下,这里配置的 __meta_consul_tags 对应到 Consul 注册服务的 Tags 字段,使用 regex 去匹配将匹配到的结果分为4组,然后replacement可按需引用 regex 中的某个“分组”匹配到的值,并赋值给 target_label 标签。形成一个 k=v 格式。

    问题四,将自动发现的服务进行分类,本质上跟上边的处理方式一致,可以通过服务 Tag 来进行匹配创建不同的类型 exporter 分组。通过给每个服务标记不同的 Tag,然后通过 relabel_configs 来进行匹配区分。我们来更新一下原有的 consul-0.json 文件修改服务标签,同时注册一个其他类型 exporter 的服务如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "service": {
    "id": "node-01",
    "name": "node-1",
    "tags": ["node-exporter"], //修改
    "address": "192.168.28.13",
    "port": 9100,
    "Meta": {
    "app": "spring-boot",
    "team": "appgroup",
    "project": "bigdata"
    },
    "check": {
    "id": "node-01",
    "name": "node-1",
    "http": "http://192.168.28.13:9100/metrics",
    "interval": "10s",
    "timeout": "1s"
    }
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
    "service": {
    "id": "cadvisor-exporter",
    "name": "node-1",
    "tags": ["cadvisor-exporter"], //修改
    "address": "192.168.28.13",
    "port": 8080,
    "Meta": {
    "app": "docker",
    "team": "cloudgroup",
    "project": "docker-service"
    },
    "check": {
    "http": "http://192.168.28.13:8080/metrics",
    "interval": "10s",
    "timeout": "1s"
    }
    }
    }

    说明一下,我们更新了原有 consul-0.json 文件中服务的标签为 node-exporter,同时注册一个新类型 cadvisor-exporter 服务,并设置标签为 cadvisor-exporter ,以示区别。注册完毕,通过 Consul Web 控制台可以看到成功注册了这两个服务。这里需要说明一下,在上面的两个JSON文件中我们都使用的是同一个 Name 名字所以我们需要点进 node-1 这个 service 名字下才能看到两个服务

    最后,我们修改 prometheus.yml 配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    scrape_configs:
    - job_name: 'consul-node-exporter'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    relabel_configs:
    - source_labels: [__meta_consul_tags]
    regex: ".*node-exporter.*"
    action: keep
    - regex: __meta_consul_service_metadata_(.+)
    replacement: ${1}
    action: labelmap

    - job_name: 'consul-cadvisor-exproter'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    relabel_configs:
    - source_labels: [__meta_consul_tags]
    regex: ".*cadvisor-exporter.*"
    action: keep
    - regex: __meta_consul_service_metadata_(.+)
    replacement: ${1}
    action: labelmap

    这里需要根据每种类型的 exporter 新增一个关联 job,同时 relabel_configs 中配置 __meta_consul_tags 以 Tag 来做匹配区分。这里的 relabel_configs 配置作用为丢弃元标签中 __meta_consul_tags 的值不包含 node-exporter cadvisor-exporter 标签的服务,从上面的配置来看两个Job实现了互斥,从而实现过滤。重启 Prometheus 服务,可以看到服务已经按照类型分类了,方便查看。

    Prometheus黑盒监控

    &emsp;&emsp;常规的各种exporter都是和需要监控的机器一起安装的,如果需要监控一些tcp端口和七层应用层的状态呢,这个时候就需要黑盒监控了,不需要安装在目标机器上即可从外部去监控。(如果想做到A访问B则需要在A机器上安装blackbox让A去请求B,而不是从某一个固定的机器去访问。这样做点对点监控) blackbox默认的http监听端口是9115,blackbox.yml的配置文件里有基础的https、http、dns、tcp、icmp配置,prober 定制配置出各种监测模块(module),在prometheus server的配置文件里声明用哪个模块去探测哪个targets。

    安装配置blackbox_exporter

    下载blackbox_exporter

    1
    2
    3
    wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.19.0/blackbox_exporter-0.19.0.linux-amd64.tar.gz

    tar -zxv -f blackbox_exporter-0.19.0.linux-amd64.tar.gz

    修改 blackbox.yml 配置文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    modules:
    http_2xx: # 模块名字,符合规则随便命名即可
    prober: http # 探针类型
    http:
    valid_status_codes: [200,201,202,203,204,205,206,207,300,301,302,303,304,305,306,307,405]
    http_post_2xx:
    prober: http
    http:
    method: POST
    tcp_connect:
    prober: tcp
    pop3s_banner:
    prober: tcp
    tcp:
    query_response:
    - expect: "^+OK"
    tls: true
    tls_config:
    insecure_skip_verify: false
    ssh_banner:
    prober: tcp
    tcp:
    query_response:
    - expect: "^SSH-2.0-"
    irc_banner:
    prober: tcp
    tcp:
    query_response:
    - send: "NICK prober"
    - send: "USER prober prober prober :prober"
    - expect: "PING :([^ ]+)"
    send: "PONG ${1}"
    - expect: "^:[^ ]+ 001"
    icmp:
    prober: icmp

    修改 Prometheus.yml 配置文件文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    - job_name: 'http_2xx'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    metrics_path: /probe
    params:
    module: [http_2xx] # HTTP URL参数
    relabel_configs:
    - source_labels: [__meta_consul_service]
    regex: "http_2xx"
    action: keep
    - source_labels: [__meta_consul_service_address]
    target_label: __param_target
    - source_labels: [__param_target]
    target_label: instance
    - target_label: __address__
    replacement: 192.168.28.10:9115

    解释:新创建一个Job名为 http_2xx 并设置仅抓取 __meta_consul_service 元标签中值为 http_2xx 的target,然后将元标签 __meta_consul_service_address 的值赋值给一个新的标签 __param_target 其中最后变成 target=xxx.xxx.xxx.xxx 的格式(xxx为IP地址),然后在将 __param_target 的值重新写入给instance这个标签,这个标签原先已经有值了,所以这里会instance原来的值会被替换为 __param_target 的值。在然后 __address__ 的值会被修改为 192.168.28.10:9115 这个IP。 我们需要注意的是标签存在则覆盖,标签不存在则创建

    从下图可以看到实际在请求的是的是带入了一些参数 module=http_2xx&target=www.baidu.com 其中 module=http_2xx prometheus.yaml 中配置的,而 target=www.baidu.com __param_target 传入的。
    Prometheus-config-16

    注册服务到 Consul

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@k8s-n1 client]# cat http_p2p.json 
    {
    "service": {
    "id": "test-http",
    "name": "http_2xx",
    "tags": ["blackbox_export","prod","xcws","192.168.28.13:9115","httpp2p"],
    "address": "www.baidu.com"
    }
    }

    从上面的方式我们可以做到tcp端口和七层应用层监控,但是有一个问题。所有的请求都是从 192.168.28.10 这台安装了 blackbox_exporter 主机发起的,如果我们想做点对点监控呢?那么我们需要在发起请求的主机上安装 blackbox_exporter 。下面将讲解如何配置点对点监控,这里用到tag的方式来进行点对点监控,需要多注意看配置文件。

    Consul注册文件:

    1
    2
    3
    4
    5
    6
    7
    8
    {
    "service": {
    "id": "test-http",
    "name": "http_2xx",
    "tags": ["blackbox_export","prod","xcws","192.168.28.13:9115","httpp2p"],
    "address": "www.baidu.com"
    }
    }

    Prometheus配置文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    - job_name: 'http_2xx'
    consul_sd_configs:
    - server: "192.168.28.10:8500"
    - server: "192.168.28.11:8500"
    - server: "192.168.28.12:8500"
    datacenter: 'dc1'
    services: []
    metrics_path: /probe
    params:
    module: [http_2xx]
    relabel_configs:
    - source_labels: [__meta_consul_service]
    regex: "http_2xx"
    action: keep
    - source_labels: [__meta_consul_service_address]
    target_label: __param_target
    - source_labels: [__param_target]
    target_label: instance
    - source_labels: [__meta_consul_tags]
    regex: ",(.+),(.+),(.+),(.+),(.+),"
    action: replace
    replacement: $4
    target_label: __address__

    解释一下我们做了些什么工作,首先我们先在 192.168.28.13 上安装 blackbox_exporter 并修改 blackbox.yml 配置文件。从上面注册到 Consul 中的信息可以看到我们在 Tags 中添加了一个IP,然后我们在下面的Prometheus中去分组匹配,上面的tags中有5段,这里我们在Prometheus中也使用5个分组去匹配。我们可以看到 192.168.28.13:9115 属于第四段,所以我们在 replacement 中引用第四个分组。然后将结果赋值给新的标签 __address__

    这样配置我们可以看到发送请求的地址是 192.168.28.13 这个IP,而不是像最上面那样从某一个固定的IP(192.168.28.10)发起的请求。如果我们需要在多个机器上实现这种点对点监控。请在所有的机器上都安装 blackbox_exporter

    对抓取到的metric重新打标

    对metric重新打标是在数据抓取之后动态重写metric标签的工具,在每个数据抓取配置中,可以定义多个metric relabel的步骤,它们将按照定义的顺序依次执; metric_relabel_configs 模块和 relabel_config 模块很相似。 metric_relabel_configs 一个很常用的用途:将监控不需要的数据,直接丢掉,不在Prometheus 中保存。

    重新标记操作一般常见的情况