Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第28章 ルーターのモニタリングおよびデバッグ

28.1. 概要

基礎となる実装によっては、実行中のルーターを複数の方法でモニターすることができます。このトピックでは、HAProxy テンプレートルーターおよびその正常性を確認するためのコンポーネントについて説明します。

28.2. 統計の表示

HAProxy ルーターは、HAProxy 統計の web リスナーを公開します。ルーターのパブリック IP アドレスと適切に設定されたポート (デフォルトは 1936) を入力して統計ページを表示し、プロンプトが出されたら管理者パスワードを入力します。このパスワードおよびポートはルーターのインストール時に設定されますが、それらはコンテナーの haproxy.config ファイルを表示して確認することができます。

Prometheus 形式で未加工統計を抽出するには、以下を実行します。

$ curl -u <user>:<password> -kv <router_IP>:<STATS_PORT>/metrics

このコマンドについての必要な情報を取得する方法については、「Exposing Router Metrics」を参照してください。

28.3. 統計ビューの無効化

デフォルトで、HAProxy 表示はポート 1936 で公開されます (パスワードで保護されたアカウントを使用する)。HAProxy 統計の公開を無効にするには、統計ポート番号として 0 を指定します。

$ oc adm router hap --service-account=router --stats-port=0

注: HAProxy は依然として統計を収集し、保存しますが、web リスナー経由での統計の 公開 が行われなくなります。要求を HAProxy ルーターコンテナー内の HAProxy AF_UNIX ソケットに送信すれば、依然として統計にアクセスできます。

$ cmd="echo 'show stat' | socat - UNIX-CONNECT:/var/lib/haproxy/run/haproxy.sock"
$ routerPod=$(oc get pods --selector="router=router"  \
    --template="{{with index .items 0}}{{.metadata.name}}{{end}}")
$ oc exec $routerPod -- bash -c "$cmd"
重要

セキュリティー保護の理由により oc exec コマンドは、特権付きコンテナーにアクセスする場合には機能しません。その代わりに、ノードホストに対して SSH を実行して必要なコンテナーで docker exec コマンドを使用することができます。

28.4. ログの表示

ルーターのログを表示するには、Pod で oc logs コマンドを実行します。ルーターは基礎となる実装を管理するプラグインプロセスとして実行されているため、このログは実際の HAProxy ログではなく、プラグインのログになります。

HAProxy で生成されるログを表示するには、以下の環境変数を使用して syslog サーバーを起動し、その位置情報をルーター Pod に渡します。

表28.1 ルーター Syslog 変数

環境変数説明

ROUTER_SYSLOG_ADDRESS

syslog サーバーの IP アドレスです。ポートが指定されていない場合、ポート 514 がデフォルトになります。

ROUTER_LOG_LEVEL

これはオプションであり、HAProxy ログレベルを変更する際に設定します。設定されていない場合は、デフォルトのログレベルは warning になります。これは HAProxy がサポートするログレベルに変更することができます。

ROUTER_SYSLOG_FORMAT

これはオプションであり、カスタマイズされた HAProxy ログ形式を定義する際に設定されます。これを HAProxy が受け入れるログ形式の文字列に変更できます。

メッセージを syslog サーバーに送信できるように実行中のルーター Pod を設定するには、以下を実行します。

$ oc set env dc/router ROUTER_SYSLOG_ADDRESS=<dest_ip:dest_port>  ROUTER_LOG_LEVEL=<level>

たとえば、以下はデフォルトポート 514 で 127.0.0.1 にログを送信するよう HAProxy を設定し、ログレベルを debug に変更します。

$ oc set env dc/router ROUTER_SYSLOG_ADDRESS=127.0.0.1 ROUTER_LOG_LEVEL=debug

28.5. ルーター内部の表示

routes.json

ルートは HAProxy ルーターで処理され、メモリー、ディスクおよび HAProxy 設定ファイルに保存されます。HAProxy 設定ファイルを生成するためにテンプレートに渡される内部ルート表示は /var/lib/haproxy/router/routes.json ファイルで確認できます。ルーティングの問題のトラブルシューティング時には、このファイルを表示して設定を有効にするために使用されているデータを確認できます。

HAProxy 設定

HAProxy 設定および特定ルート用に作成されたバックエンドは /var/lib/haproxy/conf/haproxy.config ファイルで確認することができます。マッピングファイルは同じディレクトリーにあります。ヘルパーのフロントエンドとバックエンドは、着信要求のバックエンドへのマッピング時にマッピングファイルを使用します。

証明書

証明書は 2 つの場所に保存されます。

  • edge termination および re-encrypt 終端ルートの証明書は /var/lib/haproxy/router/certs ディレクトリーに保存されます。
  • re-encrypt 終端ルートのバックエンドへの接続に使用される証明書は /var/lib/haproxy/router/cacerts ディレクトリーに保存されます。

ファイルはルートの namespace および名前で指定されます。キー、証明書および CA 証明書は単一ファイルに連結されます。OpenSSL を使用してこれらのファイルの内容を表示できます。