Citrix ADC

AppFlow

Die Citrix ADC-Appliance ist ein zentraler Steuerungspunkt für den gesamten Anwendungsverkehr im Rechenzentrum. Es sammelt Informationen auf Fluss- und Benutzersitzungsebene, die für die Überwachung der Anwendungsleistung, Analyse und Business Intelligence-Anwendungen wertvoll sind. Es sammelt auch Leistungsdaten von Webseiten und Datenbankinformationen. AppFlow überträgt die Informationen mithilfe des Internet Protocol Flow Information Export-Formats (IPFIX), bei dem es sich um einen offenen Internet Engineering Task Force (IETF) -Standard handelt, der in RFC 5101 definiert ist. IPFIX (die standardisierte Version von NetFlow von Cisco) wird häufig zur Überwachung von Netzwerkflussinformationen verwendet. AppFlow definiert neue Informationselemente, um Informationen auf Anwendungsebene, Leistungsdaten von Webseiten und Datenbankinformationen darzustellen.

Unter Verwendung von UDP als Transportprotokoll überträgt AppFlow die gesammelten Daten, die als Flow-Datensätzebezeichnet werden, an einen oder mehrere IPv4-Sammler. Die Kollektoren aggregieren die Flow-Datensätze und generieren Echtzeit- oder historische Berichte.

AppFlow bietet Sichtbarkeit auf Transaktionsebene für HTTP-, SSL-, TCP-, SSL_TCP-Flows und HDX Insight-Flüsse. Sie können die Flow-Typen, die Sie überwachen möchten, testen und filtern.

Hinweis

Weitere Informationen zu HDX Insight finden Sie unter HDX Insight.

AppFlow verwendet Aktionen und Richtlinien, um Datensätze für einen ausgewählten Flow an bestimmte Kollektoren zu senden. Eine AppFlow-Aktion gibt an, welche Gruppe von Collectoren die AppFlow-Datensätze erhalten. Richtlinien, die auf erweiterten Ausdrücken basieren, können so konfiguriert werden, dass sie Flows auswählen, für die Flow-Datensätze an die durch die zugehörige AppFlow-Aktion angegebenen Collectors gesendet werden.

Um die Arten von Flows einzuschränken, können Sie AppFlow für einen virtuellen Server aktivieren. AppFlow kann auch Statistiken für den virtuellen Server bereitstellen.

Sie können AppFlow auch für einen bestimmten Dienst aktivieren, der einen Anwendungsserver darstellt, und den Datenverkehr zu diesem Anwendungsserver überwachen.

Hinweis: Diese Funktion wird nur auf Citrix ADC NCore-Builds unterstützt.

So funktioniert AppFlow

Im häufigsten Bereitstellungsszenario fließt eingehender Datenverkehr zu einer virtuellen IP-Adresse (VIP) auf der Citrix ADC-Appliance und wird auf einen Server ausbalanciert. Ausgehender Datenverkehr fließt vom Server zu einer zugeordneten oder Subnetz-IP-Adresse auf dem Citrix ADC und vom VIP zum Client. Ein Fluss ist eine unidirektionale Sammlung von IP-Paketen, die durch die folgenden fünf Tupel identifiziert wird: SourceIP, SourcePort, DesTip, DestPort und Protokoll.

Die folgende Abbildung beschreibt, wie die AppFlow-Funktion funktioniert.

Abbildung 1. Citrix ADC-Flowsequenz

Sequenz des

Wie in der Abbildung gezeigt, hängen die Netzwerkflusskennungen für jeden Abschnitt einer Transaktion von der Richtung des Datenverkehrs ab.

Die verschiedenen Flüsse, die einen Flow-Datensatz bilden, sind:

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

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

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

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

Um dem Collector zu helfen, alle vier Flows in einer Transaktion zu verknüpfen, fügt AppFlow jedem Flow ein benutzerdefiniertes TransactionID-Element hinzu. Für Content Switching auf Anwendungsebene, z. B. HTTP, ist es möglich, dass eine einzelne Client-TCP-Verbindung für jede Anforderung auf verschiedene Back-End-TCP-Verbindungen ausgeglichen wird. AppFlow stellt eine Reihe von Datensätzen für jede Transaktion bereit.

Flow Aufzeichnungen

AppFlow-Datensätze enthalten standardmäßige NetFlow- oder IPFIX-Informationen, wie Zeitstempel für den Beginn und das Ende eines Flusses, Paketanzahl und Byteanzahl. AppFlow-Datensätze enthalten auch Informationen auf Anwendungsebene (wie HTTP-URLs, HTTP-Anforderungsmethoden und Antwortstatuscodes, Serverreaktionszeit und Latenz). Leistungsdaten der Webseite (z. B. die Ladezeit der Seite, die Renderzeit der Seite und die auf der Seite verbrachte Zeit). Und Datenbankinformationen (wie Datenbankprotokoll, Status der Datenbankantwort und Größe der Datenbank-Antwort). IPFIX-Flow-Datensätze basieren auf Vorlagen, die vor dem Senden von Flow-Datensätzen gesendet werden müssen.

Vorlagen

