Citrix ADC Observability Exporter con Kafka como dispositivo de punto final

Citrix ADC Observability Exporter es un contenedor que recopila métricas y transacciones de Citrix ADC. También transforma los datos en los formatos (como AVRO) compatibles con Kafka y exporta los datos al punto final. Kafka es una plataforma de transmisión de eventos distribuidos y de código abierto para procesos de datos de alto rendimiento y análisis de transmisión.

Implementar Citrix ADC Observability Exporter

Puede implementar Citrix ADC Observability Exporter mediante el archivo YAML. Según la implementación de Citrix ADC, puede usar Citrix ADC Observability Exporter para exportar métricas y datos de transacciones desde Citrix ADC. Puede implementar Citrix ADC CPX como un pod dentro del clúster de Kubernetes o en un factor de forma Citrix ADC MPX o VPX fuera del clúster.

El siguiente diagrama ilustra un Citrix ADC como puerta de enlace de entrada con Citrix ADC Observability Exporter como sidecar. Envía datos de transacciones de aplicaciones Citrix ADC a Kafka.

Implementación de Citrix ADC Observability Exporter

Requisitos previos

  • Asegúrese de tener un clúster de Kubernetes con kube-dns un CoreDNS complemento habilitado.
  • Asegúrese de que el servidor Kafka esté instalado y configurado.
  • Debe tener una dirección IP o FQDN de agente de Kafka.
  • Debe haber definido un tema HTTPde Kafka.
  • Asegúrese de que Kafka Consumer verifique los datos.

Nota:

En este caso de ejemplo, el archivo YAML se usa para implementar Citrix ADC Observability Exporter en el espacio de nombres predeterminado de Kubernetes. Si quieres implementar en un espacio de nombres privado de Kubernetes que no sea el predeterminado, modifica el archivo YAML para especificar el espacio de nombres.

A continuación se muestra un procedimiento de implementación de aplicaciones de ejemplo.

Nota:

Si tiene una aplicación web implementada previamente, omita los pasos 1 y 2.

  1. Cree un ingress.crt secreto y clave ingress.key con su propio certificado y clave.

    En este ejemplo, se crea un secreto, llamado ing en el espacio de nombres predeterminado.

      kubectl create secret tls ing --cert=ingress.crt --key=ingress.key
    
  2. Acceda al archivo YAML desde webserver-kafka.yaml para implementar una aplicación de ejemplo.

      kubectl create -f webserver-kafka.yaml
    
  3. Defina los parámetros específicos que debe importar especificándolos en las anotaciones de entrada del archivo YAML de la aplicación mediante las anotaciones inteligentes en la entrada.

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

    Nota:

    Los parámetros están predefinidos en el archivo webserver-kafka.yaml.

    Para obtener más información sobre las anotaciones, consulte la documentación de anotaciones de entrada.

Implementar Citrix ADC CPX con la compatibilidad de Citrix ADC Observability Exporter

Puede implementar Citrix ADC CPX como una tarjeta secundaria con la compatibilidad de Citrix ADC Observability Exporter. Puede modificar el archivo YAML de Citrix ADC CPX, cpx-ingress-kafka.yaml, para incluir la información de configuración necesaria para la compatibilidad con Citrix ADC Observability Exporter.

Realice los siguientes pasos para implementar una instancia de Citrix ADC CPX con el soporte de Citrix ADC Observability Exporter:

  1. Descargue los archivos cpx-ingress-kafka.yaml y cic-configmap.yaml.

  2. Cree un ConfigMap con los pares clave-valor requeridos e implemente el ConfigMap. Puede usar el archivo cic-configmap.yaml que está disponible, para el punto final específico, en el directorio.

  3. Modifique los parámetros relacionados con Citrix ADC CPX, según sea necesario.

  4. Modifique el archivo cic-configmap.yaml y especifique las siguientes variables para Citrix ADC Observability Exporter en la configuración del dispositivo de punto final NS_ANALYTICS_CONFIG.

      server: 'coe-kafka.default.svc.cluster.local' # COE service FQDN
    
  5. Implemente Citrix ADC CPX con la compatibilidad de Citrix ADC Observability Exporter mediante los siguientes comandos:

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

Nota:

Si ha utilizado un espacio de nombres diferente al predeterminado, debe cambiar de coe-kafka.default.svc.cluster.local a coe-kafka.<desired-namespace>.svc.cluster.local.

Implementar Citrix ADC Observability Exporter mediante YAML

Puede implementar Citrix ADC Observability Exporter mediante el archivo YAML. Descargue el archivo coe-kafka.yaml que puede usar para la implementación de Citrix ADC Observability Exporter.

Para implementar Citrix ADC Observability Exporter mediante el YAML de Kubernetes, ejecute el siguiente comando en el punto final de Kafka:

kubectl create -f coe-kafka.yaml

Para modificar el archivo YAML para los cambios requeridos, lleve a cabo los siguientes pasos:

  1. Modifique el ConfigMap con la siguiente definición de YAML:

    Nota:

    Asegúrese de especificar la IP del intermediario de Kafka y el tema deseado de 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. Especifique el nombre de host y la dirección IP o FQDN de los nodos de Kafka. Use la siguiente definición de YAML para un clúster de Kafka de tres nodos:

      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 es necesario, modifique la configuración del servicio para exponer el puerto de Citrix ADC Observability Exporter a Citrix ADC mediante la siguiente definición de YAML:

    Servicio headless de Citrix-observability-exporter:

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

    Servicio NodePort de Citrix-Observability-Exporter

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

Comprobar la implementación de Citrix ADC Observability Exporter

Para verificar la implementación de Citrix ADC Observability Exporter, lleve a cabo lo siguiente:

  1. Verifique la implementación mediante el siguiente comando:

      kubectl get deployment,pods,svc -o wide
    

    Salida de muestra

  2. Acceda a la aplicación con un explorador mediante la 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étodos HTTP

  3. Use Kafka Consumer para ver los datos de la transacción. Acceda a kafka Consumer desde PythonKafkaConsumer.

    La siguiente imagen muestra datos de ejemplo de Kafka Consumer.

    Datos de kafka Consumer

Integrar Citrix ADC con varias instancias de Citrix ADC Observability Exporter manualmente

Puede configurar Citrix ADC Observability Exporter manualmente en Citrix ADC. La configuración manual es adecuada para Citrix ADC en factores de forma MPX y VPX. Citrix recomienda implementar Citrix ADC Observability Exporter de forma automatizada mediante el archivo YAML como se describe en las secciones anteriores.

Para obtener información sobre la implementación de Citrix ADC Observability Exporter (coe-kafka.yaml) y la aplicación web (webserver-kafka.yaml), consulte las secciones anteriores.

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

Agregar Citrix ADC Observability Exporter mediante 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-->

Para obtener información sobre la solución de problemas relacionados con Citrix ADC Observability Exporter, consulte Solución de problemas de Citrix ADC CPX.

Citrix ADC Observability Exporter con Kafka como dispositivo de punto final