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

Citrix ADC オブザーバビリティエクスポーターは、Citrix ADC からメトリックとトランザクションを収集するコンテナーです。また、データを Kafka でサポートされている形式 (AVRO など) に変換し、データをエンドポイントにエクスポートします。Kafka は、高性能データパイプラインとストリーミング分析のためのオープンソースの分散型イベントストリーミングプラットフォームです。

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

YAML ファイルを使用して Citrix ADC オブザーバビリティエクスポーターを展開できます。Citrix ADC 展開に基づいて、Citrix ADC オブザーバビリティエクスポーターを使用して、Citrix ADC からメトリックとトランザクションデータをエクスポートできます。Citrix ADC CPXは、Kubernetesクラスタ内のポッドとして、またはクラスタ外のCitrix ADC MPXまたはVPXフォームファクタにポッドとして展開できます。

次の図は、Citrix ADC オブザーバビリティエクスポーターをサイドカーとして使用したイングレスゲートウェイとしてのCitrix ADCを示しています。Citrix ADC アプリケーショントランザクションデータを Kafka に送信します。

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

前提条件

  • kube-dnsまたはCoreDNSアドオンが有効になっている Kubernetes クラスタがあることを確認します。
  • Kafka サーバーがインストールされ、設定されていることを確認します。
  • Kafka ブローカー IP または FQDN アドレスが必要です。
  • Kafka トピック HTTPを定義しておく必要があります。
  • Kafka Consumer にデータを検証してもらっていることを確認します。

注:

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

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

注:

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

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

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

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

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

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

    注:

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

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

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

Citrix ADC 観測性エクスポーターのサポートにより、Citrix ADC CPX をサイドカーとして展開できます。Citrix ADC CPX YAML ファイルcpx-ingress-kafka.yamlを編集して 、Citrix ADC オブザーバビリティエクスポーターのサポートに必要な構成情報を含めることができます。

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

  1. cpx-ingress-kafka.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-kafka.default.svc.cluster.local' # COE service FQDN
    
  5. 次のコマンドを使用して、Citrix ADC オブザーバビリティエクスポーターをサポートするCitrix ADC CPXを展開します。

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

注:

default以外の別のネームスペースを使用した場合は、 coe-kafka.default.svc.cluster.local からcoe-kafka.<desired-namespace>.svc.cluster.localに変更する必要があります。

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

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

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

kubectl create -f coe-kafka.yaml

YAML ファイルを編集して必要な変更を行うには、次の手順を実行します。

  1. 次の YAML 定義を使用して ConfigMap を編集します。

    注:

    Kafka ブローカー IP と Kafka の必要なトピックを指定していることを確認します。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: coe-config-kafka
      data:
        lstreamd_default.conf: |
          {
              "Endpoints": {
                "KAFKA": {
                  "ServerUrl": "X.X.X.X:9092", #Specify the Kafka broker IP
                  "KafkaTopic": "HTTP", #Specify the desired kafka topic
                  "RecordType": {
                      "HTTP": "all",
                      "TCP": "all",
                      "SWG": "all",
                      "VPN": "all",
                      "NGS": "all",
                      "ICA": "all",
                      "APPFW": "none",
                      "BOT": "none",
                      "VIDEOOPT": "none",
                      "BURST_CQA": "none",
                      "SLA": "none",
                      "MONGO": "none"
                  },
                  "ProcessAlways": "yes",
                  "FileSizeMax": "40",
                  "ProcessYieldTimeOut": "500",
                  "FileStorageLimit": "1000",
                  "SkipAvro": "no",
                  "AvroCompress": "yes"
                }
            }
          }
    
  2. Kafka ノードのホスト名と IP または FQDN アドレスを指定します。3 ノードの Kafka クラスターには、次の YAML 定義を使用します。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: coe-kafka
        labels:
          app: coe-kafka
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: coe-kafka
        template:
          metadata:
            name: coe-kafka
            labels:
              app: coe-kafka
          spec:
            hostAliases:
              - ip: "X.X.X.X" # Here we specify kafka node1 Ipaddress
                hostnames:
                  - "kafka-node1"
              - ip: "Y.Y.Y.Y" # Here we specify kafka node2 Ipaddress
                hostnames:
                  - "kafka-node2"
              - ip: "Z.Z.Z.Z" # Here we specify kafka node3 Ipaddress
                hostnames:
                  - "kafka-node3"
            containers:
              - name: coe-kafka
                image: "quay.io/citrix/citrix-observability-exporter:1.3.001"
                imagePullPolicy: Always
                ports:
                  - containerPort: 5557
                    name: lstream
                volumeMounts:
                  - name: lstreamd-config-kafka
                    mountPath: /var/logproxy/lstreamd/conf/lstreamd_default.conf
                    subPath: lstreamd_default.conf
                  - name: core-data
                    mountPath: /cores/
            volumes:
              - name: lstreamd-config-kafka
                configMap:
                  name: coe-config-kafka
              - name: core-data
                emptyDir: {}
    
  3. 必要に応じて、次のYAML定義を使用して、Citrix ADC オブザーバビリティエクスポーターポートをCitrix ADCに公開するためのサービス構成を編集します。

    Citrix-オブザーバビリティ-エクスポーターヘッドレスサービス:

        apiVersion: v1
        kind: Service
        metadata:
          name: coe-kafka
          labels:
            app: coe-kafka
        spec:
          clusterIP: None
          ports:
            - port: 5557
              protocol: TCP
          selector:
              app: coe-kafka
    <!--NeedCopy-->
    

    Citrix-オブザーバビリティ-エクスポーター NodePort サービス

        apiVersion: v1
        kind: Service
        metadata:
          name: coe-kafka-nodeport
          labels:
            app: coe-kafka
        spec:
          type: NodePort
          ports:
            - port: 5557
              protocol: TCP
          selector:
              app: coe-kafka
    <!--NeedCopy-->
    

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

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

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

      kubectl get deployment,pods,svc -o wide
    

    サンプル出力

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

    For example, from step 1, access <http://10.102.61.56:31202/> in which, `10.102.61.56` is one of the Kubernetes node IPs.
    

    HTTP メソッド

  3. Kafka Consumer を使用してトランザクションデータを表示します。PythonKafkaConsumer からKafkaコンシューマーにアクセスします

    以下の画像は、Kafka コンシューマーからのサンプルデータを示しています。

    Kafka コンシューマーからのデータ

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

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

Citrix ADC オブザーバビリティエクスポーター(coe-kafka.yaml)およびWebアプリケーション(webserver-kafka.yaml)の展開については、前のセクションを参照してください。

enable feature appflow
enable ns mode ULFD
add service COE_svc1 <COE IP1> LOGSTREAM <COE PORT1>
add service COE_svc2 <COE IP2> LOGSTREAM <COE PORT2>
add service COE_svc3 <COE IP3> LOGSTREAM <COE PORT3>
add lb vserver COE LOGSTREAM 0.0.0.0 0
bind lb vserver COE COE_svc1
bind lb vserver COE COE_svc2
bind lb vserver COE COE_svc3
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/cs vserver <WEB-PROXY> -analyticsProfile web_profile
bind lb/cs vserver <WEB-PROXY> -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

<!--NeedCopy-->

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

<!--NeedCopy-->

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