我想通过 tls 和身份验证来保护我的 Alertmanager,这样在我的网络中,并不是每个人都能够访问面向公众的端点。我不想使用 nginx 服务器作为代理。 这将是我的普罗米修斯配置:
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- scheme: https
basic_auth:
username: abc
password: ####
tls_config:
ca_file: ca.crt
cert_file: ca.crt
key_file: ca.key
static_configs:
- targets: ['localhost:9093']
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "alertRules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
scheme: https
basic_auth:
username: abc
password: ###
tls_config:
ca_file: ca.crt
static_configs:
- targets: ['localhost:9090']
从 0.22 版本开始,Alertmanager 支持基本身份验证和 https。检查原始文档以了解如何配置它,因为您的配置似乎与那里的描述不匹配。
有关如何对密码进行哈希处理和测试整个设置的详细信息可以改编自 Prometheus 文档。
更新:我再次看了你的问题,我想我对标题感到困惑。看来您想要做的是将 Prometheus 配置为与需要基本身份验证的 Alertmanager 一起使用。我在本文开头提供的解决方案是将 Alertmanager 配置为需要基本身份验证。
如果您想配置 Prometheus 与需要基本身份验证的 Alertmanager 进行通信,您的配置似乎是正确的,如 Prometheus 文档的本节中所述。
我认为您的配置很好,但也许您需要处理证书备用名称并使用正确的名称访问端点。