【问题标题】:Filtering Enabled Collectors过滤启用的收集器
【发布时间】:2018-11-15 18:06:57
【问题描述】:
Prometheus 节点导出器没有一种简单的方法来禁用所有默认指标而不向进程传递 20 个标志。在documentation 中,看起来可能有一种更简单的方法来仅获取相关指标:
过滤启用的收集器
...
对于高级用途,可以向 node_exporter 传递一个可选的收集器列表来过滤指标。 collect[] 参数可以多次使用。在 Prometheus 配置中,您可以在 scrape 配置下使用此语法。
params:
collect[]:
- foo
- bar
这对于让不同的 Prometheus 服务器从节点收集特定指标很有用。
我的假设是您将 params 直接放在您的 scrape_config 下,因为有一个匹配的 params 字段。但是,collect[] 下到底应该包含什么? foo 和 bar 示例的描述性再好不过了。是命令行参数(例如,“--collector.cpu”)、收集器名称(例如,“cpu”)、收集器指标名称(例如,“node_cpu”)、实际指标(例如,“node_cpu_seconds_total” "),还是别的什么?
【问题讨论】:
标签:
prometheus
prometheus-node-exporter
【解决方案1】:
还有另一种通用解决方案,适用于所有出口商。 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
【解决方案2】:
通过测试节点收集器,collect[] 参数必须是收集器名称。例如,--collector.cpu 的名称是 cpu。
如果您指定了无效的收集器,例如 foo,您将收到以下 HTTP“400 错误请求”消息:
Couldn't create missing collector: foo
【解决方案3】:
正如All Workers Are Essential 所说,collect[] 参数中预期的参数是收集器的名称。
作为答案的补充,您可以在下面找到节点导出器配置的工作示例,仅过滤 cpu、meminfo 和 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 服务,只有过滤后的指标(cpu、meminfo 和 filesystem)将可用。