AppFlow

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

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

AppFlow 为 HTTP、SSL、TCP、SSL_TCP 流和 HDX Insight 能分析流提供了事务级别的可见性。您可以对要监视的流类型进行采样和筛选。

注意

有关 HDX Insight 的详细信息,请参阅HDX Insight

AppFlow 使用操作和策略将所选流的记录发送到特定的收集器集。AppFlow 操作指定哪些收集器将接收 AppFlow 记录。可以配置基于高级表达式的策略,以选择流记录将发送到相关 AppFlow 操作指定的收集器的流。

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

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

注意:仅 Citrix ADC nCore 版本支持此功能。

AppFlow 的工作原理

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

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

图 1. Citrix ADC 流程序列

流程序列

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

形成流量记录的不同流量是:

Flow1:<Client-IP, Client-Port, VIP-IP, VIP-port, Protocol>

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

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

Flow4:<VIP-IP, VIP-port, Client-IP, Client-Port, Protocol>

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

流量记录

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

模板

AppFlow 定义了一组模板,每种类型的流一个模板。每个模板都包含一组标准信息元素 (IE) 和企业特定信息元素 (EIE)。IPFIX 模板定义流记录中信息元素 (IE) 的顺序和大小。如 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

    到 Web 服务器的传入请求的源。

  • httpResponseStatus

    一个无符号的 32 位数字,表示响应状态代码。

  • httpResponseSize

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

  • httpResponseTimeToFirstByte

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

  • httpResponseTimeToLastByte

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

  • flowFlags

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

网页性能数据的 EIE

  • clientInteractionStartTime

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

  • clientInteractionEndTime

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

  • clientRenderStartTime

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

  • clientRenderEndTime

    浏览器完成渲染整个页面的时间,包括嵌入的对象。

数据库信息的 EIE

  • dbProtocolName

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

  • dbReqType

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

  • dbReqString

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

  • dbRespStatus

    一个未签名的 64 位数字,指示从 Web 服务器接收到的数据库响应的状态。

  • dbRespLength

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

  • dbRespStatString

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

AppFlow