- 文档首页
托管 Prometheus
最佳实践
跨云/跨地域工作区访问
使用代理实现工作区公网访问
使用代理实现工作区公网访问
托管 Prometheus 的工作区支持通过代理的方式实现公网访问。本文为您介绍如何在容器服务集群中创建代理,实现工作区的公网访问。
背景信息
托管 Prometheus 工作区目前提供标准的内网 Remote Write 地址和 Query 地址。允许您采集公有云内网的产品指标和业务指标,并支持在容器服务 VKE 集群中部署 Grafana,实现指标大盘的创建和查看。详情请参见 在容器服务集群中部署 Grafana 并接入工作区。 在某些场景下,您可能需要通过公网访问托管 Prometheus 的工作区数据,例如:在多云场景下,需要将多个公有云中的数据汇总到一个 Grafana 上进行查看。这种情况下,您可以在容器服务 VKE 集群中配置代理,实现通过公网访问托管 Prometheus 工作区的目的。
前提条件
- 已创建托管 Prometheus 工作区,并开启 BasicAuth 认证,详情请参见 创建工作区。
- 已在集群中安装 ingress-nginx 组件或自建 Nginx Ingress,并完成负载均衡配置。
- 如果您使用集群的 ingress-nginx 组件,在安装组件时,需要根据实际需求完成负载均衡的配置,比如:负载均衡类型 必须配置为 公网,计费方式需要根据实际需求选择 按带宽计费 或 按实际流量计费 等。详情请参见 ingress-nginx 组件 。
- 已在火山引擎 SSL 证书服务 购买或使用 OpenSSL 创建 SSL 证书和密钥。
操作步骤
步骤一:配置保密字典
为保证公网环境下的通信安全,Grafana 和托管 Prometheus 之间建议使用 HTTPS 协议通信。因此,需要使用保密字典配置 HTTPS 使用的 SSL 证书和密钥。
- 已获取 SSL 证书和密钥,本文以tls.key和tls.crt为例。
- 使用 kubectl 连接目标集群,使用以下命令,创建名称为 grafana-key,类型为kubernetes.io/tls的保密字典。
kubectl create secret tls grafana-key --key tls.key --cert tls.crt
步骤二:配置服务和路由规则
- 在左侧导航栏中,选择 服务与路由 > 服务。单击 使用 Yaml 创建,创建服务。通过ExternalName类型的服务访问托管 Prometheus 工作区。
externalName: query.prometheus-cn-beijing.ivolces.com
- 在左侧导航栏中,选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建,创建路由规则。指定外部域名和服务的映射关系。
apiVersion: networking.k8s.io/v1
ingressClassName: nginx
secretName: grafana-key
说明
您需要自主保障在公网环境下,自定义域名和 ingress 均衡负载公网 IP 的 DNS 解析关系。
步骤三:接入工作区数据源
- 在左侧导航栏中,选择 Connection > Data Sources。
-
- 单击 Add data source,创建新的数据源。
-
- 在 Add data source 页面中,单击 Prometheus。
-
- 在 HTTP 配置项中,Prometheus server URL 处,粘贴经过修改的工作区 Query URL 地址。
说明
需要将工作区原始的 Query URL 地址进行如下修改:
例如:本例中的 Query URL 地址修改为https://vmp-test.com/workspaces/1c3***。
6. 在 Auth 配置项中,开启 Basic auth 选项,并在 Basic Auth Details 配置项中,配置工作区认证使用的用户名和密码。
注意
如果您的证书为自签发证书等不可信证书,还需要开启 Skip TLS Verify 选项。否则 Grafana 会报证书验证错误。
7. 单击页面底部的 Save & Test,系统显示 Successfully queried the Prometheus API,表示数据源配置成功,工作区已经正确接入 Grafana。
步骤四:创建并查看大盘
-
-
-
监控和运维
使用代理通过公网读取或写入托管 Prometheus 工作区数据,读取或写入性能与 VKE 集群中的 ingress 实例性能密切相关。建议您通过 VKE 集群的可观测性功能,对 ingress 实例进行监控和运维。可参考如下文档:
参考信息
如何使用 OpenSSL 创建自签名证书
- 执行以下命令,生成 2048 位的 RSA 私钥。
openssl genrsa -out tls.key 2048
预期结果如下:
Generating RSA private key, 2048 bit long modulus
openssl req -new -key tls.key -out tls.csr
预期结果如下,需要填写证书的相关信息,包括:国家、地区、组织名称、域名、电子邮件地址等。
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) []:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) []:vke
Organizational Unit Name (eg, section) []:vke
Common Name (eg, fully qualified host name) []:vmp-test.com
Email Address []:user@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:mypassword
- 执行以下命令,使用私钥对证书进行签名,有效期配置为 365 天。
openssl x509 -req -in tls.csr -out tls.crt -signkey tls.key -days 365
- 至此,完成创建 HTTPS 加密所需的私钥(tls.key)和证书(tls.crt)。
最近更新时间:2025.09.03 15:13:01