Citrix ADC

AppFlow

Die Citrix ADC Appliance ist ein zentraler Kontrollpunkt 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 nützlich sind. Es sammelt auch Leistungsdaten und Datenbankinformationen für Webseiten. 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, Daten zur Webseitenleistung 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 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 Collectors 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 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

Flow-Sequ

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. Für Content Switching auf Anwendungsebene wie HTTP ist es möglich, dass eine einzelne Client-TCP-Verbindung für jede Anforderung auf verschiedene Backend-TCP-Verbindungen ausbalanciert 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). Daten zur Webseitenleistung (z. B. Seitenladezeit, Rendering-Zeit für Seiten und auf der Seite verbrachte Zeit). Und Datenbankinformationen (wie Datenbankprotokoll, Datenbankantwortstatus und Antwortgröße der Datenbank). 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 die Größe der Informationselemente (Internet Explorer) 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 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 nicht signierte 32-Bit-Zahl, die eine Layer-4-Verbindung (TCP oder UDP) identifiziert. Die Citrix ADC Flows sind bidirektional, mit zwei separaten Flow-Datensätzen für jede Richtung des Flusses. Dieses Informationselement kann verwendet werden, um die beiden Flows 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 beispielsweise eine bestimmte ConnectionId mehrere transactionID-Elemente enthalten, die mehreren Anforderungen entsprechen, die für diese Verbindung gestellt wurden.

  • tcpRTT

    Die Rundlaufzeit in Millisekunden, gemessen an der TCP-Verbindung. Es 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 Leistungsdaten der Webseite

  • 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 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