Prometheus 支持使用 传输层安全 (TLS) 加密来连接 Prometheus 实例(例如,连接到表达式浏览器或 HTTP API)。 如果您想对这些连接强制使用 TLS,则需要创建一个特定的 Web 配置文件。
假设您已经有一个正在运行的 Prometheus 实例,并且您想对其进行调整。 本指南不会介绍 Prometheus 的初始设置。
假设您希望运行一个通过 TLS 提供的 Prometheus 实例,该实例在 example.com
域(您拥有)上可用。
还假设您已使用 OpenSSL 或类似的工具生成了以下内容
/home/prometheus/certs/example.com/example.com.crt
的 SSL 证书/home/prometheus/certs/example.com/example.com.key
的 SSL 密钥您可以使用以下命令生成自签名证书和私钥
mkdir -p /home/prometheus/certs/example.com && cd /home/prometheus/certs/certs/example.com
openssl req \
-x509 \
-newkey rsa:4096 \
-nodes \
-keyout example.com.key \
-out example.com.crt
在提示符下填写适当的信息,并确保在 通用名称
提示符处输入 example.com
。
下面是一个 web-config.yml
配置文件的示例。 通过此配置,Prometheus 将在 TLS 之后提供其所有端点。
tls_server_config:
cert_file: /home/prometheus/certs/example.com/example.com.crt
key_file: /home/prometheus/certs/example.com/example.com.key
要使 Prometheus 使用此配置,您需要使用标志 --web.config.file
调用它。
prometheus \
--config.file=/path/to/prometheus.yml \
--web.config.file=/path/to/web-config.yml \
--web.external-url=https://example.com/
这里的 --web.external-url=
标志是可选的。
如果您想使用 example.com
域在本地测试 TLS,您可以向 /etc/hosts
文件添加一个条目,该条目将 example.com
重新路由到 localhost
127.0.0.1 example.com
然后,您可以使用 cURL 与本地 Prometheus 设置进行交互
curl --cacert /home/prometheus/certs/example.com/example.com.crt \
https://example.com/api/v1/label/job/values
您可以使用 --insecure
或 -k
标志连接到 Prometheus 服务器,而无需指定证书
curl -k https://example.com/api/v1/label/job/values
此文档是开源的。请通过提交问题或拉取请求来帮助改进它。