Citrix ADC Observability Exporter con Elasticsearch como dispositivo de punto final

Citrix ADC Observability Exporter es un contenedor que recopila métricas y transacciones de Citrix ADC. Transforma los datos en el formato admitido (como JSON) y exporta los datos a Elasticsearch como punto final. Elasticsearch es un motor de búsqueda basado en la biblioteca Lucene. Proporciona un motor de búsqueda distribuido, multiarrendatario y de texto completo con una interfaz web HTTP y documentos JSON sin esquemas.

Implementar Citrix ADC Observability Exporter

Puede implementar Citrix ADC Observability Exporter mediante el archivo YAML. Según su implementación de Citrix ADC, puede implementar Citrix ADC Observability Exporter fuera o dentro de los clústeres de Kubernetes. Puede implementar Citrix ADC Observability Exporter como un pod dentro del clúster de Kubernetes o en el dispositivo Citrix ADC MPX o VPX fuera del clúster.

El siguiente diagrama ilustra un Citrix ADC como puerta de enlace de entrada con Citrix Ingress Controller y Citrix ADC Observability Exporter como sidecars. Citrix ADC Observability Exporter envía métricas de aplicaciones Citrix ADC y datos de transacciones a Elasticsearch y los mismos datos se exportan a Kibana. Kibana proporciona una representación gráfica de los datos.

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.

En el siguiente procedimiento, el archivo YAML se usa para implementar Citrix ADC Observability Exporter en el espacio de nombres predeterminado de Kubernetes. Si quiere implementar en un espacio de nombres privado que no sea el predeterminado, modifique el archivo YAML para especificar el espacio de nombres.

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

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-es.yaml para implementar la aplicación.

      kubectl create -f webserver-es.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, con 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-es.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 un coche lateral con la compatibilidad con Citrix ADC Observability Exporter habilitada junto con el Citrix Ingress Controller. Puede modificar el archivo YAML de Citrix ADC CPX cpx-ingress-es.yaml para incluir la información de configuración que se requiere 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 el archivo cpx-ingress-es.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-es.default.svc.cluster.local' # COE service FQDN
    

    Nota:

    Si ha utilizado un espacio de nombres distinto al predeterminado, cámbielo coe-es.default.svc.cluster.local to a coe-es.<desired-namespace>.svc.cluster.local. Si ADC está fuera del clúster de Kubernetes, debe especificar la dirección IP y la dirección nodport de Citrix ADC Observability Exporter.

  5. Implemente Citrix ADC CPX con la compatibilidad de Citrix ADC Observability Exporter mediante los siguientes comandos:

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

Implementación de Elasticsearch y Kibana mediante archivos YAML

  1. Descargue el archivo YAML de Elasticsearch de elasticsearch.yaml y el archivo YAML de Kibana de kibana.yaml.

  2. Modifique la definición del espacio de nombres, si quiere utilizar un espacio de nombres diferente al predeterminado.

  3. Ejecute los siguientes comandos para implementar Elasticsearch y Kibana:

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

Nota: Elasticsearch y Kibana se implementan en el espacio de nombres predeterminado del mismo clúster de Kubernetes.

Implementar Citrix ADC Observability Exporter mediante el archivo YAML

Puede implementar Citrix Observability Exporter mediante el archivo YAML. Descarga el archivo YAML de coe-es.yaml.

Para implementar Citrix Observability Exporter mediante el YAML de Kubernetes, ejecute el siguiente comando en el extremo de Elasticsearch:

  kubectl create -f coe-es.yaml

Nota:

Modifique el archivo YAML para Citrix ADC Observability Exporter si tiene un espacio de nombres personalizado.

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-es nodeport/.

    Por ejemplo, desde el paso 1, el acceso http://10.102.40.41:30176/ en el que, 10.102.40.41 es una de las IP del nodo de Kubernetes.

    Solicitudes

  3. Acceda a Kibana con un explorador mediante la URL: https://<kubernetes-node-IP>:<kibana nodeport>/.

    Por ejemplo, desde el paso 1, el acceso http://10.102.40.41:32529/ en el que, 10.102.40.41 es una de las IP del nodo de Kubernetes.

    1. Haga clic en Explorar por mi cuenta.

      Explorar

    2. Haga clic en Conectar a su índice de Elasticsearch.

      Conectarse a Elastic index

    3. Pulse en Objetos guardados.

    4. Descargue e importe el panel de control de Kibana desde KibanaApptrans.ndjson.

      Objetos guardados

    5. Haga clic en Panel de transacciones de aplicaciones

      Panel de mandos

      Aparece el panel de control.

      Panel de mandos

      Índices de Elasticsearch según la configuración

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

También puede configurar Citrix ADC Observability Exporter manualmente. Recomendamos implementar Citrix ADC Observability Exporter de forma automatizada con el archivo YAML como se describe en las secciones anteriores. También puede realizar una configuración manual para Citrix ADC en los factores de forma MPX y VPX.

            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

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

Para comprobar si Citrix ADC envía registros de datos de aplicaciones a Citrix ADC Observability Exporter:

     nsconmsg -g lstream_tot_trans_written -d current

El valor del contador indica que el número de transacciones de aplicaciones (por ejemplo, transacciones HTTP) que se han enviado a Citrix ADC Observability Exporter.

Valor de contador

Si la velocidad de tráfico de la aplicación (por ejemplo, HTTP req/seg) que se envía a Citrix ADC Observability Exporter no es igual a lstream_tot_trans_written, puede verificar lo mismo con el siguiente comando:

     nsconmsg -g nslstream_err_ulf_data_not_sendable -d current

El valor del contador indica que Citrix ADC no puede enviar los datos a Citrix ADC Observability Exporter debido a la congestión de la red, la falta de disponibilidad del ancho de banda de la red, etc. Los datos se almacenan en los búferes disponibles.

La información sobre varios datos de transacciones y campos individuales, y su tipo de datos, están disponibles en la siguiente ubicación en Citrix ADC:

     shell/netscaler/appflow/ns_ipfix.yaml

Ubicación de datos

Para comprobar que si los registros de transacciones de aplicaciones se exportan de Citrix ADC a Citrix ADC Observability Exporter, utilice el siguiente comando:

      nsconmsg -g appflow_tmpl -d current

Datos de rendimiento

Ubicación de los registros de exportación de datos de métricas a Citrix ADC para datos de series temporales:

      /var/nslog/metrics_prom.log

Para verificar los contadores relacionados con Elasticsearch, ejecute el siguiente comando:

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

Busque los registros en la siguiente ubicación para comprobar que la configuración de Citrix ADC Observability Exporter se aplica correctamente:

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

Si se produce un error en Citrix ADC Observability Exporter, puede recopilar registros y archivos disponibles en la siguiente ubicación y ponerse en contacto con Citrix Support.

      /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.)

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.