Elasticsearchをエンドポイントとして使用するCitrix ADC可観測性エクスポーター

Citrix ADC オブザーバビリティエクスポーターは、Citrix ADC からメトリックとトランザクションを収集するコンテナーです。サポートされている形式 (JSON など) にデータを変換し、エンドポイントとして Elasticsearch にデータをエクスポートします。Elasticsearch は Lucene ライブラリをベースにした検索エンジンです。HTTP Web インターフェイスとスキーマフリーの JSON ドキュメントを備えた、分散型のマルチテナント対応のフルテキスト検索エンジンを提供します。

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

YAML ファイルを使用して Citrix ADC オブザーバビリティエクスポーターを展開できます。Citrix ADC 展開に基づいて、Citrix ADC オブザーバビリティエクスポーターをKubernetesクラスターの外部または内部に展開できます。Citrix ADC オブザーバビリティエクスポーターは、Kubernetesクラスター内のポッドとして、またはクラスター外のCitrix ADC MPXまたはVPXアプライアンスにポッドとして展開できます。

次の図は、CitrixイングレスコントローラーとCitrix ADCオブザーバビリティエクスポーターをサイドカーとして使用するイングレスゲートウェイとしてのCitrix ADCを示しています。Citrix ADC オブザーバビリティエクスポーターは、Citrix ADC アプリケーションメトリックとトランザクションデータをElasticsearchに送信し、同じデータをKibanaにエクスポートします。Kibana は、データをグラフィカルに表現します。

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

前提条件

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

次の手順では、YAML ファイルを使用して、Kubernetes DefauIt 名前空間にCitrix ADC オブザーバビリティエクスポーターをデプロイします。 デフォルト以外のプライベート名前空間にデプロイする場合は、YAML ファイルを編集して名前空間を指定します。

アプリケーションのデプロイ手順の例を次に示します。

注:

デプロイ済みの Web アプリケーションがある場合は、ステップ 1 と 2 をスキップします。

  1. シークレット ingress.crt を作成し、独自の証明書とキーを使用して ingress.key をキー設定します。

    この例では、デフォルトの名前空間に ing というシークレットが作成されます。

      kubectl create secret tls ing --cert=ingress.crt --key=ingress.key
    
  2. webserver-es.yaml から YAML ファイルにアクセスして、アプリケーションをデプロイします。

      kubectl create -f webserver-es.yaml
    
  3. Ingress のスマートアノテーションを使用して、アプリケーションの YAML ファイルの Ingress アノテーションで指定し、インポートする必要のある特定のパラメーターを定義します。

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

    注:

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

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

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

Citrix ADC CPXは、Citrix ADC監視性エクスポーターのサポートがCitrix ingress controller とともに有効になっているサイドカーとして展開できます。Citrix ADC CPX YAMLファイルcpx-ingress-es.yamlを変更して、Citrix ADC オブザーバビリティエクスポーターのサポートに必要な構成情報を含めることができます。

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

  1. cpx-ingress-es.yaml ファイルと cic-configmap.yaml ファイルをダウンロードします。
  2. 必要なキーと値のペアを含む ConfigMap を作成し、ConfigMap をデプロイします。特定のエンドポイントで使用できるcic-configmap.yamlファイルは、 ディレクトリ内で使用できます
  3. 必要に応じて、Citrix ADC CPX 関連のパラメーターを変更します。
  4. cic-configmap.yaml ファイルを編集し、 NS_ANALYTICS_CONFIG エンドポイント構成でCitrix ADC Observability Exporterに次の変数を指定します。

      server: 'coe-es.default.svc.cluster.local' # COE service FQDN
    

    注:

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

  5. 次のコマンドを使用して、Citrix ADC オブザーバビリティエクスポーターをサポートするCitrix ADC CPXを展開します。

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

YAML ファイルを使用して Elasticsearch と Kibana をデプロイする

  1. elasticsearch.yaml から Elasticsearch YAML ファイルをダウンロードし、 kibana.yaml からキバナ YAMLファイルをダウンロードします。

  2. default以外のネームスペースを使用する場合は、ネームスペース定義を編集します。

  3. 以下のコマンドを実行して Elasticsearch と Kibana をデプロイします。

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

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

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

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

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

  kubectl create -f coe-es.yaml

注:

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

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

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

  1. 以下のコマンドを使用して、デプロイメントを検証します。

       kubectl get deployment,pods,svc -o wide
    

    サンプル出力

  2. URL: https://kubernetes-node-IP:cpx-ingress-es nodeport/を使用して、ブラウザでアプリケーションにアクセスします。

    たとえば、ステップ 1 から、10.102.40.41が Kubernetes ノード IP の 1 つであるhttp://10.102.40.41:30176/にアクセス 。

    リクエスト

  3. URL: https://<kubernetes-node-IP>:<kibana nodeport>/を使用して、ブラウザで Kibanaにアクセスします。

    たとえば、ステップ 1 から、10.102.40.41が Kubernetes ノード IP の 1つであるhttp://10.102.40.41:32529/にアクセス。

    1. [ 自分で探索] をクリックします。

      探索

    2. [ Elasticsearch インデックスに接続] をクリックします。

      Elastic インデックスに接続

    3. [ 保存済みオブジェクト] をクリックします。

    4. KibanaAppTrans.ndjson から Kibanaダッシュボードをダウンロードしてインポートします。

      保存済みオブジェクト

    5. [ アプリトランザクション] ダッシュボードをクリックします

      ダッシュボード

      ダッシュボードが表示されます。

      ダッシュボード

      Elasticsearch は設定に基づいてインデックスを作成します

