AppFlow

Die Citrix ADC Appliance ist ein zentraler Kontrollpunkt für den gesamten Anwendungsdatenverkehr im Rechenzentrum. Es sammelt Informationen auf Fluss- und Benutzersitzungsebene, die für die Überwachung der Anwendungsleistung, Analyse und Business Intelligence-Anwendungen nützlich sind. Es sammelt auch Web-Seite Performance-Daten und Datenbankinformationen. AppFlow überträgt die Informationen mithilfe des IPFIX-Formats (Internet Protocol Flow Information Export), bei dem es sich um einen offenen IETF-Standard (Internet Engineering Task Force) 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, Performance-Daten der Webseite und Datenbankinformationen darzustellen.

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

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

Hinweis

Weitere Informationen zu HDX Insight finden Sie unterHDX 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, welcher Kollektorsatz die AppFlow Datensätze empfängt. Richtlinien, die auf erweiterten Ausdrücken basieren, können so konfiguriert werden, dass Flows ausgewählt werden, für die Flowdatensätze an die in der zugeordneten AppFlow Aktion angegebenen Collectors gesendet werden.

Um die Arten von Flows zu begrenzen, 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 bei Citrix ADC nCore Builds unterstützt.

Funktionsweise von 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 ausgeglichen. Ausgehender Datenverkehr fließt vom Server zu einer zugeordneten oder Subnetz-IP-Adresse auf dem Citrix ADC und vom VIP zum Client. Ein Flow ist eine unidirektionale Sammlung von IP-Paketen, die durch die folgenden fünf Tupel identifiziert werden: SourceIP, SourcePort, DestIP, DestPort und Protokoll.

In der folgenden Abbildung wird die Funktionsweise des AppFlow Features beschrieben.

Abbildung 1. Citrix ADC Flusssequenz

Fließsequenz

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

Die verschiedenen Flows, die einen Flow-Datensatz bilden, sind:

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>

Damit der Kollektor alle vier Flows in einer Transaktion verknüpfen kann, fügt AppFlow jedem Flow ein benutzerdefiniertes TransactionID-Element hinzu. Bei Inhaltsumschaltung auf Anwendungsebene, z. B. HTTP, ist es möglich, dass eine einzelne Client-TCP-Verbindung für jede Anforderung auf unterschiedliche Backend-TCP-Verbindungen geladen wird. AppFlow stellt für jede Transaktion eine Gruppe von Datensätzen bereit.

Flowdatensätze

AppFlow Datensätze enthalten standardmäßige NetFlow- oder IPFIX-Informationen, z. B. Zeitstempel für Anfang und Ende eines Flows, Paketanzahl und Byteanzahl. AppFlow Datensätze enthalten auch Informationen auf Anwendungsebene (wie HTTP-URLs, HTTP-Anforderungsmethoden und Antwortstatuscodes, Server-Antwortzeit und Latenz), Webseitenleistungsdaten (z. B. Datenbank-Antwortstatus und Datenbank-Antwortgröße). IPFIX-Flow-Datensätze basieren auf Vorlagen, die vor dem Senden von Flow-Datensätzen gesendet werden müssen.

Vorlagen

AppFlow definiert einen Satz von Vorlagen, eine für jeden Flow. Jede Vorlage enthält eine Reihe von Standardinformationselementen (IEs) und unternehmensspezifische Informationselemente (EIEs). IPFIX-Vorlagen definieren die Reihenfolge und Größe der Informationselemente (IE) im Flow-Datensatz. Die Vorlagen werden in regelmäßigen Abständen an die Kollektoren gesendet, wie in RFC 5101 beschrieben.

Eine Vorlage kann die folgenden EIEs enthalten:

  • transactionID

    Eine nicht signierte 32-Bit-Nummer, die eine Transaktion auf Anwendungsebene identifiziert. Für HTTP entspricht dies 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), kann es nur zwei Flow-Datensätze für diese Transaktion geben.

  • connectionID

    Eine nicht signierte 32-Bit-Zahl, die eine Layer-4-Verbindung (TCP oder UDP) identifiziert. Die Citrix ADC Flows sind in der Regel bidirektional, mit zwei separaten Flow-Datensätzen für jede Flussrichtung. Dieses Informationselement kann verwendet werden, um die beiden Flows zu verknüpfen.

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

  • tcpRTT

    Die Rundlaufzeit in Millisekunden, gemessen an der TCP-Verbindung. Dies kann als Metrik verwendet werden, um die Client- oder Serverlatenz im Netzwerk zu bestimmen.

  • httpRequestMethod

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

  • httpRequestSize

    Eine nicht signierte 32-Bit-Nummer, die die Anforderungsnutzlastgröße angibt.

  • httpRequestURL

    Die vom Client angeforderte HTTP-URL.

  • httpUserAgent

    Die Quelle der eingehenden Anforderungen an den Webserver.

  • httpResponseStatus

    Eine 32-Bit-Nummer ohne Vorzeichen, die den Antwortstatuscode angibt.

  • httpResponseSize

    Eine 32-Bit-Nummer ohne Vorzeichen, die die Antwortgröße angibt.

  • httpResponseTimeToFirstByte

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

  • httpResponseTimeToLastByte

    Eine 32-Bit-Nummer ohne Vorzeichen, die die Zeit angibt, die zum Empfang des letzten Bytes der Antwort gebraucht wird.

  • flowFlags

    Ein nicht signiertes 64-Bit-Flag, das verwendet wird, um unterschiedliche Flussbedingungen anzuzeigen.

EIEs für Webseitenleistungsdaten

  • clientInteractionStartTime

    Zeit, zu der der Browser das erste Byte der Antwort empfängt, um Objekte der Seite wie Bilder, Skripte und Stylesheets zu laden.

  • clientInteractionEndTime

    Zeitpunkt, zu dem der Browser das letzte Antwortbyte empfangen hat, um alle Objekte der Seite wie Bilder, Skripte und Stylesheets zu laden.

  • clientRenderStartTime

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

  • clientRenderEndTime

    Zeitpunkt, zu dem der Browser das Rendern der gesamten Seite einschließlich der eingebetteten Objekte beendet hat.

EIEs für Datenbankinformationen

  • dbProtocolName

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

  • dbReqType

    Eine nicht signierte 8-Bit-Nummer, die die Datenbankanforderungsmethode angibt, die in der Transaktion verwendet wird. Für MS SQL sind gültige Werte 1 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

    Gibt die Datenbankanforderungszeichenfolge ohne den Header an.

  • dbRespStatus

    Eine nicht signierte 64-Bit-Nummer, die den Status der vom Webserver empfangenen Datenbank-Antwort angibt.

  • dbRespLength

    Eine 64-Bit-Nummer ohne Vorzeichen, die die Antwortgröße angibt.

  • dbRespStatString

    Die vom Webserver empfangene Antwortstatuszeichenfolge.

AppFlow