普罗米修斯 relabel_config 删除操作无效

prometheus relabel_config drop action not working

我一直在尝试通过 relabel_configs:

删除未使用的指标(在抓取之前)以减轻 Prometheus 集群上的负载
- job_name: nginx-ingress-controller-metrics
  kubernetes_sd_configs:
  - role: endpoints
    namespaces:
      names:
      - <some-namespace>
  relabel_configs:
  # single
  - source_labels: [__name__]
    regex: nginx_ingress_controller_response_size_bucket
    action: drop
  # multiple
  - source_labels: [__name__]
    regex: nginx_ingress_controller_(request_size_bucket|response_duration_seconds_bucket|bytes_sent_bucket|bytes_sent_sum)
    action: drop

但是,我没有看到这些指标中的任何一个被丢弃(在抓取之前)并且它们被抓取和摄取,因为我可以通过 PromQL.

查询它们

我已经尝试过相同配置的多种变体(即引号、括号等)。知道为什么这些目标仍然是 scraped/ingested 吗?

您不能在抓取之前通过 __name__ 删除(即在 relabel_configs 中),此标签尚不存在。 relabel_configs 发生在与导出器建立连接之前,此时 Prometheus 所知道的只是服务发现数据。因此,使用 relabel_configs 你只能操作 hosts.

规模的数据

__name__ 在抓取后变得可用,并且在处理指标并将其保存到数据库之前还有时间。这是 metric_relabel_configs 发生的时候,如果你想按名称 keep/drop - 这是这样做的地方:

metric_relabel_configs:
  - source_labels: [__name__]
    regex: my_useless_metric.*
    action: drop