Citrix ADC Observability Exporter mit Kafka als Endpunkt

Citrix ADC Observability Exporter ist ein Container, der Metriken und Transaktionen von Citrix ADC sammelt. Es wandelt die Daten auch in die Formate (wie AVRO) um, die in Kafka unterstützt werden, und exportiert die Daten zum Endpunkt. Kafka ist eine Open-Source- und verteilte Event-Streaming-Plattform für leistungsstarke Datenpipelines und Streaming-Analysen.

Citrix ADC Observability Exporter bereitstellen

Sie können Citrix ADC Observability Exporter mithilfe der YAML-Datei bereitstellen. Basierend auf der Citrix ADC-Bereitstellung können Sie den Citrix ADC Observability Exporter verwenden, um Metriken und Transaktionsdaten aus Citrix ADC zu exportieren. Sie können Citrix ADC CPX entweder als Pod innerhalb des Kubernetes-Clusters oder auf dem Citrix ADC MPX- oder VPX-Formfaktor außerhalb des Clusters bereitstellen.

Das folgende Diagramm veranschaulicht einen Citrix ADC als Ingress Gateway mit Citrix ADC Observability Exporter als Beiwagen. Es sendet Transaktionsdaten der Citrix ADC-Anwendung an Kafka.

Bereitstellung des Citrix ADC Observability Exporter

Voraussetzungen

  • Stellen Sie sicher, dass Sie einen Kubernetes-Cluster mit aktiviertem Addon kube-dns oder CoreDNS haben.
  • Stellen Sie sicher, dass der Kafka-Server installiert und konfiguriert ist.
  • Sie müssen eine Kafka-Broker-IP- oder FQDN-Adresse haben.
  • Sie müssen ein Kafka-Thema definiert haben HTTP.
  • Stellen Sie sicher, dass Sie Kafka Consumer zur Überprüfung der Daten haben

Hinweis:

In diesem Beispielszenario wird die YAML-Datei verwendet, um Citrix ADC Observability Exporter im Kubernetes-DeFAUIT-Namespace bereitzustellen. Wenn Sie in einem anderen privaten Kubernetes-Namespace als dem Standardbereitstellen möchten, bearbeiten Sie die YAML-Datei, um den Namespace anzugeben.

Im Folgenden finden Sie ein Beispiel für ein Anwendungsbereitstellungsverfahren.

Hinweis:

Wenn Sie eine vorab bereitgestellte Webanwendung haben, überspringen Sie die Schritte 1 und 2.

  1. Erstellen Sie eine geheime ingress.crt und den Schlüssel ingress.key mit Ihrem eigenen Zertifikat und Schlüssel.

    In diesem Beispiel wird ein Secret, das im Standard-Namensraum als ing bezeichnet wird, erstellt.

      kubectl create secret tls ing --cert=ingress.crt --key=ingress.key
    
  2. Greifen Sie über webserver-kafka.yaml auf die YAML-Datei zu, um eine Beispielanwendung bereitzustellen.

      kubectl create -f webserver-kafka.yaml
    
  3. Definieren Sie die spezifischen Parameter, die Sie importieren müssen, indem Sie sie in den Eingangsanmerkungen der YAML-Datei der Anwendung mithilfe der intelligenten Anmerkungen in Ingress angeben.

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

    Hinweis:

    Die Parameter sind in der Datei webserver-kafka.yaml vordefiniert.

    Weitere Informationen zu Anmerkungen finden Sie in der Dokumentation zu Ingress-Anmerkungen.

Bereitstellen von Citrix ADC CPX mit der Unterstützung des Citrix ADC Observability Exporters

Mit der Unterstützung des Citrix ADC Observability Exporter können Sie Citrix ADC CPX als Seitenwagen bereitstellen. Sie können die Citrix ADC CPX YAML-Datei bearbeiten cpx-ingress-kafka.yaml, um die Konfigurationsinformationen aufzunehmen, die für die Unterstützung des Citrix ADC Observability Exporter erforderlich sind.

