Prometheus: Ziel-API-Schlüssel mit http_headers und proxy_url setzen
Kombiniere http_headers beim Scraping mit proxy_url und halte die API-Header des Quellservers getrennt von den CONNECT-Headern an den Vermittler.
Wenn ein HTTPS-Metrics-Endpunkt einen API-Schlüssel verlangt und Prometheus einen Forward-Proxy nutzen muss, wird der Header direkt an der Scrape-Anfrage konfiguriert. Für eine Prometheus-Version, die http_headers unterstützt:
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']
Die Datei enthält den vorgesehenen Ziel-API-Schlüssel und muss in der Ausführungsumgebung von Prometheus lesbar sein. In einem Container ist sie unter genau diesem Pfad im Container bereitzustellen.
http_headers legt X-API-Key auf die Anfrage an metrics.example. Durch einen normalen HTTPS-CONNECT-Tunnel wandert dieser Header innerhalb der TLS-Verbindung zum Ziel. Der Vermittler stellt die Konnektivität bereit und muss den Tunnel zulassen. Für einen öffentlich erreichbaren Metrics-Endpunkt, bei dem öffentliche Vermittler erlaubt sind, liefert die HTTP-Proxy-Liste Kandidaten für die proxy_url ohne Konto; der API-Schlüssel bleibt an der Anfrage an das Ziel.
proxy_connect_header hat ein anderes Ziel: Der Vermittler erhält diese Header beim CONNECT. Ein Ziel-API-Schlüssel wird dort nicht als HTTPS-Anfrageheader an den Metrics-Server übermittelt.
Der tatsächliche Metrics-Hostname und der Pfad gehören in die Scrape-Konfiguration. Prometheus schützt außerdem die Header, die es selbst setzt, vor beliebigen Überschreibungen; für diesen API-Schlüssel sind daher die unterstützten Felder für eigene Header zu verwenden.