AppFlow definiert eine Reihe von Vorlagen, eine für jede Art von Fluss. Jede Vorlage enthält eine Reihe von Standardinformationselementen (IEs) und unternehmensspezifischen Informationselementen (EIEs). IPFIX-Vorlagen definieren die Reihenfolge und Größe der Informationselemente (Internet Explorer) im Flow-Datensatz. Die Vorlagen werden in regelmäßigen Abständen an die Sammler gesendet, wie in RFC 5101 beschrieben.

Eine Vorlage kann die folgenden EIEs enthalten:

  • transactionID

    Eine vorzeichenlose 32-Bit-Nummer, die eine Transaktion auf Anwendungsebene identifiziert. Für HTTP entspricht es einem Anforderungs- und Antwortpaar. Alle Flow-Datensätze, die diesem Anforderungs- und Antwortpaar entsprechen, haben dieselbe Transaktions-ID. Im häufigsten Fall gibt es vier uniflow Datensätze, die dieser Transaktion entsprechen. Wenn der Citrix ADC die Antwort selbst generiert (bereitgestellt aus dem integrierten Cache oder durch eine Sicherheitsrichtlinie), gibt es möglicherweise nur zwei Flussdatensätze für diese Transaktion.

  • connectionID

    Eine vorzeichenlose 32-Bit-Nummer, die eine Layer-4-Verbindung (TCP oder UDP) identifiziert. Die Citrix ADC-Flows sind bidirektional, mit zwei separaten Flussdatensätzen für jede Richtung des Flusses. Dieses Informationselement kann verwendet werden, um die beiden Flüsse zu verknüpfen.

    Für den Citrix ADC ist eine ConnectionID ein Bezeichner für die Verbindungsdatenstruktur, um den Fortschritt einer Verbindung zu verfolgen. In einer HTTP-Transaktion kann eine bestimmte ConnectionID beispielsweise mehrere TransactionID-Elemente enthalten, die mehreren Anfragen entsprechen, die an diese Verbindung gestellt wurden.

  • tcpRTT

    Die an der TCP-Verbindung gemessene Roundtrip-Zeit in Millisekunden. Es kann als Metrik verwendet werden, um die Client- oder Serverlatenz im Netzwerk zu bestimmen.

  • httpRequestMethod

    Eine 8-Bit-Zahl, die die in der Transaktion verwendete HTTP-Methode angibt. Eine Optionsvorlage mit der Nummer-zu-Methode-Zuordnung wird zusammen mit der Vorlage gesendet.

  • httpRequestSize

    Eine vorzeichenlose 32-Bit-Zahl, die die Größe der Nutzdaten der Anforderung angibt.

  • httpRequestURL

    Die vom Client angeforderte HTTP-URL.

  • httpUserAgent

    Die Quelle eingehender Anfragen an den Webserver.

  • httpResponseStatus

    Eine 32-Bit-Zahl ohne Vorzeichen, die den Statuscode der Antwort angibt.

  • httpResponseSize

    Eine 32-Bit-Zahl ohne Vorzeichen, die die Größe der Antwort angibt.

  • httpResponseTimeToFirstByte

    Eine 32-Bit-Zahl ohne Vorzeichen, die die Zeit angibt, die zum Empfangen des ersten Bytes der Antwort gebraucht wurde.

  • httpResponseTimeToLastByte

    Eine 32-Bit-Zahl ohne Vorzeichen, die die Zeit angibt, die zum Empfangen des letzten Bytes der Antwort gebraucht wurde.

  • flowFlags

    Ein 64-Bit-Flag ohne Vorzeichen, das verwendet wird, um verschiedene Flussbedingungen anzuzeigen.

EIEs für Leistungsdaten von Webseiten

  • clientInteractionStartTime

    Zeitpunkt, zu dem der Browser das erste Byte der Antwort erhält, um Objekte der Seite wie Bilder, Skripts und Stylesheets zu laden.

  • clientInteractionEndTime

    Zeitpunkt, zu dem der Browser das letzte Byte an Antwort erhalten hat, um alle Objekte der Seite wie Bilder, Skripts und Stylesheets zu laden.

  • clientRenderStartTime

    Zeitpunkt, zu dem der Browser beginnt, die Seite zu rendern.

  • clientRenderEndTime

    Zeitpunkt, zu dem ein Browser die gesamte Seite einschließlich der eingebetteten Objekte beendet hat.

EIEs für Datenbankinformationen

  • dbProtocolName

    Eine vorzeichenlose 8-Bit-Zahl, die das Datenbankprotokoll angibt. Gültige Werte sind 1 für MS SQL und 2 für MySQL.

  • dbReqType

    Eine vorzeichenlose 8-Bit-Zahl, die die in der Transaktion verwendete Datenbankanforderungsmethode angibt. Gültige Werte für MS SQL sind 1 ist für QUERY, 2 für TRANSACTION und 3 für RPC. Gültige Werte für MySQL finden Sie in der MySQL-Dokumentation.

  • dbReqString

    Zeigt die Zeichenfolge der Datenbankanforderung ohne den Header an.

  • dbRespStatus

    Eine 64-Bit-Zahl ohne Vorzeichen, die den Status der vom Webserver empfangenen Datenbankantwort angibt.

  • dbRespLength

    Eine 64-Bit-Zahl ohne Vorzeichen, die die Größe der Antwort angibt.

  • dbRespStatString

    Die vom Webserver empfangene Zeichenfolge für den Antwortstatus.

AppFlow