Citrix ADCを複数のCitrix ADCオブザーバビリティエクスポーターインスタンスと手動で統合する

Citrix ADC オブザーバビリティエクスポーターを手動で構成することもできます。前のセクションで説明したように、YAMLファイルを使用してCitrix ADC オブザーバビリティエクスポーターを自動的に展開することをお勧めします。MPXおよびVPXフォームファクターでCitrix ADC 手動構成を実行することもできます。

            enable feature appflow
            enable ns mode ULFD
            add dns nameserver <KUBE-CoreDNS>
            add server COEsvr <FQDN/IP>
            add servicegroup COEsvcgrp LOGSTREAM  -autoScale DNS
            bind servicegroup COEsvcgrp COEsvr <PORT>
            add lb vserver COE LOGSTREAM 0.0.0.0 0
            bind lb vserver COE COEsvcgrp
            add analytics profile web_profile -collectors COE -type webinsight -httpURL ENABLED -httpHost ENABLED -httpMethod ENABLED -httpUserAgent ENABLED -httpContentType ENABLED
            add analytics profile tcp_profile -collectors COE -type tcpinsight
            bind lb vserver <WEB-VSERVER> -analyticsProfile web_profile
            bind lb vserver <WEB-VSERVER> -analyticsProfile tcp_profile
            
            # To enable metrics push to prometheus
            add service metrichost_SVC <IP> HTTP <PORT>
            set analyticsprofile ns_analytics_time_series_profile -collectors metrichost_SVC -metrics ENABLED -outputMode prometheus

FQDNを使用してCitrix ADCオブザーバビリティエクスポーターを追加する

            enable feature appflow
            enable ns mode ULFD
            add dns nameserver <KUBE-CoreDNS>
            add server COEsvr <FQDN>
            add servicegroup COEsvcgrp LOGSTREAM  -autoScale DNS
            bind servicegroup COEsvcgrp COEsvr <PORT> 
            add lb vserver COE LOGSTREAM 0.0.0.0 0
            bind lb vserver COE COEsvcgrp
            add analytics profile web_profile -collectors COE -type webinsight -httpURL ENABLED -httpHost ENABLED -httpMethod ENABLED -httpUserAgent ENABLED -httpContentType ENABLED
            add analytics profile tcp_profile -collectors COE -type tcpinsight
            bind lb vserver <WEB-VSERVER> -analyticsProfile web_profile
            bind lb vserver <WEB-VSERVER> -analyticsProfile tcp_profile

            # To enable metrics push to prometheus
            add service metrichost_SVC <IP> HTTP <PORT>
            set analyticsprofile ns_analytics_time_series_profile -collectors metrichost_SVC -metrics ENABLED -outputMode prometheus

Citrix ADCがアプリケーションデータログをCitrix ADCオブザーバビリティエクスポーターに送信するかどうかを確認するには:

     nsconmsg -g lstream_tot_trans_written -d current

カウンターの値は、Citrix ADC Observability Exporterに送信されたアプリケーショントランザクション(HTTPトランザクションなど)の数を示します。

カウンタ値

Citrix ADC Observability Exporterに送信されるアプリケーショントラフィックレート(HTTP req/secなど)がlstream_tot_trans_writtenと等しくない場合は 、次のコマンドを使用して同じことを確認できます。

     nsconmsg -g nslstream_err_ulf_data_not_sendable -d current

カウンターの値は、ネットワークの輻輳、ネットワーク帯域幅の利用不能などのために、Citrix ADC がCitrix ADC Observability Exporterにデータを送信できないことを示します。データは使用可能なバッファに格納されます。

さまざまなトランザクションデータ、個々のフィールド、およびそれらのデータ型に関する情報は、Citrix ADC の次の場所にあります。

     shell/netscaler/appflow/ns_ipfix.yaml

データの場所

アプリケーショントランザクションレコードがCitrix ADCからCitrix ADC ObservabilityExporterにエクスポートされたかどうかを確認するには、次のコマンドを使用します。

      nsconmsg -g appflow_tmpl -d current

パフォーマンスデータ

時系列データのメトリックデータエクスポートログをCitrix ADCにエクスポートする場所:

      /var/nslog/metrics_prom.log

Elasticsearch 関連のカウンタを確認するには、以下のコマンドを実行します。

      kubectl exec -it <cpx-pod-name> [-c <cpx-container-name>] [-n <namespace-name>] -- bash

      tail -f /var/ulflog/counters/lstrmd_counters_codes.log | grep -iE "(http_reqs_done|elk)"

次の場所でログを検索し、Citrix ADC オブザーバビリティエクスポーターの構成が正しく適用されていることを確認します。

      vi /var/logproxy/lstreamd/conf/lstreamd.conf

Citrix ADC Observability Exporterが失敗した場合は、次の場所で入手可能なログとファイルを収集し、Citrix サポートに連絡できます。

      /cores/ (Loation of the coredump files, if any.)
      /var/ulflog/ (Location of the `libulfd` logs and counter details.)
      /var/log  (Location of the console logs, lstreamd logs and so on.)

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