クライアント証明書認証を使用したTimesTenエクスポータおよびPrometheusの構成について
クライアント証明書認証を使用してTimesTenエクスポータおよびPrometheusを使用するには、クライアント証明書認証を要求するようにエクスポータおよびPrometheusを構成する必要があります。
-
自己署名証明書を作成します。エクスポータではサーバー証明書を使用して、クライアントに対して自分自身を認証するとともにクライアント証明書を認証します。自己署名証明書を作成するには
ttExporterユーティリティを使用します。自己署名証明書は、エクスポータが実行されているのと同じホスト上に作成する必要があります。自己署名証明書は、任意のディレクトリのOracle Walletに格納されます。ディレクトリを指定しない場合、Oracle Walletはユーザーのホーム($HOME)・ディレクトリに格納されます。TimesTenでは、証明書情報をユーザーの$HOMEディレクトリに格納しないことをお薦めします。 -
サーバー証明書をエクスポートします。
ttExporterユーティリティを使用して、サーバー証明書をPEM形式でファイルにエクスポートします。このファイルは、クライアント証明書認証のためにPrometheusによって使用されます。 -
クライアント証明書とクライアント秘密キーの両方を作成してエクスポートします。
ttExporterユーティリティを使用して、クライアント証明書を作成して1つのファイルにエクスポートし、クライアント秘密キーを作成して2つ目のファイルにエクスポートします。エクスポータからメトリックをスクレイプするPrometheusインスタンスごとに、クライアント証明書とクライアント秘密キーを作成してエクスポートする必要があります。クライアント証明書ファイルとクライアント秘密キー・ファイルは、クライアント証明書認証のためにPrometheusによって使用されます。
ttExporterユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の「ttExporter」を参照してください。
サーバー証明書、クライアント証明書およびクライアント秘密キーを作成してエクスポートした後に、エクスポータのクライアント証明書認証を要求するようにPrometheusを構成する必要があります。
Prometheusでは、prometheus.ymlという名前のファイルにサンプル構成が提供されています。このファイルはPrometheusをダウンロードすると使用できます。変更が必要なセクションは2つあります。tls_configブロックは、クライアント証明書認証の構成に使用されます。scrape_configsブロックは、Prometheusがエクスポータからメトリックを安全にスクレイプするために必要な残りのパラメータを設定するために使用します。
tls_configブロックで次の設定を変更する必要があります。
-
ca_file: これは、クライアント証明書認証のためにPrometheusが必要とするサーバー証明書ファイルです。TimesTenttExporterユーティリティを使用してサーバー証明書を作成した後に、ttExporterユーティリティを再度使用してこのサーバー証明書をファイルにエクスポートしていることを思い出してください。これが、Prometheusca_fileパラメータに指定するファイルです。 -
cert_file: これは、クライアント証明書認証のためにPrometheusが必要とするクライアント証明書ファイルです。TimesTenttExporterユーティリティを使用して、クライアント証明書を作成してファイルにエクスポートしていることを思い出してください。これが、Prometheuscert_fileパラメータに指定するファイルです。 -
key_file: これは、クライアント証明書認証のためにPrometheusが必要とするクライアント秘密キー・ファイルです。TimesTenttExporterユーティリティを使用して、クライアント秘密キーを作成してファイルにエクスポートしていることを思い出してください。これが、Prometheuskey_fileパラメータに指定するファイルです。
scrape_configsブロックで次の一般設定を変更する必要があります。
job_name: これは、エクスポータからメトリックをスクレイプするために割り当てるジョブ名です。job_nameには任意の名前を指定できます。-
metrics_path: これは、PrometheusがエクスポータからTimesTenメトリックをフェッチするHTTPSリソース・パスです。エクスポータは/metricsHTTPSリソース・パスを使用します。これはPrometheusのデフォルトのHTTPSリソース・パスでもあります。したがって、metrics_pathパラメータを設定する必要はありません。設定されていない場合、PrometheusはHTTPSリソース・パスにデフォルトの/metricsを使用します。 -
scheme: これは、リクエストに使用されるプロトコル・スキームです。クライアント証明書認証が必要となるようにエクスポータとPrometheusを構成した場合はHTTPSプロトコルが使用されます。schemeパラメータをhttpsに設定する必要があります。 -
static_configsブロック: このブロックにはtargetsパラメータが含まれます。targetsパラメータには、エクスポータが実行されるホストおよびエクスポータがリスニングするポート番号を指定します。命名規則はhost:portnumberとなります。たとえば、エクスポータがmyhostホストで実行され、12345ポート番号でリスニングする場合、targetsパラメータをmyhost:12345と設定します。
Prometheus構成ファイルを変更したら、次のステップはエクスポータを起動することです。TimesTen ttExporterユーティリティを-port pオプションとともに使用してエクスポータを起動します(pは、エクスポータがリスニングするポート番号です)。このポート番号は、Prometheus構成ファイルで指定するポート番号と一致する必要があります。(とりわけ、Prometheus構成ファイルでは、ポート番号はstatic_configsブロックのtargetsパラメータに指定するポート番号です。)
エクスポータを起動すると、エクスポータはSIGINTRやSIGTERMなどのシグナルにより停止するまで実行を継続します。エクスポータの起動時に、ttExporterでプロセスIDをファイルに書き込むこともできます。これを行うには、ttExporterユーティリティを-pid-file pidfilenameオプションとともに使用します。その後、pidfilenameファイルに格納されているttExporterプロセスIDを終了することで、エクスポータを停止できます。
PrometheusがエクスポータからTimesTenメトリックを安全にスクレイプするようにエクスポータおよびPrometheusを構成する方法を示す完全な例は、「クライアント証明書認証を使用したTimesTenエクスポータおよびPrometheusの構成」を参照してください。
ttExporterユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の「ttExporter」を参照してください。
Prometheus構成ファイルの詳細は、https://prometheus.io/docs/prometheus/latest/configuration/configuration/およびhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_configを参照してください。