ZipkinをエンドポイントとするCitrix ADC可観測性エクスポーター
Citrix ADC オブザーバビリティエクスポーターは、 Zipkin をエンドポイントとして使用する OpenTrace(OpenTracing は現在 OpenTelemetry の一部です)をサポートしています。Citrix ADC オブザーバビリティエクスポーターは、Citrix ADC から収集されたトレーシングデータを OpenTracing に適したサポートされている形式に変換し、Zipkin にエクスポートします。Zipkin は、マイクロサービスアーキテクチャにおけるレイテンシの問題のトラブルシューティングに必要なタイミングデータの収集に役立つ分散トレーシングシステムです。Elasticsearch はトレースデータを長期間保持するために使用され、トレースは Zipkin UI または Kibana を使用して視覚化できます。
次の図は、Zipkin アーキテクチャの仕組みを示しています。
-
トレースを有効にすると、最初に HTTP パケットにオープントレースヘッダー
x-trace-id
、x-span-id
、x-parent-span-id
が追加され 、パケットが次のマイクロサービス Pod に転送されます。 -
この通信またはトランザクションに関する情報は、Citrix ADC オブザーバビリティエクスポーターにプッシュされます。この情報には、ヘッダー、タイムスタンプ (この要求が開始された時刻とプロセスの全期間)、注釈 (注釈にはその要求に関連付けられた HTTP、SSL、TCP など) に関する詳細が含まれます。
-
次に、Citrix ADC オブザーバビリティエクスポーターはすべてのCitrix ADCから複数のトレースメッセージを受信し、それらをZipkinで理解可能なJSON形式に集約し、APIを介してZipkinにプッシュします。
-
同様に、マイクロサービスがトレースで有効になっている場合、そのトレースは API を介して Zipkin に送信されます。
-
Zipkin API はトレースデータを Elasticsearch データベースに保存し、最後に指定された HTTP リクエストに完全なトレースをスティッチして、Kibana などの可視化ツールで可視化します。リクエストが各マイクロサービスに費やした時間を表示できます。
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 に送信され、視覚化されます。
前提条件
-
kube-dns
またはCoreDNS
アドオンが有効になっている Kubernetes クラスタがあることを確認します。
Citrix ADC オブザーバビリティエクスポーターをZipkinで展開するには、次のタスクを実行する必要があります。
-
トレースサポートを有効にして、必要なアプリケーションをデプロイします。
-
Citrix 可観測性エクスポーターのサポートを有効にした Citrix ADC CPX を展開します。
-
YAML ファイルを使用して Zipkin、 Elasticsearch、および Kibana をデプロイします。
-
YAML ファイルを使用して Citrix オブザーバビリティエクスポーターを展開します。
トレースを有効にしてアプリケーションをデプロイする
トレースを有効にした場合のサンプルアプリケーションデプロイメントを次に示します。
注:
デプロイ済みの Web アプリケーションがある場合は、ステップ 1 と 2 をスキップします。
-
シークレット ingress.crt を作成し、独自の証明書とキーを使用して ingress.key をキー設定します。
この例では、デフォルトの名前空間に ing というシークレットが作成されます。
kubectl create secret tls ing --cert=ingress.crt --key=ingress.key
-
watches-app-tracing.yaml から YAML ファイルにアクセスして、アプリケーションをデプロイします。
kubectl create -f watches-app-tracing.yaml
-
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インスタンスを展開するには、次の手順を実行します。
-
cpx-ingress-tracing.yamlと
cic-configmap.yaml
ファイルをダウンロードします。 -
必要なキーと値のペアを含む ConfigMap を作成し、ConfigMap をデプロイします。特定のエンドポイントで使用できる
cic-configmap.yaml
ファイルは、 ディレクトリ内で使用できます。 -
必要に応じて、Citrix ADC CPX 関連のパラメーターを変更します。たとえば、
cpx-ingress-tracing.yaml
ファイルのargs
下に次のように行を追加します。args: - --configmap default/cic-configmap
-
cic-configmap.yaml
ファイルを編集して、NS_ANALYTICS_CONFIG
エンドポイント構成でCitrix ADC Observability Exporterの次の変数を指定します。server: 'coe-zipkin.default.svc.cluster.local' # COE service FQDN
-
次のコマンドを使用して、Citrix ADC オブザーバビリティエクスポーターをサポートするCitrix ADC 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クラスターの外部にある場合は、Citrix ADCオブザーバビリティエクスポーターのIPアドレスとノードポートアドレスを指定する必要があります。
YAML ファイルを使用して Zipkin、Elasticsearch、および Kibana をデプロイする
YAML を使用して Zipkin、Elasticsearch、および Kibana をデプロイするには、次の手順を実行します。
-
次の YAML ファイルをダウンロードします。
-
デフォルト以外のカスタムネームスペースを使用する場合は、ネームスペース定義を編集します。
-
以下のコマンドを実行して 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 オブザーバビリティエクスポーターの展開を確認するには、次の手順に従います。
-
以下のコマンドを使用してアプリケーションにリクエストを送信し、デプロイを検証します。
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"
-
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 によって収集されたトレース情報を表示できます。Citrix ADC オブザーバビリティエクスポーターに関連するトラブルシューティングについては、「 Citrix ADC CPX のトラブルシューティング」を参照してください。