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.comをlocalhostにリダイレクトするエントリを追加できます。
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