prometheus 中文文档
v2.17
v2.17
  • Prometheus 中文文档
  • introduction
    • 概述
    • 初识 Prometheus
    • 与替代品比较
    • 常见问题
    • 路线图
    • 相关资源
    • 相关术语
  • concepts
    • 数据模型
    • 数据指标类型
    • 作业和实例
  • prometheus
    • 快速开始
    • 安装
    • 配置
      • 配置
      • 定义记录规则
      • 告警规则
      • 模板示例
      • 模板参考
      • 规则的单元测试
    • 查询
      • Prometheus 查询
      • 运算符
      • 函数
      • 查询示例
      • HTTP API
    • 存储
    • 联合
    • 管理 API
    • Prometheus 2.0 迁移指南
    • API 稳定性保证
  • visualization
    • 表达式浏览器
    • Grafana 对 Prometheus 的支持
    • 控制台模板
  • operating
    • 安全模型
    • 集成
  • instrumenting
    • 客户端库
    • 编写客户端库
    • 推送数据指标
    • 数据导出及相关集成
    • 编写数据导出器
    • 公开的格式
  • alerting
    • 告警概述
    • Alertmanager
    • 配置
    • 发送告警
    • 通知模板参考
    • 通知模板示例
    • 管理 API
  • practices
    • 指标和标签命名
    • 控制台和仪表盘
    • 工具
    • Histogram and Summary
    • 告警
    • 记录规则
    • 什么时候使用 Pushgateway
    • 远程写调试
  • guides
    • 使用 cAdvisor 监控 docker 容器数据指标
    • 使用基于文件的服务发现来发现数据采集目标
    • 实现一个 Go 应用
    • 使用 Node Exporter 监控 Linux 主机指标
    • 使用基本身份验证保护 Prometheus API 和 UI 端点
    • 理解并使用 multi-target exporters 模式
    • 使用 TLS 加密 Prometheus API 和 UI 端点
    • 使用 Prometheus 查询日志
由 GitBook 提供支持
在本页
  • nginx 示例
  • nginx 配置
  • Prometheus 配置
  • 测试

这有帮助吗?

  1. guides

使用 TLS 加密 Prometheus API 和 UI 端点

上一页理解并使用 multi-target exporters 模式下一页使用 Prometheus 查询日志

最后更新于5年前

这有帮助吗?

对于与 Prometheus 实例(即表达式浏览器或 )的连接,Prometheus 不直接支持 (TLS)加密如果您想对这些连接强制执行 TLS,建议将 Prometheus 与结合使用,并在代理层应用 TLS。您可以使用任何您喜欢的反向代理,在本指南中,我们将提供一个 。

NOTE: 尽管不支持到 Prometheus 实例 TLS 连接,但从 Prometheus 实例到的连接均支持TLS。

nginx 示例

假设您要在 example.com 域(您所拥有的) 上可用的 服务后面运行 Prometheus 实例,并且所有 Prometheus 端点都可以通过 /prometheus 端点使用。因此 Prometheus 的 /metrics 端点的完整 URL 为:

https://example.com/prometheus/metrics

假设您已经使用 或类似工具生成了以下内容:

  • SSL 证书文件 /root/certs/example.com/example.com.crt

  • SSL 密钥文件 /root/certs/example.com/example.com.key

您可以使用以下命令生成自签名证书和私钥:

mkdir -p /root/certs/example.com && cd /root/certs/example.com
openssl req \
  -x509 \
  -newkey rsa:4096 \
  -nodes \
  -keyout example.com.key \
  -out example.com.crt

在提示符下填写适当的信息,并确保在 Common Name 提示符下填入 example.com。

nginx 配置

  • 使用您提供的证书和密钥实现 TLS 加密

  • 将 /prometheus 端点的所有连接代理到在同一主机上运行的 Prometheus 服务器(同时从URL中删除 /prometheus)

http {
    server {
        listen              443 ssl;
        server_name         example.com;
        ssl_certificate     /root/certs/example.com/example.com.crt;
        ssl_certificate_key /root/certs/example.com/example.com.key;

        location /prometheus {
            proxy_pass http://localhost:9090/;
        }
    }
}

events {}

以 root 用户启动 nginx(因为 nginx 需要监听到 443 端口):

sudo nginx -c /usr/local/etc/nginx/nginx.conf

Prometheus 配置

在 nginx 代理后面运行 Prometheus 时,您需要将外部 URL 设置为 http://example.com/prometheus,并将路由前缀设置为 /:

prometheus \
  --config.file=/path/to/prometheus.yml \
  --web.external-url=http://example.com/prometheus \
  --web.route-prefix="/"

测试

如果您想使用 example.com 域在本地测试 nginx 代理,则可以在 /etc/hosts 文件中添加一个条目,以将 example.com 重新路由到 localhost:

127.0.0.1     example.com

然后,您可以使用 cURL 与本地 nginx/Prometheus 进行交互:

curl --cacert /root/certs/example.com/example.com.crt \
  https://example.com/prometheus/api/v1/label/job/values

您可以使用 --insecure 或 -k 标志连接到 nginx 服务器,而无需指定证书:

curl -k https://example.com/prometheus/api/v1/label/job/values

下面是一个示例 配置文件。 使用此配置,nginx将: Below is an example configuration file. With this configuration, nginx will:

NOTE: 此示例使用 /etc/nginx 作为 nginx 配置文件,但这会因安装而异。其它包括 /usr/local/nginx/conf 和 /usr/local/etc/nginx。

nginx.conf
nginx.conf
常用 nginx 配置目录
HTTP API
传输层安全
反向代理
nginx
OpenSSL
nginx 示例
采集目标