Prometheus: definir una clave API de destino con http_headers y proxy_url
Combina http_headers del scrape con proxy_url y mantén las cabeceras API del servidor de origen separadas de las cabeceras CONNECT enviadas al intermediario.
Cuando un endpoint de métricas HTTPS exige una clave API y Prometheus debe usar un proxy directo, configura la cabecera en la propia solicitud de scrape. Para una versión de Prometheus compatible con http_headers:
scrape_configs:
- job_name: secured_metrics
scheme: https
metrics_path: /metrics
proxy_url: http://proxy.example:8080
http_headers:
X-API-Key:
files:
- /etc/prometheus/secrets/metrics-api-key
static_configs:
- targets: ['metrics.example:443']
El archivo contiene la clave API de destino prevista y debe ser legible en el entorno de ejecución de Prometheus. En un contenedor, provéela en esa ruta del lado del contenedor.
http_headers coloca X-API-Key en la solicitud hacia metrics.example. A través de un túnel HTTPS CONNECT normal, esa cabecera viaja dentro del TLS del destino. El intermediario proporciona conectividad y debe permitir el túnel. Para un endpoint de métricas accesible públicamente donde se permiten intermediarios públicos, la lista de proxys HTTP ofrece candidatos para proxy_url sin cuenta; mantén la clave API en la solicitud de destino.
proxy_connect_header tiene otro destino: el intermediario recibe esas cabeceras en el CONNECT. Poner una clave API de destino allí no la entrega como cabecera de solicitud HTTPS al servidor de métricas.
Mantén el nombre de host y la ruta reales de las métricas en la configuración de scrape. Prometheus también protege las cabeceras que establece por sí mismo frente a sobrescrituras arbitrarias, así que para esta clave API usa los campos de cabecera personalizada admitidos.