Prometheus 支持基本身份验证和 TLS,这只是试验性的,将来可能会改变。
要指定加载哪个 web 配置文件,请使用 --web.config.file 标志。
该文件以 YAML 格式编写,由下述方案定义。括号表示参数为可选参数。对于非列表参数,其值将设置为指定的默认值。
每次 http 请求(如配置中的任何更改)都会读取该文件,并立即获取证书。
通用占位符定义如下:
<boolean>:布尔值,取值为 true 或 false
<filename>:当前工作目录中的有效路径
<secret>:作为秘密(如密码)的正则表达式字符串
<string>:正则字符串
下面是一个有效的示例文件:
# TLS 和基本身份验证配置示例。 # # 此外,还需要证书和密钥文件。 tls_server_config: cert_file: server.crt key_file: server.key # 连接 Prometheus 所需的用户名和密码。 # 密码使用 bcrypt 算法散列: # https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md#about-bcrypt basic_auth_users: alice: $2y$10$mDwo.lAisC94iLAyP81MCesa29IzH37oigHC/42V2pdJlUprsJPze bob: $2y$10$hLqFl9jSjoAAy95Z/zw8Ye8wkdMBM8c5Bn1ptYqP/AXyV0.oy0S8m
更多语法:
tls_server_config: # 服务器用于验证客户端身份的证书和密钥文件 cert_file: <filename> key_file: <filename> # 用于客户端身份验证的服务器策略,映射到 ClientAuth 策略 # 有关 clientAuth 选项的更多详情: # https://golang.org/pkg/crypto/tls/#ClientAuthType # # 注意:如果要启用客户端身份验证,则需要使用 RequireAndVerifyClientCert,其他值不安全 [ client_auth_type: <string> | default = "NoClientCert" ] # CA 证书,用于客户端对服务器进行证书验证 [ client_ca_file: <filename> ] # 验证客户端证书的主题替代名称 (SAN) 是否与此列表中的条目完全匹配,否则终止连接。 # SAN 可以是以下一个或多个: DNS、IP、电子邮件或来自 # https://pkg.go.dev/crypto/x509#Certificate 的 URI 地址。 [ client_allowed_sans: [ - <string> ] ] # 可接受的最小 TLS 版本 [ min_version: <string> | default = "TLS12" ] # 可接受的最大 TLS 版本 [ max_version: <string> | default = "TLS13" ] # TLS 1.2 及以下版本支持的密码套件列表。如果为空,则使用 Go 默认的密码套件。 # 可用的密码套件记录在 go 文档中: # https://golang.org/pkg/crypto/tls/#pkg-constants # # 请注意,只支持以下函数返回的密码: # https://pkg.go.dev/crypto/tls#CipherSuites [ cipher_suites: [ - <string> ] ] # prefer_server_cipher_suites 控制服务器是选择客户端最偏好的密码套件, # 还是选择服务器最偏好的密码套件。如果为 "true",则使用以 cipher_suites # 中元素顺序表示的服务器首选项。 [ prefer_server_cipher_suites: <boolean> | default = true ] # 将在 ECDHE 握手过程中使用的椭圆曲线,按优先顺序排列。 # 可用的椭圆曲线记录在 Go 文档中: # https://golang.org/pkg/crypto/tls/#CurveID [ curve_preferences: [ - <string> ] ] http_server_config: # 启用 HTTP/2 支持。请注意,只有 TLS 才支持 HTTP/2,这一点无法即时更改 [ http2: <boolean> | default = true ] # 可添加到 HTTP 响应的标头列表 [ headers: # 为 HTTP 响应设置 Content-Security-Policy 头 # 如果为空,则取消设置。 [ Content-Security-Policy: <string> ] # 为 HTTP 响应设置 X-Frame-Options 头 # 如果为空,则取消设置。可接受的值为 deny 和 sameorigin。 # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options [ X-Frame-Options: <string> ] # 为 HTTP 响应设置 X-Content-Type-Options 头 # 如果为空,则取消设置,接受值为 nosniff # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options [ X-Content-Type-Options: <string> ] # 为 HTTP 响应设置 X-XSS-Protection 头. # 如果为空,则取消设置。 # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection [ X-XSS-Protection: <string> ] # 为 HTTP 响应设置 Strict-Transport-Security 头 # 如果为空,则取消设置。 # 请务必谨慎使用,因为该标头可能会强制浏览器通过 HTTPS 加载 Prometheus 以及同一域和子域上 # 托管的其他应用程序。 # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security [ Strict-Transport-Security: <string> ] ] # 通过基本身份验证完全访问网络服务器的用户名和散列密码。如果为空,则不需要基本身份验证。 # 密码使用 bcrypt 算法散列。 basic_auth_users: [ <string>: <secret> ... ]