如何查看为 Pushgateway 生成数据的实例的主机名

How to see the hostname of the instance that has generated the data for Pushgateway

我有一个 prometheus 服务器,它使用 Azure VM 的自我发现,这些 VM 是 运行 WMI 导出器。在 Grafana 中,我使用仪表板变量进行过滤(见屏幕截图)。

在 VM 上,我创建了一个自定义导出器,它为每台服务器输出值为 1 的指标,并且每台服务器都将值发送到在 etc/prometheus/prometheus.yaml[= 中配置的单个 Pushgateway 13=]

- job_name: 'push-gateway'
  static_configs:
  - targets: ['localhost:9091']

当我查看抓取的指标时,我总是看到实例:localhost:9091 和作业:推送网关,无论指标来自哪个服务器。如果我手动添加这些标签,我会看到“exported”前缀(见屏幕截图)。

我感到困惑的是,如何确保自定义创建的指标的“作业”和“实例”具有与生成指标的服务器匹配的相同“作业”和“实例”值所以我可以使用仪表板变量为所选服务器提取正确的数据?

您可以使用 metric_relabel_configs 在抓取 后重写标签 。一个例子:

- job_name: pushgateway
  # This is necessary if metrics in pushgateway have "job" or "instance" labels.
  # With "honor_labels: true" Prometheus will save those as "exported_job" and "exported_instance" respectively.
  honor_labels: true
  static_configs:
  - targets:
    - my-pushgateway.com:9091
  metric_relabel_configs:
  # copy pushgateway address from "instance" to "source" label
  - source_labels: [instance]
    target_label: source

  # replace "instance" label value with one from "exported_instance" label
  - source_labels: [exported_instance]
    target_label: instance

  # remove "exported_instance" label
  - source_labels: [exported_instance]
    action: labeldrop

如果您以前有这样的指标:

my_metric{job="pushgateway", instance="my-pushgateway.com:9091", exported_instance="example.com"}

然后使用上面示例中的配置,它们将如下所示:

my_metric{job="pushgateway", instance="example.com", source="my-pushgateway.com:9091"}