Prometheus APIとUIエンドポイントのTLS暗号化による保護

Prometheusは、Prometheusインスタンスへの接続(式ブラウザまたはHTTP API)にTransport Layer Security(TLS)暗号化をサポートしています。これらの接続にTLSを強制したい場合は、特定のWeb設定ファイルを作成する必要があります。

このガイドは、PrometheusインスタンスへのTLS接続についてです。Prometheusインスタンスからスクレイプターゲットへの接続にもTLSがサポートされています。

前提条件

Prometheusインスタンスがすでに実行されており、それを適応させたいとします。このガイドでは、初期のPrometheusセットアップについては説明しません。

TLSで提供され、example.comドメイン(ご自身の所有)で利用可能なPrometheusインスタンスを実行したいとします。

OpenSSLまたは同等のツールを使用して、次のものを生成したとします。

  • SSL証明書が/home/prometheus/certs/example.com/example.com.crtにある
  • SSLキーが/home/prometheus/certs/example.com/example.com.keyにある

自己署名証明書と秘密鍵は、このコマンドで生成できます。

mkdir -p /home/prometheus/certs/example.com && cd /home/prometheus/certs/certs/example.com
openssl req \
  -x509 \
  -newkey rsa:4096 \
  -nodes \
  -keyout example.com.key \
  -out example.com.crt

プロンプトで適切な情報を入力し、Common Nameプロンプトでexample.comと入力してください。

Prometheus 設定

以下は、web-config.yml設定ファイルの例です。この設定により、PrometheusはすべてのエンドポイントをTLSで提供します。

tls_server_config:
  cert_file: /home/prometheus/certs/example.com/example.com.crt
  key_file: /home/prometheus/certs/example.com/example.com.key

Prometheusにこの設定を使用させるには、--web.config.fileフラグで呼び出す必要があります。

prometheus \
  --config.file=/path/to/prometheus.yml \
  --web.config.file=/path/to/web-config.yml \
  --web.external-url=https://example.com/

--web.external-url=フラグはオプションです。

テスト

example.comドメインを使用してローカルでTLSをテストしたい場合は、/etc/hostsファイルにexample.comlocalhostにリダイレクトするエントリを追加できます。

127.0.0.1     example.com

その後、cURLを使用してローカルのPrometheusセットアップと対話できます。

curl --cacert /home/prometheus/certs/example.com/example.com.crt \
  https://example.com/api/v1/label/job/values

--insecureまたは-kフラグを指定せずにPrometheusサーバーに接続できます。

curl -k https://example.com/api/v1/label/job/values

このページの内容