3

Prometheus节点导出器没有简单的方法来禁用所有默认指标,而无需向进程传递 20 个标志。在文档中,看起来可能有一种更简单的方法来仅获取相关指标:

过滤启用的收集器

...

对于高级使用,可以向 node_exporter 传递一个可选的收集器列表来过滤指标。collect[] 参数可以多次使用。在 Prometheus 配置中,您可以在 scrape 配置下使用此语法。

params:
  collect[]:
    - foo
    - bar

这对于让不同的 Prometheus 服务器从节点收集特定指标很有用。

我的假设是您将参数直接放在您的scrape_config下,因为有一个匹配的参数字段。但是,究竟应该在collect[]下做什么?示例foobar的描述性再好不过了。是命令行参数(例如,“--collector.cpu”)、收集器名称(例如,“cpu”)、收集器指标名称(例如,“node_cpu”)、实际指标(例如,“node_cpu_seconds_total” “), 或者是其他东西?

4

3 回答 3

5

还有另一种通用的解决方案,可以与所有出口商一起使用。relabel_map_config是一个配置选项,可以在 prometheus 配置文件中设置。如文档中所述:

这样做的一种用途是将过于昂贵而无法摄取的时间序列列入黑名单。

因此,您可以删除或保留与正则表达式匹配的指标。例如,要仅存储节点导出器收集的 cpu 指标,您可以在prometheus.yml文件中使用以下内容:

scrape_configs:
 - job_name: node
   static_configs:
    - targets:
       - localhost:9100
   metric_relabel_configs:
    - source_labels: [__name__]
      regex: node_cpu_.*
      action: keep
于 2018-11-17T15:03:27.293 回答
1

正如All Workers Are Essential所说,参数内部预期的collect[]参数是收集器的名称

作为答案的补充,您可以在下面找到节点导出器配置的工作示例,仅过滤cpumeminfo收集filesystem器:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  # Node exporter
  - job_name: 'node_exporter'

    static_configs:
    - targets: ['localhost:9100']
    params:
      collect[]:
        - cpu
        - meminfo
        - filesystem

请记住,仍然可以访问prometheus收集的指标,但是一旦重新启动服务,只有过滤后的指标(cpumeminfofilesystem将可用。

于 2021-03-11T14:22:51.390 回答
1

在测试节点收集器时,collect[]参数必须是收集器名称。例如,来自的名称--collector.cpucpu

如果您指定了一个无效的收集器,例如foo,您将收到以下 HTTP“400 错误请求”消息:

Couldn't create missing collector: foo
于 2018-11-16T14:56:58.090 回答