Exportateur d’observabilité Citrix ADC avec Kafka comme point de terminaison

L’exportateur d’observabilité Citrix ADC est un conteneur qui collecte des mesures et des transactions auprès de Citrix ADC. Il transforme également les données dans les formats (tels que AVRO) pris en charge dans Kafka et exporte les données vers le point final. Kafka est une plateforme de streaming d’événements open source et distribuée pour les pipelines de données hautes performances et l’analyse de streaming.

Déployer l’exportateur d’observabilité Citrix ADC

Vous pouvez déployer l’exportateur d’observabilité Citrix ADC à l’aide du fichier YAML. Sur la base du déploiement Citrix ADC, vous pouvez utiliser l’exportateur d’observabilité Citrix ADC pour exporter des mesures et des données de transaction à partir de Citrix ADC. Vous pouvez déployer Citrix ADC CPX en tant qu’espace à l’intérieur du cluster Kubernetes ou sur un facteur de forme Citrix ADC MPX ou VPX en dehors du cluster.

Le schéma suivant illustre un Citrix ADC en tant que passerelle d’entrée avec l’exportateur d’observabilité Citrix ADC en tant que sidecar. Il envoie les données de transaction de l’application Citrix ADC à Kafka.

Déploiement de l'exportateur d'observabilité Citrix ADC

Conditions préalables

  • Vérifiez que vous disposez d’un cluster Kubernetes avec kube-dns ou module CoreDNS complémentaire activé.
  • Assurez-vous que le serveur Kafka est installé et configuré.
  • Vous devez avoir une adresse IP ou un FQDN du courtier Kafka.
  • Vous devez avoir défini une rubrique Kafka HTTP.
  • Assurez-vous que vous disposez de Kafka Consumer pour vérifier les données.

Remarque :

Dans cet exemple de scénario, le fichier YAML est utilisé pour déployer l’exportateur d’observabilité Citrix ADC dans l’espace de noms par défaut Kubernetes. Si vous souhaitez déployer dans un espace de noms Kubernetes privé autre que celui par défaut, modifiez le fichier YAML pour spécifier l’espace de noms.

Voici un exemple de procédure de déploiement d’applications.

Remarque :

Si vous disposez d’une application Web prédéployée, ignorez les étapes 1 et 2.

  1. Créez un fichier ingress.crt et une clé ingress.key secrets à l’aide de votre propre certificat et clé.

    Dans cet exemple, un secret, appelé ing dans l’espace de noms par défaut, est créé.

      kubectl create secret tls ing --cert=ingress.crt --key=ingress.key
    
  2. Accédez au fichier YAML à partir de webserver-kafka.yaml pour déployer un exemple d’application.

      kubectl create -f webserver-kafka.yaml
    
  3. Définissez les paramètres spécifiques que vous devez importer en les spécifiant dans les annotations d’entrée du fichier YAML de l’application à l’aide des annotations intelligentes en entrée.

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

    Remarque :

    Les paramètres sont prédéfinis dans le fichier webserver-kafka.yaml.

    Pour plus d’informations sur les annotations, consultez la documentation relative aux annotations d’entrée.

Déployer Citrix ADC CPX avec la prise en charge de l’exportateur d’observabilité Citrix ADC

Vous pouvez déployer Citrix ADC CPX en tant que side-car avec la prise en charge de Citrix ADC Observability Exporter. Vous pouvez modifier le fichier YAML Citrix ADC CPX cpx-ingress-kafka.yaml, pour inclure les informations de configuration requises pour la prise en charge de l’exportateur d’observabilité Citrix ADC.

