ZipkinをエンドポイントとするCitrix ADC可観測性エクスポーター

Citrix ADC オブザーバビリティエクスポーターは、 Zipkin をエンドポイントとして使用する OpenTrace(OpenTracing は現在 OpenTelemetry の一部です)をサポートしています。Citrix ADC オブザーバビリティエクスポーターは、Citrix ADC から収集されたトレーシングデータを OpenTracing に適したサポートされている形式に変換し、Zipkin にエクスポートします。Zipkin は、マイクロサービスアーキテクチャにおけるレイテンシの問題のトラブルシューティングに必要なタイミングデータの収集に役立つ分散トレーシングシステムです。Elasticsearch はトレースデータを長期間保持するために使用され、トレースは Zipkin UI または Kibana を使用して視覚化できます。

次の図は、Zipkin アーキテクチャの仕組みを示しています。

  1. トレースを有効にすると、最初に HTTP パケットにオープントレースヘッダーx-trace-idx-span-idx-parent-span-idが追加され 、パケットが次のマイクロサービス Pod に転送されます。

  2. この通信またはトランザクションに関する情報は、Citrix ADC オブザーバビリティエクスポーターにプッシュされます。この情報には、ヘッダー、タイムスタンプ (この要求が開始された時刻とプロセスの全期間)、注釈 (注釈にはその要求に関連付けられた HTTP、SSL、TCP など) に関する詳細が含まれます。

  3. 次に、Citrix ADC オブザーバビリティエクスポーターはすべてのCitrix ADCから複数のトレースメッセージを受信し、それらをZipkinで理解可能なJSON形式に集約し、APIを介してZipkinにプッシュします。

  4. 同様に、マイクロサービスがトレースで有効になっている場合、そのトレースは API を介して Zipkin に送信されます。

  5. Zipkin API はトレースデータを Elasticsearch データベースに保存し、最後に指定された HTTP リクエストに完全なトレースをスティッチして、Kibana などの可視化ツールで可視化します。リクエストが各マイクロサービスに費やした時間を表示できます。

Zipkin アーキテクチャ

Citrix ADC 可観測性エクスポーターの展開

Citrix ADC 展開に基づいて、Citrix ADC オブザーバビリティエクスポーターをKubernetesクラスターの外部または内部に展開できます。Citrix Observability ExporterをKubernetesクラスター内のポッドとして展開するか、クラスター外のCitrix ADC MPXまたはVPXフォームファクターで構成を有効にすることができます。Citrix が提供する Kubernetes YAML ファイルを使用して、Citrix ADC オブザーバビリティエクスポーターを展開できます。

次の図は、Citrix ADCをイングレスゲートウェイとして、Citrix ingress controller をサイドカーとして示しています。Citrix ADCオブザーバビリティエクスポーターは、Citrix ADCから収集されたトレーシングデータをZipkin APIに送信します。その後、トレースデータが Elasticsearch サーバーにアップロードされます。Elasticsearch から、データは Zipkin UI または Kibana UI に送信され、視覚化されます。

Citrix ADC 可観測性エクスポーターの展開

前提条件

  • kube-dnsまたはCoreDNSアドオンが有効になっている Kubernetes クラスタがあることを確認します。

Citrix ADC オブザーバビリティエクスポーターをZipkinで展開するには、次のタスクを実行する必要があります。

  1. トレースサポートを有効にして、必要なアプリケーションをデプロイします。

  2. Citrix 可観測性エクスポーターのサポートを有効にした Citrix ADC CPX を展開します。

  3. YAML ファイルを使用して ZipkinElasticsearch、および Kibana をデプロイします。

  4. YAML ファイルを使用して Citrix オブザーバビリティエクスポーターを展開します。

トレースを有効にしてアプリケーションをデプロイする

トレースを有効にした場合のサンプルアプリケーションデプロイメントを次に示します。

注:

