ADC

AppFlow

El dispositivo NetScaler es un punto central de control para todo el tráfico de aplicaciones en el centro de datos. Recopila información valiosa a nivel de flujo y sesión de usuario para aplicaciones de supervisión del rendimiento de las aplicaciones, análisis e inteligencia empresarial. También recopila datos de rendimiento de páginas web e información de base de datos. AppFlow transmite la información mediante el formato Internet Protocol Flow Information Export (IPFIX), que es un estándar abierto del Grupo de trabajo de ingeniería de Internet (IETF) definido en RFC 5101. IPFIX (la versión estandarizada de NetFlow de Cisco) se utiliza ampliamente para supervisar la información de flujo de red. AppFlow define nuevos elementos de información para representar información a nivel de aplicación, datos de rendimiento de páginas web e información de base de datos.

Mediante UDP como protocolo de transporte, AppFlow transmite los datos recopilados, denominados registros de flujo, a uno o más recopiladores IPv4. Los recopiladores agregan los registros de flujo y generan informes históricos o en tiempo real.

AppFlow proporciona visibilidad a nivel de transacción para flujos HTTP, SSL, TCP, SSL_TCP y HDX Insight. Puede muestrear y filtrar los tipos de flujo que quiere supervisar.

Nota

Para obtener más información sobre HDX Insight, consulte HDX Insight.

AppFlow utiliza acciones y directivas para enviar registros de un flujo seleccionado a un conjunto específico de recopiladores. Una acción de AppFlow especifica qué conjunto de recopiladores reciben los registros de AppFlow. Las directivas, basadas en expresiones avanzadas, se pueden configurar para seleccionar flujos para los que se envían registros de flujo a los recopiladores especificados por la acción de AppFlow asociada.

Para limitar los tipos de flujos, puede habilitar AppFlow para un servidor virtual. AppFlow también puede proporcionar estadísticas para el servidor virtual.

También puede habilitar AppFlow para un servicio específico, que represente un servidor de aplicaciones, y supervisar el tráfico a ese servidor de aplicaciones.

Nota: Esta función solo se admite en las compilaciones de NetScaler nCore.

Cómo funciona AppFlow

En el caso de implementación más común, el tráfico entrante fluye a una dirección IP virtual (VIP) del dispositivo NetScaler y se equilibra la carga en un servidor. El tráfico saliente fluye desde el servidor a una dirección IP mapeada o de subred en NetScaler y desde el VIP al cliente. Un flujo es una colección unidireccional de paquetes IP identificados por las cinco tuplas siguientes: SourceIP, SourcePort, DesTip, DestPort y protocol.

La siguiente ilustración describe cómo funciona la función AppFlow.

Figura 1. Secuencia de flujo de NetScaler

secuencia de flujo

Como se muestra en la ilustración, los identificadores de flujo de red para cada tramo de una transacción dependen de la dirección del tráfico.

Los diferentes flujos que forman un registro de flujo son:

Flujo 1: <Client-IP, Client-Port, VIP-IP, VIP-port, Protocol>

Flujo 2: <NS-MIP/SNIP, NS-port, Server-IP, Server-Port, Protocol>

Flujo 3: <Server-IP, Server-Port, NS-MIP/SNIP, NS-Port, Protocol>

Flujo 4: <VIP-IP, VIP-port, Client-IP, Client-Port, Protocol>

Para ayudar al recopilador a vincular los cuatro flujos de una transacción, AppFlow agrega un elemento transactionID personalizado a cada flujo. Para la conmutación de contenido a nivel de aplicación, como HTTP, es posible equilibrar la carga de una conexión TCP de un solo cliente para distintas conexiones TCP de back-end para cada solicitud. AppFlow proporciona un conjunto de registros para cada transacción.

Registros de flujo

