NetScaler Observability Exporter と Zipkin をエンドポイントとして使用

最終公開日 : Oct 02, 2026
NetScaler Observability Exporter は、エンドポイントとして Zipkin を使用して OpenTracing (OpenTracing は現在 OpenTelemetry の一部です) をサポートしています。NetScaler Observability Exporter は、NetScaler から収集されたトレースデータを OpenTracing に適したサポートされている形式に変換し、Zipkin にエクスポートします。Zipkin は、マイクロサービスアーキテクチャにおける遅延の問題をトラブルシューティングするために必要なタイミングデータを収集するのに役立つ分散トレースシステムです。Elasticsearch はトレースデータの長期保存に使用され、トレースは Zipkin UI または Kibana を使用して視覚化できます。
次の図は、Zipkin アーキテクチャの仕組みを示しています。
  1. トレースが有効になっている場合、最初に、次のマイクロサービスポッドにパケットを転送する前に、追加のオープン・トレース・ヘッダー (x-trace-id、x-span-id、および x-parent-span-id) を HTTP パケットに追加します。
  2. この通信またはトランザクションに関する情報は、NetScaler Observability Exporter にプッシュされます。この情報には、ヘッダーの詳細、タイムスタンプ (このリクエストが開始された時刻とプロセス全体の期間)、およびアノテーション (アノテーションには、そのリクエストに関連付けられた HTTP、SSL、および TCP が含まれます) が含まれます。
  3. その後、NetScaler Observability Exporter はすべての NetScaler から複数のトレースメッセージを受信し、それらを Zipkin が理解できる JSON 形式に集約し、API を介して Zipkin にプッシュします。
  4. 同様に、マイクロサービスでトレースが有効になっている場合、そのトレースは API を介して Zipkin に送信されます。
  5. Zipkin API はトレースデータを Elasticsearch データベースに保存し、最終的に完全なトレースを与えられた HTTP リクエストに結合し、Kibana などの視覚化ツールで視覚化します。各マイクロサービスでリクエストが費やした時間を確認できます。
Zipkin アーキテクチャ

ネットスケーラー オブザーバビリティ エクスポーターの展開

NetScaler の展開に基づいて、NetScaler Observability Exporter を Kubernetes クラスターの外部または内部に展開できます。NetScaler Observability Exporter を Kubernetes クラスター内のポッドとして展開するか、クラスター外の NetScaler MPX または VPX フォームファクターで構成を有効にすることができます。NetScaler が提供する Kubernetes YAML ファイルを使用して NetScaler Observability Exporter を展開できます。
次の図は、NetScaler Ingress Controller をサイドカーとして持つイングレスゲートウェイとしての NetScaler を示しています。NetScaler Observability Exporter は、NetScaler から収集されたトレースデータを Zipkin API に送信します。その後、トレースデータは Elasticsearch サーバーにアップロードされます。Elasticsearch から、データは視覚化のために Zipkin UI または Kibana UI に送信されます。
ネットスケーラー オブザーバビリティ エクスポーターの展開(/en-us/netscaler-observability-exporter/media/coe-zipkin-deployment.png)

前提条件

  • kube-dns または CoreDNS アドオンが有効になっている Kubernetes クラスターがあることを確認してください。
NetScaler Observability ExporterをZipkinとともにデプロイするには、以下のタスクを実行する必要があります。
  1. トレースサポートを有効にして、必要なアプリケーションをデプロイします。
  2. NetScaler Observability Exporterサポートを有効にしてNetScaler CPXをデプロイします。
  3. YAMLファイルを使用して、Zipkin、Elasticsearch、およびKibanaをデプロイします。
  4. YAMLファイルを使用してNetScaler Observability Exporterをデプロイします。

トレースが有効なアプリケーションをデプロイする

以下は、トレースが有効なアプリケーションデプロイの例です。
注:
事前デプロイされたWebアプリケーションがある場合は、手順1と2をスキップしてください。
  1. 独自の証明書とキーを使用して、シークレットingress.crtとキーingress.keyを作成します。
    この例では、デフォルトの名前空間にingというシークレットが作成されます。
    kubectl create secret tls ing --cert=ingress.crt --key=ingress.key
  2. watches-app-tracing.yamlからYAMLファイルにアクセスして、アプリケーションをデプロイします。
    kubectl create -f watches-app-tracing.yaml
  3. イングレスのスマートアノテーションを使用して、アプリケーションのYAMLファイルのイングレスアノテーションで指定することにより、インポートする必要がある特定のパラメーターを定義します。
    ingress.citrix.com/analyticsprofile: '{"webinsight": {"httpurl":"ENABLED", "httpuseragent":"ENABLED", "httpHost":"ENABLED","httpMethod":"ENABLED","httpContentType":"ENABLED"}}'
    注: パラメーターはwatches-app-tracing.yamlファイルで事前定義されています。
    アノテーションの詳細については、Ingress annotations documentationを参照してください。