Effectuez les étapes suivantes pour déployer une instance Citrix ADC CPX avec la prise en charge de l’exportateur d’observabilité Citrix ADC :

  1. Téléchargez les fichiers cpx-ingress-kafka.yaml et cic-configmap.yaml .

  2. Créez un ConfigMap avec les paires clé-valeur requises et déployez le ConfigMap. Vous pouvez utiliser le fichier cic-configmap.yaml disponible, pour le point de terminaison spécifique, dans le répertoire.

  3. Modifiez les paramètres relatifs à Citrix ADC CPX, selon vos besoins.

  4. Modifiez le fichier cic-configmap.yaml et spécifiez les variables suivantes pour Citrix ADC Observability Exporter dans la configuration du point de terminaison NS_ANALYTICS_CONFIG.

      server: 'coe-kafka.default.svc.cluster.local' # COE service FQDN
    
  5. Déployez Citrix ADC CPX avec la prise en charge de l’exportateur d’observabilité Citrix ADC à l’aide des commandes suivantes :

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

Remarque :

Si vous avez utilisé un espace de noms différent, autre que celui par défaut, vous devez passer de coe-kafka.default.svc.cluster.local à coe-kafka.<desired-namespace>.svc.cluster.local.

Déployer l’exportateur d’observabilité Citrix ADC à l’aide de YAML

Vous pouvez déployer l’exportateur d’observabilité Citrix ADC à l’aide du fichier YAML. Téléchargez le fichier coe-kafka.yaml que vous pouvez utiliser pour le déploiement de l’exportateur d’observabilité Citrix ADC.

Pour déployer l’exportateur d’observabilité Citrix ADC à l’aide du YAML Kubernetes, exécutez la commande suivante dans le point de terminaison Kafka :

kubectl create -f coe-kafka.yaml

Pour modifier le fichier YAML pour les modifications requises, effectuez les opérations suivantes :

  1. Modifiez le ConfigMap en utilisant la définition YAML suivante :

    Remarque :

    Assurez-vous de spécifier l’adresse IP du courtier Kafka et la rubrique souhaitée par 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. Spécifiez le nom d’hôte et l’adresse IP ou FQDN des nœuds Kafka. Utilisez la définition YAML suivante pour un cluster Kafka à trois nœuds :

      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. Si nécessaire, modifiez la configuration du service pour exposer le port de l’exportateur d’observabilité Citrix ADC à Citrix ADC à l’aide de la définition YAML suivante :

    Service headless de l’exportateur d’observabilité 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-->
    

    Service NodePort de l’exportateur d’observabilité Citrix

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

Vérifiez le déploiement de l’exportateur d’observabilité Citrix ADC

Pour vérifier le déploiement de l’exportateur d’observabilité Citrix ADC, effectuez les opérations suivantes :

  1. Vérifiez le déploiement à l’aide de la commande suivante :

      kubectl get deployment,pods,svc -o wide
    

    Sortie d'échantillon

  2. Accédez à l’application avec un navigateur à l’aide de l’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.
    

    méthodes HTTP

  3. Utilisez Kafka Consumer pour afficher les données de transaction. Accédez à Kafka Consumer depuis PythonKafkaConsumer.

    L’image suivante montre des exemples de données de Kafka Consumer.

    Données de Kafka Consumer

Intégrez manuellement Citrix ADC à plusieurs instances de Citrix ADC Observability Exporter

Vous pouvez configurer l’exportateur d’observabilité Citrix ADC manuellement dans Citrix ADC. La configuration manuelle convient à Citrix ADC dans les formats MPX et VPX. Citrix recommande de déployer Citrix ADC Observability Exporter de manière automatisée à l’aide du fichier YAML, comme décrit dans les sections précédentes.

Pour plus d’informations sur le déploiement de l’exportateur d’observabilité Citrix ADC (coe-kafka.yaml) et de l’application Web (webserver-kafka.yaml), consultez les sections précédentes.

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

Ajouter l’exportateur d’observabilité Citrix ADC à l’aide du FQDN

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

Pour plus d’informations sur le dépannage lié à Citrix ADC Observability Exporter, consultez la section Dépannage Citrix ADC CPX.