デプロイ済みの 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. Ingress のスマートアノテーションを使用して、アプリケーションの YAML ファイルの Ingress アノテーションで指定し、インポートする必要のある特定のパラメーターを定義します。

      ingress.citrix.com/analyticsprofile: '{"webinsight": {"httpurl":"ENABLED", "httpuseragent":"ENABLED", "httpHost":"ENABLED","httpMethod":"ENABLED","httpContentType":"ENABLED"}}'
    

    : パラメータはwatches-app-tracing.yamlファイル内で事前に定義されています。

    アノテーションについて詳しくは、 Ingress アノテーションのドキュメントを参照してください

Citrix ADC 可観測性エクスポーターをサポートするCitrix ADC CPXを展開する

Citrix ADC オブザーバビリティエクスポーターのサポートを有効にして、Citrix ADC CPX を展開できます。

Citrix ADC CPX の展開中に、展開の YAMLファイルcpx-ingress-tracing.yamlを変更して、Citrix ADC オブザーバビリティエクスポーターのサポートに必要な構成情報を含めることができます。

Citrix ADC オブザーバビリティエクスポーターをサポートするCitrix ADC CPXインスタンスを展開するには、次の手順を実行します。

  1. cpx-ingress-tracing.yamlcic-configmap.yamlファイルをダウンロードします。

  2. 必要なキーと値のペアを含む ConfigMap を作成し、ConfigMap をデプロイします。特定のエンドポイントで使用できるcic-configmap.yamlファイルは、 ディレクトリ内で使用できます

  3. 必要に応じて、Citrix ADC CPX 関連のパラメーターを変更します。たとえば、cpx-ingress-tracing.yamlファイルのargs下に次のように行を追加します。

      args:
        - --configmap
          default/cic-configmap
    
  4. cic-configmap.yaml ファイルを編集して、 NS_ANALYTICS_CONFIG エンドポイント構成でCitrix ADC Observability Exporterの次の変数を指定します。

      server: 'coe-zipkin.default.svc.cluster.local' # COE service FQDN
    
  5. 次のコマンドを使用して、Citrix ADC オブザーバビリティエクスポーターをサポートするCitrix ADC CPXを展開します。

      kubectl create -f cpx-ingress-tracing.yaml
      kubectl create -f cic-configmap.yaml
    

注:

default以外のネームスペースを使用していた場合は、coe-zipkin.default.svc.cluster.localcoe-zipkin.<desired-namespace>.svc.cluster.localに変更します。ADCがKubernetesクラスターの外部にある場合は、Citrix ADCオブザーバビリティエクスポーターのIPアドレスとノードポートアドレスを指定する必要があります。

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

YAML を使用して Zipkin、Elasticsearch、および Kibana をデプロイするには、次の手順を実行します。

  1. 次の YAML ファイルをダウンロードします。

  2. デフォルト以外のカスタムネームスペースを使用する場合は、ネームスペース定義を編集します。

  3. 以下のコマンドを実行して Zipkin、Elasticsearch、および Kibana をデプロイします。

      kubectl create -f zipkin.yaml
      kubectl create -f elasticsearch.yaml
      kubectl create -f kibana.yaml
    

注:

Zipkin、Elasticsearch、および Kibana は、同じ Kubernetes クラスターのデフォルトの名前空間にデプロイされます。

YAML ファイルを使用して Citrix ADC オブザーバビリティエクスポーターを展開する

YAML ファイルを使用して Citrix ADC オブザーバビリティエクスポーターを展開できます。 coe-zipkin.yaml ファイルをダウンロードします。

Kubernetes YAML を使用して Citrix ADC オブザーバビリティエクスポーターをデプロイするには、Elasticsearch エンドポイントで次のコマンドを実行します。

  kubectl create -f coe-zipkin.yaml

注:

デフォルト以外のカスタム名前空間がある場合は、Citrix ADC オブザーバビリティエクスポーターの YAML ファイルを変更します。

Citrix ADC オブザーバビリティエクスポーターの展開を確認する

Citrix ADC オブザーバビリティエクスポーターの展開を確認するには、次の手順に従います。

  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 トレース

    Citrix ADC オブザーバビリティエクスポーターに関連するトラブルシューティングについては、「 Citrix ADC CPX のトラブルシューティング」を参照してください。