NetScaler Observability Exporterのサポート付きでNetScaler CPXをデプロイする

NetScaler Observability Exporterのサポートを有効にしたNetScaler CPXをデプロイできます。
NetScaler CPXをデプロイする際に、デプロイメントYAMLファイル cpx-ingress-tracing.yaml を変更して、NetScaler Observability Exporterのサポートに必要な構成情報を含めることができます。
NetScaler Observability Exporterのサポート付きでNetScaler CPXインスタンスをデプロイするには、次の手順を実行します。
  1. cpx-ingress-tracing.yaml および cic-configmap.yaml ファイルをダウンロードします。
  2. 必要なキーと値のペアでConfigMapを作成し、ConfigMapをデプロイします。特定のエンドポイントについては、ディレクトリ にある cic-configmap.yaml ファイルを使用できます。
  3. 必要に応じて、NetScaler CPX関連のパラメータを変更します。たとえば、cpx-ingress-tracing.yaml ファイルの args の下に次のように行を追加します。
    args:
      - --configmap
        default/cic-configmap
  4. cic-configmap.yaml ファイルを編集して、NS_ANALYTICS_CONFIG エンドポイント構成でNetScaler Observability Exporterの次の変数を指定します。
    server: 'coe-zipkin.default.svc.cluster.local' # COE service FQDN
  5. 次のコマンドを使用して、NetScaler Observability Exporterのサポート付きでNetScaler CPXをデプロイします。
    kubectl create -f cpx-ingress-tracing.yaml
    kubectl create -f cic-configmap.yaml
注:
default 以外の名前空間を使用している場合は、coe-zipkin.default.svc.cluster.local を coe-zipkin.<desired-namespace>.svc.cluster.local に変更します。ADCがKubernetesクラスターの外部にある場合、NetScaler Observability ExporterのIPアドレスとノードポートアドレスを指定する必要があります。

YAMLファイルを使用してZipkin、Elasticsearch、およびKibanaをデプロイする

YAMLを使用してZipkin、Elasticsearch、およびKibanaをデプロイするには、次の手順を実行します。
  1. 次のYAMLファイルをダウンロードします。
  2. default 以外のカスタム名前空間を使用したい場合は、名前空間の定義を編集します。
  3. Zipkin、Elasticsearch、および Kibana をデプロイするには、次のコマンドを実行します。
    kubectl create -f zipkin.yaml
    kubectl create -f elasticsearch.yaml
    kubectl create -f kibana.yaml
注:
Zipkin、Elasticsearch、および Kibana は、同じ Kubernetes クラスターのデフォルトの名前空間にデプロイされます。

YAML ファイルを使用して NetScaler Observability Exporter をデプロイする

YAML ファイルを使用して NetScaler Observability Exporter をデプロイできます。coe-zipkin.yaml ファイルをダウンロードします。
Kubernetes YAML を使用して NetScaler Observability Exporter をデプロイするには、Elasticsearch エンドポイントで次のコマンドを実行します。
kubectl create -f coe-zipkin.yaml
注:
デフォルト以外のカスタム名前空間を使用している場合は、NetScaler Observability Exporter の YAML ファイルを変更します。

NetScaler Observability Exporter のデプロイを検証する

NetScaler Observability Exporter のデプロイを検証するには、次の操作を実行します。
  1. 次のコマンドを使用してアプリケーションにリクエストを送信し、デプロイを検証します。
    kubectl run -i --tty busybox --image=busybox --restart=Never --rm -- wget --no-check-certificate "https://cpx-ingress-zipkin.default.svc.cluster.local/serial/view/watches"
  2. Kubernetes ノードの IP アドレスとノードポートを使用して、Zipkin ユーザーインターフェイスを開きます。
    http://*k8-node-ip-address*:*node-port*/
    以下の画像で、Watches アプリケーションのトレースを表示できます。Watches アプリケーションには、各ウォッチタイプに対応する複数のマイクロサービスがあり、互いに通信してアプリケーションデータを提供します。トレースデータは、アプリケーション FASTTRACK が他のマイクロサービスと比較して、サービスの提供により多くの時間を要したことを示しています。このようにして、パフォーマンスの低いワークロードを特定し、トラブルシューティングを行うことができます。
    トレースデータ
    Kibanaダッシュボードでも生データを表示できます。http://<node-ip>:<node-port> を使用してKibanaを開き、zipkin インデックスパターンを定義することから始めます。
    timestamp_millis フィールドをタイムスタンプフィールドとして使用します。インデックスパターンを作成したら、Discover タブをクリックすると、Zipkinによって収集されたトレース情報を表示できます。
    Zipkinトレース
    NetScaler Observability Exporterに関連するトラブルシューティングについては、NetScaler CPXのトラブルシューティング を参照してください。