Los registros de AppFlow contienen información estándar de NetFlow o IPFIX, como marcas de tiempo para el inicio y el final de un flujo, recuento de paquetes y recuento de bytes. Los registros de AppFlow también contienen información a nivel de aplicación (como URL HTTP, métodos de solicitud HTTP y códigos de estado de respuesta, tiempo de respuesta del servidor y latencia). Datos de rendimiento de la página web (como el tiempo de carga de la página, el tiempo de procesamiento de la página y el tiempo dedicado a la página). Y la información de la base de datos (como el protocolo de base de datos, el estado de respuesta de la base de datos y el tamaño de respuesta Los registros de flujo IPFIX se basan en plantillas que deben enviarse antes de enviar registros de flujo.

Plantillas

AppFlow define un conjunto de plantillas, una para cada tipo de flujo. Cada plantilla contiene un conjunto de elementos de información (IE) estándar y elementos de información específicos de la empresa (EIE). Las plantillas IPFIX definen el orden y el tamaño de los elementos de información (Internet Explorer) en el registro de flujo. Las plantillas se envían a los recopiladores a intervalos regulares, como se describe en RFC 5101.

Una plantilla puede incluir las siguientes EIE:

  • transactionID

    Número de 32 bits sin firmar que identifica una transacción a nivel de aplicación. Para HTTP, corresponde a un par de solicitud y respuesta. Todos los registros de flujo que corresponden a este par de solicitudes y respuestas tienen el mismo identificador de transacción. En el caso más común, hay cuatro uniflow registros que corresponden a esta transacción. Si NetScaler genera la respuesta por sí mismo (servida desde la caché integrada o mediante una directiva de seguridad), es posible que solo haya dos registros de flujo para esta transacción.

  • connectionID

    Número de 32 bits sin firmar que identifica una conexión de capa 4 (TCP o UDP). Los flujos de NetScaler son bidireccionales, con dos registros de flujo independientes para cada dirección del flujo. Este elemento de información se puede utilizar para vincular los dos flujos.

    Para NetScaler, un ConnectionID es un identificador de la estructura de datos de conexión para realizar un seguimiento del progreso de una conexión. En una transacción HTTP, por ejemplo, un connectionID determinado puede tener varios elementos transactionID correspondientes a varias solicitudes realizadas en esa conexión.

  • tcpRTT

    Tiempo de ida y vuelta, en milisegundos, medido en la conexión TCP. Se puede utilizar como métrica para determinar la latencia del cliente o del servidor en la red.

  • httpRequestMethod

    Número de 8 bits que indica el método HTTP utilizado en la transacción. Junto con la plantilla se envía una plantilla de opciones con la asignación de número a método.

  • httpRequestSize

    Número de 32 bits sin firmar que indica el tamaño de la carga útil de la solicitud.

  • httpRequestURL

    La URL HTTP solicitada por el cliente.

  • httpUserAgent

    Origen de las solicitudes entrantes al servidor web.

  • httpResponseStatus

    Número de 32 bits sin firmar que indica el código de estado de respuesta.

  • httpResponseSize

    Número de 32 bits sin firmar que indica el tamaño de la respuesta.

  • httpResponseTimeToFirstByte

    Número de 32 bits sin firmar que indica el tiempo que tarda en recibir el primer byte de la respuesta.

  • httpResponseTimeToLastByte

    Número de 32 bits sin firmar que indica el tiempo que se tarda en recibir el último byte de la respuesta.

  • flowFlags

    Indicador de 64 bits sin firmar que se utiliza para indicar diferentes condiciones de flujo.

EIE para datos de rendimiento de páginas web

  • clientInteractionStartTime

    Hora en la que el explorador recibe el primer byte de la respuesta para cargar cualquier objeto de la página, como imágenes, guiones y hojas de estilo.

  • clientInteractionEndTime

    Hora en la que el explorador recibió el último byte de respuesta para cargar todos los objetos de la página, como imágenes, scripts y hojas de estilo.

  • clientRenderStartTime

    Hora en la que el explorador empieza a renderizar la página.

  • clientRenderEndTime

    Hora en la que un explorador terminó de renderizar toda la página, incluidos los objetos incrustados.

EIE para información de bases de datos

  • dbProtocolName

    Número de 8 bits sin firmar que indica el protocolo de base de datos. Los valores válidos son 1 para MS SQL y 2 para MySQL.

  • dbReqType

    Número de 8 bits sin firmar que indica el método de solicitud de base de datos utilizado en la transacción. Para MS SQL, los valores válidos son 1 para QUERY, 2 para TRANSACTION y 3 para RPC. Para obtener valores válidos para MySQL, consulte la documentación de MySQL.

  • dbReqString

    Indica la cadena de solicitud de base de datos sin el encabezado.

  • dbRespStatus

    Número de 64 bits sin firmar que indica el estado de la respuesta de la base de datos recibida del servidor web.

  • dbRespLength

    Número de 64 bits sin firmar que indica el tamaño de la respuesta.

  • dbRespStatString

    Cadena de estado de respuesta recibida del servidor web.

AppFlow