ssl - Prometheus - 通过 mTLS 抓取指标端点
问题描述
关于如何通过 HTTPS、双向 TLS、双向 SSL 抓取 /metrics 端点的小问题。
我们的 Prometheus 实例部署在位置 A。
然后,我们在各个地方部署了一堆微服务,但从不与 Prometheus 相同的地方。
所有微服务都成功地公开了一个 /metrics 端点,准备好让 Prometheus 来轮询数据。我们已经看到了 Prometheus 格式的数据。
所有微服务必须通过 HTTPS、mTLS、双向 TLS、双向 SSL 公开 /metrics 端点。
QA 中的所有微服务测试都通过普通的旧简单 HTTP 公开 /metrics 端点,只能正常工作。Prometheus 正在使用此配置成功轮询所有数据。
scrape_configs:
- job_name: 'some-job-name'
metrics_path: /metrics
static_configs:
- targets:
- some-host.com:8080
但是,在 Prod 中,/metrics 必须通过 HTTPS mTLS
如果 /metrics 端点应该通过 HTTP 或 HTTPS,此问题的目标不是创建参数。这个问题实际上是一个技术问题,即如何让 Prometheus 能够通过 HTTPS、mTLS 查询这个 /metrics 端点。
允许 Prometheus 通过 HTTPS、mTLS 抓取这些现有数据的配置是什么?
谢谢!
解决方案
您需要在 prometheus 配置中添加 tls 配置。您需要一个为所有微服务指定 SAN 的证书。因此,SAN 将是目标 url 的子域。或者如果它是固定的,则直接是 ip 或主机名。
现在将证书加载到所有微服务和 prometheus 中。这将允许您使用 mTLS 通过 HTTPS 进行抓取。
tls_config: ca_file: 你的证书路径。
您需要为证书添加volumemount 和volume。这将在您的 helm 图表中进行配置。
尝试运行 Prometheus 2.24.0+ 版并在 HTTPS 上启动 Prometheus
推荐阅读
- c# - 使用 TagBuilder 类 C# 插入属性
- fastlane - FastlaneCore::Helper::AppcenterHelper:Class (NameError) 的未定义局部变量或方法“所有者”
- ios - 点击其他单元格时如何在 TableViewController 中隐藏键盘?
- css - 如何使用 Css 在地图中创建“模糊区域”?
- php - 为什么协议 gs 上的 file_get_contents() 错误(开发本地 GAE)
- javascript - 如何在 chrome 扩展中使用 AJAX 向“我的 XAMPP 服务器”发送 GET 请求
- javascript - div上的点击事件并过滤vuex数据--vue.js
- android - 应用在生产中时,如何使用测试用户的帐户进行实际购买以购买相同的产品?
- django - Django Microservices - 跳过所有用户为非用户服务创建的表
- r - 有没有办法在反应数据上使用来自 shinyWidget 的 pickerGroup(或 selectizeGroup)模块?