Führen Sie die folgenden Schritte aus, um eine Citrix ADC CPX-Instanz mit der Unterstützung des Citrix ADC Observability Exporter bereitzustellen:

  1. Laden Sie die cpx-ingress-kafka.yaml - und die cic-configmap.yaml-Dateien herunter.

  2. Erstellen Sie eine ConfigMap mit den erforderlichen Schlüssel-Wert-Paaren und stellen Sie die ConfigMap bereit. Sie können die Datei cic-configmap.yaml, die für den jeweiligen Endpunkt verfügbar ist, im Verzeichnisverwenden.

  3. Ändern Sie Citrix ADC CPX-bezogene Parameter nach Bedarf.

  4. Bearbeiten Sie die Datei cic-configmap.yaml und geben Sie in der Endpunktkonfiguration NS_ANALYTICS_CONFIG die folgenden Variablen für Citrix ADC Observability Exporter an.

      server: 'coe-kafka.default.svc.cluster.local' # COE service FQDN
    
  5. Stellen Sie Citrix ADC CPX mit der Unterstützung des Citrix ADC Observability Exporters mithilfe der folgenden Befehle bereit:

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

Hinweis:

Wenn Sie einen anderen Namespace als den Standardwertverwendet haben, müssen Sie von coe-kafka.default.svc.cluster.local in ändern coe-kafka.<desired-namespace>.svc.cluster.local.

Bereitstellen von Citrix ADC Observability Exporter mit YAML

Sie können Citrix ADC Observability Exporter mithilfe der YAML-Datei bereitstellen. Laden Sie die Datei coe-kafka.yaml herunter, die Sie für die Bereitstellung des Citrix ADC Observability Exporter verwenden können.

Führen Sie den folgenden Befehl auf dem Kafka-Endpunkt aus, um Citrix ADC Observability Exporter mithilfe der Kubernetes-YAML bereitzustellen:

kubectl create -f coe-kafka.yaml

Um die YAML-Datei für die erforderlichen Änderungen zu bearbeiten, führen Sie die folgenden Schritte aus:

  1. Bearbeiten Sie die ConfigMap mit der folgenden YAML-Definition:

    Hinweis:

    Stellen Sie sicher, dass Sie die Kafka-Broker-IP und das gewünschte Kafka-Thema angeben.

      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. Geben Sie den Hostnamen und die IP- oder FQDN-Adresse der Kafka-Knoten an. Verwenden Sie die folgende YAML-Definition für einen Kafka-Cluster mit drei Knoten:

      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. Bearbeiten Sie bei Bedarf die Dienstkonfiguration zum Bereitstellen des Citrix ADC Observability Exporter-Ports für Citrix ADC mithilfe der folgenden YAML-Definition:

    Citrix-Observability-Exporteur Headless-Service:

        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 Observability-Exporter NodePort-Dienst

        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-->
    

Überprüfen der Citrix ADC Observability Exporter-Bereitstellung

Gehen Sie wie folgt vor, um die Bereitstellung des Citrix ADC Observability Exporter zu überprüfen:

  1. Überprüfen Sie die Bereitstellung mit dem folgenden Befehl:

      kubectl get deployment,pods,svc -o wide
    

    Sample-Ausgabe

  2. Greifen Sie mit einem Browser über die URL auf die Anwendung zu: 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-Methoden

  3. Verwenden Sie Kafka Consumer, um die Transaktionsdaten anzuzeigen. Greifen Sie über PythonkafkaConsumer auf kafka Consumerzu.

    Das folgende Bild zeigt Beispieldaten von Kafka Consumer.

    Daten von kafka Consumer

Integrieren Sie Citrix ADC manuell in mehrere Citrix ADC Observability Exporter-Instanzen

Sie können Citrix ADC Observability Exporter manuell in Citrix ADC konfigurieren. Die manuelle Konfiguration eignet sich für Citrix ADC in MPX- und VPX-Formfaktoren. Citrix empfiehlt, Citrix ADC Observability Exporter auf automatisierte Weise mithilfe der YAML-Datei bereitzustellen, wie in den vorherigen Abschnitten beschrieben.

Informationen zum Bereitstellen von Citrix ADC Observability Exporter (coe-kafka.yaml) und der Webanwendung (webserver-kafka.yaml) finden Sie in den vorherigen Abschnitten.

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-->

Citrix ADC Observability Exporter mithilfe des FQDN hinzufügen

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-->

Informationen zur Problembehandlung im Zusammenhang mit Citrix ADC Observability Exporter finden Sie unter Citrix ADC CPX Troubleshooting.