Prometheus: http_headers と proxy_url でターゲット API キーを設定する
スクレイプの http_headers を proxy_url と組み合わせ、送信元サーバーの API ヘッダーを中継者への CONNECT ヘッダーと分けて扱います。
HTTPS のメトリクスエンドポイントが API キーを要求し、Prometheus がフォワードプロキシを使う必要がある場合は、スクレイプ要求自体にヘッダーを設定します。http_headers をサポートする Prometheus のバージョンでは次のようにします。
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']
ファイルには意図したターゲット API キーが入っており、Prometheus の実行環境で読み取れる必要があります。コンテナでは、そのコンテナ側のパスに配置してください。
http_headers は metrics.example への要求に X-API-Key を付けます。通常の HTTPS CONNECT トンネルでは、そのヘッダーは宛先の TLS の内側を通ります。中継者は接続性を提供し、トンネルを許可する必要があります。公衆中継者が許可されている一般公開のメトリクスエンドポイントでは、HTTP プロキシ一覧がアカウント不要の proxy_url の候補を提供します。API キーは宛先への要求側に残してください。
proxy_connect_header の宛先は別です。中継者は CONNECT 時にそれらのヘッダーを受け取ります。ターゲット API キーをそこに置いても、メトリクスサーバーへの HTTPS 要求ヘッダーとしては届きません。
実際のメトリクスのホスト名とパスはスクレイプ設定に残してください。Prometheus は自身が設定するヘッダーも任意の上書きから保護するため、この API キーにはサポートされているカスタムヘッダーフィールドを使用します。