Citrix ADC Observability Exporter con Zipkin como dispositivo de punto final

Citrix ADC Observability Exporter admite OpenTracing (OpenTracing ahora forma parte de OpenTelemetry) con Zipkin como dispositivo de punto final. Citrix ADC Observability Exporter transforma los datos de rastreo recopilados de Citrix ADC en formatos compatibles adecuados para OpenTracing y los exporta a Zipkin. Zipkin es un sistema de rastreo distribuido que ayuda a recopilar los datos de tiempo necesarios para solucionar problemas de latencia en arquitecturas de microservicios. Elasticsearch se usa para la retención a largo plazo de datos de rastreo y los rastreos se pueden visualizar con la interfaz de usuario de Zipkin o Kibana.

El siguiente diagrama ilustra cómo funciona la arquitectura Zipkin:

  1. Cuando el seguimiento está habilitado, inicialmente, agrega encabezados de rastreo abierto adicionales: x-trace-id, x-span-id y x-parent-span-id al paquete HTTP, antes de reenviar el paquete al siguiente pod de microservicios.

  2. La información sobre esta comunicación o transacción se envía a Citrix ADC Observability Exporter. La información incluye los detalles sobre los encabezados, la marca de tiempo (la hora en que se inicia esta solicitud y la duración completa del proceso) y las anotaciones (las anotaciones incluyen HTTP, SSL y TCP asociados a esa solicitud).

  3. A continuación, Citrix ADC Observability Exporter recibe varios mensajes de seguimiento de todos los ADC de Citrix y los agrega en un formato JSON comprensible de Zipkin, y los envía a Zipkin a través de la API.

  4. Del mismo modo, si los microservicios están habilitados con el seguimiento, ese seguimiento se envía a Zipkin a través de la API.

  5. La API de Zipkin almacena los datos de seguimiento en la base de datos de Elasticsearch y, finalmente, une el seguimiento completo a la solicitud HTTP dada y lo visualiza en la herramienta de visualización como Kibana. Puede ver el tiempo que la solicitud pasó en cada microservicios.

Arquitectura de Zipkin

Implementar Citrix ADC Observability Exporter

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 Observability Exporter como un pod dentro del clúster de Kubernetes o habilitar la configuración en el factor de forma Citrix ADC MPX o VPX fuera del clúster. Puede implementar Citrix ADC Observability Exporter mediante el archivo YAML de Kubernetes proporcionado por Citrix.

El siguiente diagrama ilustra Citrix ADC como una puerta de enlace de entrada con el Citrix Ingress Controller como sidecar. Citrix ADC Observability Exporter envía los datos de seguimiento recopilados de Citrix ADC a la API de Zipkin. A continuación, los datos de seguimiento se cargan en el servidor de Elasticsearch. Desde Elasticsearch, los datos se envían a la interfaz de usuario de Zipkin o Kibana para su visualización.

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.

Para implementar Citrix ADC Observability Exporter con Zipkin, debe realizar las siguientes tareas:

  1. Implemente la aplicación requerida con el soporte de rastreo habilitado.

  2. Implemente Citrix ADC CPX habilitado con el soporte de Citrix Observability Exporter.

  3. Implemente Zipkin, Elasticsearch y Kibana con los archivos YAML.

  4. Implemente Citrix Observability Exporter mediante el archivo YAML.

Implementar aplicaciones con el rastreo habilitado

A continuación, se muestra una implementación de aplicación de ejemplo con el seguimiento habilitado.

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. Accede al archivo YAML desde watches-app-tracing.yaml para implementar la aplicación.

      kubectl create -f watches-app-tracing.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 watches-app-tracing.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 habilitado con la compatibilidad de Citrix ADC Observability Exporter.

Al implementar Citrix ADC CPX, puede modificar el archivo YAML de implementación cpx-ingress-tracing.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-tracing.yaml y cic-configmap.yaml el archivo.

  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. Por ejemplo, agregue líneas args en el archivo cpx-ingress-tracing.yaml de la siguiente manera:

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

      server: 'coe-zipkin.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-tracing.yaml
      kubectl create -f cic-configmap.yaml
    

Nota:

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

Implementar Zipkin, Elasticsearch y Kibana mediante archivos YAML

Para implementar Zipkin, Elasticsearch y Kibana mediante YAML, lleve a cabo los siguientes pasos:

  1. Descargue los siguientes archivos YAML:

  2. Modifique la definición del espacio de nombres, si quiere utilizar un espacio de nombres personalizado que no sea el predeterminado.

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

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

Nota:

Zipkin, 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 ADC Observability Exporter mediante el archivo YAML. Descargue el archivo coe-zipkin.yaml.

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

  kubectl create -f coe-zipkin.yaml

Nota:

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

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 enviando una solicitud a la aplicación mediante el siguiente comando.

      kubectl run -i --tty busybox --image=busybox --restart=Never --rm -- wget --no-check-certificate "https://cpx-ingress-zipkin.default.svc.cluster.local/serial/view/watches"
    
  2. Abra la interfaz de usuario de Zipkin con la dirección IP y el puerto de nodos de Kubernetes.

      http://*k8-node-ip-address*:*node-port*/
    

    En la siguiente imagen, puede ver los rastros de la aplicación Watches. La aplicación Watches tiene varios microservicios para cada tipo de reloj, que se comunican entre sí para servir los datos de la aplicación. Los datos de seguimiento muestran que la aplicación FASTTRACK tardó más en publicarse en comparación con otros microservicios. De esta manera, puede identificar las cargas de trabajo de bajo rendimiento y solucionar problemas.

    Datos de seguimiento

    También puede ver los datos sin procesar en su panel de control de Kibana. Abra Kibana con http://<node-ip>:<node-port> y comience por definir un patrón de índice de zipkin.

    Use el campo timestamp_millis como campo de marca de tiempo. Después de crear el patrón de índice, haga clic en la ficha Descubrir y podrá ver la información de seguimiento recopilada por Zipkin.

    Rastros de zipkin

    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 Zipkin como dispositivo de punto final