Citrix ADC

演示applow

Citrix ADC设备是对数据中心中所有应用程序流量进行控制的中心点。它可收集对应用程序性能监视、分析和业务智能应用程序有价值的流和用户会话级别信息。它还收集Web页面性能数据和数据库信息。演示applow使用 Internet 协议流信息导出 (IPFIX) 格式(这是在 RFC 5101 中定义的开放 Internet 工程任务组 (IETF) 标准)传输此信息。IPFIX(Cisco 的 NetFlow 的标准化版本)广泛用于监视网络流信息。AppFlow 定义新的信息元素来表示应用程序级别信息、Web 页面性能数据和数据库信息。

通过使用UDP作为传输协议,AppFlow可将收集的数据(称为流记录)传输到一个或多个IPv4收集器。收集器可聚合流记录,并生成实时或历史报告。

演示applow在事务级别为HTTP、SSL、TCP、SSL_TCP通信流和HDX洞察力通信流提供可见性。可对要监视的通信流类型进行采样和过滤。

注意

有关HDX Insight的更多信息,请参阅HDX洞察力

AppFlow使用操作和策略将选定流的记录发送到特定的一组收集器。AppFlow操作指定哪组收集器接收AppFlow记录。可以配置基于高级表达式的策略,以便为将其流记录发送到关联AppFlow操作指定的收集器的流。

要限制流的类型,可以为虚拟服务器启用AppFlow。AppFlow还可为虚拟服务器提供统计信息。

还可为表示应用程序服务器的特定服务启用AppFlow,并监视传输到该应用程序服务器的流量。

注意:此功能仅在Citrix ADC nCore内部版本中受支持。

AppFlow的工作原理

在最常见的部署方案中,入站流量流向Citrix ADC设备上的虚拟IP地址(VIP)并对服务器进行负载平衡。出站流量从服务器流向Citrix ADC上映射的IP地址或子网IP地址以及从VIP流向客户端。流是由以下五个元组标识的IP数据包的单向集合:sourceIP, sourcePort, destIP, destPort和协议。

下图描述了AppFlow功能的工作原理。

图 1.Citrix ADC流序列

流序列

如图所示,事务的每个段的网络流标识符取决于流量的方向。

形成流记录的不同流如下:

Flow1:

Flow2:

流量:

Flow4:

为了帮助收集器链接事务中的所有四个流,演示applow将自定义transactionID元素添加到每个流中。对于应用程序级内容交换(例如HTTP),单个客户端TCP连接可以将每个请求负载平衡到不同的后端TCP连接。AppFlow为每个事务提供了一组记录。

流记录

演示applow记录包含标准的NetFlow或IPFIX信息,例如流的开始和结束时间戳,数据包计数和字节计数。演示applow记录还包含应用程序级别的信息(例如 HTTP URL、HTTP 请求方法和响应状态代码、服务器响应时间和延迟)。Web 页面性能数据(例如页面加载时间、页面呈现时间以及在页面上花费的时间)。以及数据库信息(例如数据库协议、数据库响应状态和数据库响应大小)。IPFIX 流记录基于发送流记录之前需要发送的模板。

模板

AppFlow定义了一组模板,每种流类型对应一个模板。每个模板都包含一组标准信息元素(ie)和企业特定的信息元素(eie)。IPFIX模板定义了流记录中信息元素(Internet Explorer浏览器)的顺序和大小。如RFC 5101中所述,模板会定期发送给收集者。

模板可以包括以下eie:

  • transactionID

    标识应用程序级事务的未签名 32 位数字。对于http,它对应于请求和响应对。与此请求和响应对对应的所有流记录都具有相同的事务id。在最常见的情况下,有四条单向流动的记录对应于此事务。如果Citrix ADC自行生成响应(从集成缓存或安全策略提供),则此事务可能只有两条流记录。

  • connectionID

    标识第4层连接(tcp或udp)的未签名32位数字。Citrix ADC流是双向的,流的每个方向都有两条单独的流记录。此信息元素可用于链接这两个流。

    对于Citrix ADC,connectionID是用于跟踪连接进度的连接数据结构的标识符。例如,在HTTP事务中,给定connectionID可能有多个transactionID元素,这些元素对应于在该连接上发出的多个请求。

  • tcpRTT

    在TCP连接上测量的往返时间(以毫秒为单位)。它可以用作确定网络上的客户端或服务器延迟的指标。

  • httpRequestMethod

    一个8位数字,指示在事务中使用的HTTP方法。带有数字到方法映射的选项模板随模板一起发送。

  • httpRequestSize

    指示请求有效负载大小的无符号 32 位数字。

  • httpRequestURL

    客户端请求的HTTP url。

  • httpUserAgent

    网址服务器的传入请求的来源。

  • httpResponseStatus

    指示响应状态代码的无符号 32 位数字。

  • httpResponseSize

    指示响应大小的无符号 32 位数字。

  • httpResponseTimeToFirstByte

    指示接收响应的第一个字节所需时间的无符号 32 位数字。

  • httpResponseTimeToLastByte

    指示接收响应的最后一个字节所需时间的无符号 32 位数字。

  • flowFlags

    指示不同流量条件的无符号 64 位标志。

用于Web性能数据的EIE

  • clientInteractionStartTime

    浏览器收到响应的第一个字节以加载页面的任何对象(例如图像、脚本和样式表)的时间。

  • clientInteractionEndTime

    浏览器收到响应的最后一个字节以加载页面的所有对象(例如图像、脚本和样式表)的时间。

  • clientRenderStartTime

    浏览器开始呈现页面的时间。

  • clientRenderEndTime

    浏览器完成呈现整个页面(包括嵌入对象)的时间。

用于存储数据库信息的eie

  • dbProtocolName

    指示数据库协议的无符号 8 位数字。MS SQL的有效值为1,MySQL的有效值为2。

  • dbReqType

    指示事务中使用的数据库请求方法的无符号 8 位数字。对于MS SQL,有效值为1,表示查询,2表示事务,3表示RPC。有关MySQL的有效值,请参阅MySQL文档。

  • dbReqString

    指示没有标头的数据库请求字符串。

  • dbRespStatus

    指示从Web服务器收到的数据库响应的状态的无符号64位数字。

  • dbRespLength

    指示响应大小的无符号 64 位数字。

  • dbRespStatString

    从Web服务器收到的响应状态字符串。

演示applow