Prometheus:不是有效的主机名

Prometheus: not a valid hostname

我的 SNMP 导出器托管在使用 kubernetes 的某个地方。我可以像这样通过 URL 访问并 运行 它并获取指定目标的指标:https://some.kube.server.name/api/snmp-exporter/snmp?target=AFACG1

我的目标列表在 targets.json 文件中,使用 prometheus.yml 文件中的 file_sd_configs 为 prometheus 动态加载目标。

我的 prometheus.yml 文件如下所示:

scrape_configs:
  - job_name: 'snmp'
    scrape_interval: 120s
    file_sd_configs:
        - files :
          - /etc/prometheus/targets.json

    metrics_path: /snmp

    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: https://some.kube.server.name/api/snmp-exporter/  # The SNMP exporter's real hostname:port.

我的 targets.json 文件如下所示:

[
   {
        "labels": {
            "job": "snmp"
        },
        "targets": [
            "AFACG1",
            "AFACG3",
            "AFACG5",
            "AFACG7",
            "AFACG8",
            "AFACG9"
        ]
    }
]

但是,当我 运行 prometheus 时,我得到错误 \"https://some.kube.server.name/api/snmp-exporter\" is not a valid hostname

我需要在 prometheus.yml 中实施哪些修改才能获得 targets.json 中的目标指标?

阅读后,我找到了我的问题的答案,效果很好。在这里,我想出了我修改后的 scrape_configs:

scrape_configs:
  - job_name: 'snmp'
    scheme: https
    scrape_interval: 120s
    tls_config:
      insecure_skip_verify: true
    file_sd_configs:
        - files :
          - /etc/prometheus/targets.json

    metrics_path: /api/snmp-exporter/snmp

    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: some.kube.server.name

我希望这能帮助其他遇到类似问题的人。