【问题标题】:How to configure Prometheus consul_sd_configs to use https for service如何配置 Prometheus consul_sd_configs 使用 https 进行服务
【发布时间】:2020-03-27 06:33:10
【问题描述】:

我们使用 Consul Registrator 向 Consul 注册 Docker 容器作为服务。

我们的 prometheus 使用 consul_sd_configs 进行配置,以抓取通过 Consul 解析的服务列表。

最近部署了一个新的 Docker 容器,它使用带有内部证书的 https,而不是普通的 http。 Prometheus 仍在尝试通过 http 访问该服务,但失败了,该服务随后被标记为关闭。

有什么方法可以配置 Prometheus 使用 https 来提供这项服务?我们是否在 Consul 或 Registrator 中遗漏了什么?

我们不能对服务使用静态配置,因为再次部署时主机和端口可能会发生变化 - 服务分布在多个 Docker 服务器上。

【问题讨论】:

  • 你有办法解决这个问题吗?
  • 我能够解决,在这里为下一个人发布解决方案。

标签: docker prometheus consul


【解决方案1】:

您可以借助 Prometheus 配置中 consul_sd_configs 设置的 relabel_configstls_config 部分来解决此问题。

如果服务名称是 SERVICE_NAME1 或 SERVICE_NAME2,以下设置使用 relabel_configs 设置 https 方案,对于任何其他服务,方案将具有 http 的默认值。您还可以使用其他标签来识别需要 https 的服务/实例列表。

  - job_name: 'consul_adapter_1'
    metrics_path: '/actuator/prometheus'

    #This handles Self Signed SSL Issue
    tls_config:
      insecure_skip_verify: true

    consul_sd_configs:
      - server: '<consul host>:<port>'
    relabel_configs:
      - source_labels: [__meta_consul_service]
        regex: (SERVICE_NAME1|SERVICE_NAME2)
        target_label: __scheme__
        replacement: https

【讨论】:

  • 谢谢!这对我有用,尽管我选择使用 __scheme__source_labelstarget_labelreplacement: https,因为我希望 http 的所有内容都使用 TLS。
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 2020-03-28
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多