AppFlow 编辑
The Citrix ADC appliance is a central point of control for all application traffic in the data center. It collects flow and user-session level information valuable for application performance monitoring, analytics, and business intelligence applications. It also collects webpage performance data and database information. AppFlow transmits the information by using the Internet Protocol Flow Information eXport (IPFIX) format, which is an open Internet Engineering Task Force (IETF) standard defined in RFC 5101. IPFIX (the standardized version of Cisco’s NetFlow) is widely used to monitor network flow information. AppFlow defines new Information Elements to represent application-level information, webpage performance data, and database information.
Using UDP as the transport protocol, AppFlow transmits the collected data, called flow records, to one or more IPv4 collectors. The collectors aggregate the flow records and generate real-time or historical reports.
AppFlow provides visibility at the transaction level for HTTP, SSL, TCP, SSL_TCP flows, and HDX Insight flows. You can sample and filter the flow types that you want to monitor.
Note
For more information on HDX Insight, see HDX Insight.
AppFlow use actions and policies to send records for a selected flow to specific set of collectors. An AppFlow action specifies which set of collectors receive the AppFlow records. Policies, which are based on Advanced expressions can be configured to select flows for which flow records are sent to the collectors specified by the associated AppFlow action.
To limit the types of flows, you can enable AppFlow for a virtual server. AppFlow can also provide statistics for the virtual server.
You can also enable AppFlow for a specific service, representing an application server, and monitor the traffic to that application server.
Note: This feature is supported only on Citrix ADC nCore builds.
How AppFlow Works
In the most common deployment scenario, inbound traffic flows to a Virtual IP address (VIP) on the Citrix ADC appliance and is load balanced to a server. Outbound traffic flows from the server to a mapped or subnet IP address on the Citrix ADC and from the VIP to the client. A flow is a unidirectional collection of IP packets identified by the following five tuples: sourceIP, sourcePort, destIP, destPort, and protocol.
The following figure describes how the AppFlow feature works.
Figure 1. Citrix ADC Flow Sequence
As shown in the figure, the network flow identifiers for each leg of a transaction depend on the direction of the traffic.
The different flows that form a flow record are:
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>
To help the collector link all four flows in a transaction, AppFlow adds a custom transactionID element to each flow. For application-level content switching, such as HTTP, it is possible for a single client TCP connection to be load balanced to different back end TCP connections for each request. AppFlow provides a set of records for each transaction.
Flow Records
AppFlow records contain standard NetFlow or IPFIX information, such as time stamps for the beginning and end of a flow, packet count, and byte count. AppFlow records also contain application-level information (such as HTTP URLs, HTTP request methods and response status codes, server response time, and latency). Webpage performance data (such as page load time, page render time, and time spent on the page). And database information (such as database protocol, database response status, and database response size). IPFIX flow records are based on templates that need to be sent before sending flow records.
Templates
AppFlow defines a set of templates, one for each type of flow. Each template contains a set of standard Information Elements (IEs) and Enterprise-specific Information Elements (EIEs). IPFIX templates define the order and sizes of the Information Elements (Internet Explorer) in the flow record. The templates are sent to the collectors at regular intervals, as described in RFC 5101.
A template can include the following EIEs:
transactionID
An unsigned 32-bit number identifying an application-level transaction. For HTTP, it corresponds to a request and response pair. All flow records that correspond to this request and response pair have the same transaction ID. In the most common case, there are four
uniflow
records that correspond to this transaction. If the Citrix ADC generates the response by itself (served from the integrated cache or by a security policy), there might be only two flow records for this transaction.connectionID
An unsigned 32-bit number identifying a layer-4 connection (TCP or UDP). The Citrix ADC flows are bidirectional, with two separate flow records for each direction of the flow. This information element can be used to link the two flows.
For the Citrix ADC, a connectionID is an identifier for the connection data structure to track the progress of a connection. In an HTTP transaction, for instance, a given connectionID might have multiple transactionID elements corresponding to multiple requests that were made on that connection.
tcpRTT
The round trip time, in milliseconds, as measured on the TCP connection. It can be used as a metric to determine the client or server latency on the network.
httpRequestMethod
An 8-bit number indicating the HTTP method used in the transaction. An options template with the number-to-method mapping is sent along with the template.
httpRequestSize
An unsigned 32-bit number indicating the request payload size.
httpRequestURL
The HTTP URL requested by the client.
httpUserAgent
The source of incoming requests to the Web server.
httpResponseStatus
An unsigned 32-bit number indicating the response status code.
httpResponseSize
An unsigned 32-bit number indicating the response size.
httpResponseTimeToFirstByte
An unsigned 32-bit number indicating the time taken to receive the first byte of the response.
httpResponseTimeToLastByte
An unsigned 32-bit number indicating the time taken to receive the last byte of the response.
flowFlags
An unsigned 64-bit flag used to indicate different flow conditions.
EIEs for webpage performance data
clientInteractionStartTime
Time at which the browser receives the first byte of the response to load any objects of the page such as images, scripts, and style sheets.
clientInteractionEndTime
Time at which the browser received the last byte of response to load all the objects of the page such as images, scripts, and style sheets.
clientRenderStartTime
Time at which the browser starts to render the page.
clientRenderEndTime
Time at which a browser finished rendering the entire page, including the embedded objects.
EIEs for database information
dbProtocolName
An unsigned 8-bit number indicating the database protocol. Valid values are 1 for MS SQL and 2 for MySQL.
dbReqType
An unsigned 8-bit number indicating the database request method used in the transaction. For MS SQL, valid values are 1 is for QUERY, 2 is for TRANSACTION, and 3 is for RPC. For valid values for MySQL, see the MySQL documentation.
dbReqString
Indicates the database request string without the header.
dbRespStatus
An unsigned 64-bit number indicating the status of the database response received from the web server.
dbRespLength
An unsigned 64-bit number indicating the response size.
dbRespStatString
The response status string received from the web server.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论