Citrix ADC

AppFlow

Citrix ADCアプライアンスは、データセンター内のすべてのアプリケーショントラフィックを一元的に制御します。これは、アプリケーションパフォーマンスの監視、分析、およびビジネスインテリジェンスアプリケーションにとって有効なフローとユーザーセッションレベルの情報を収集します。また、Webページのパフォーマンスデータとデータベース情報も収集します。AppFlow は、インターネットプロトコルフロー情報 eXport (IPFIX) 形式を使用して情報を送信します。これは、RFC 5101 で定義されているオープンなインターネット技術標準化委員会 (IETF) 標準です。IPFIX(Cisco社製NetFlowの標準化バージョン)は、ネットワークフロー情報を監視するために幅広く使用されています。AppFlowは、アプリケーションレベルの情報、Webページのパフォーマンスデータ、およびデータベース情報を表す新しい情報要素を定義します。

トランスポートプロトコルとしてUDPを使用して、AppFlowは フローレコードと呼ばれる収集されたデータを1つまたは複数の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アドレスまたはサブネットIPアドレスに送信され、VIPからクライアントに送信されます。フローは、送信元IP、送信元ポート、destIP、destPort、およびプロトコルの 5 つのタプルによって識別される IP パケットの単方向集合です。

次の図は、AppFlow機能の動作を示しています。

図1:Citrix ADCのフロー・シーケンス

フローシーケンス

図に示すように、トランザクションの各レッグのネットワークフロー ID は、トラフィックの方向によって異なります。

フローレコードを形成するフローは、次のとおりです。

フロー 1:<Client-IP, Client-Port, VIP-IP, VIP-port, Protocol>

フロー 2:<NS-MIP/SNIP, NS-port, Server-IP, Server-Port, Protocol>

フロー 3:<Server-IP, Server-Port, NS-MIP/SNIP, NS-Port, Protocol>

フロー 4:<VIP-IP, VIP-port, Client-IP, Client-Port, Protocol>

コレクタがトランザクション内の 4 つのフローすべてをリンクできるようにするため、AppFlow は各フローにカスタム transactionID 要素を追加します。HTTPなどのアプリケーションレベルのコンテンツスイッチングの場合、単一のクライアントTCP接続を、要求ごとに異なるバックエンドTCP接続に負荷分散することができます。AppFlowは、各トランザクションのレコードのセットを提供します。

フローレコード

AppFlow レコードには、フローの開始と終了のタイムスタンプ、パケットカウント、バイトカウントなど、標準の NetFlow または IPFIX 情報が含まれます。AppFlowレコードには、アプリケーションレベルの情報(HTTP URL、HTTP要求メソッドと応答ステータスコード、サーバーの応答時間、待機時間など)も含まれます。Webページのパフォーマンスデータ(ページの読み込み時間、ページのレンダリング時間、ページで費やされた時間など)。およびデータベース情報(データベースプロトコル、データベース応答ステータス、データベース応答サイズなど)。IPFIX フローレコードは、フローレコードを送信する前に送信する必要があるテンプレートに基づいています。

テンプレート

AppFlowでは、フローのタイプごとにテンプレートのセットを定義します。各テンプレートには、標準の情報要素(IE)とエンタープライズ固有の情報要素(EIE)のセットが含まれています。IPFIXテンプレートは、フローレコード内の情報要素(Internet Explorer)の順序とサイズを定義します。テンプレートは、RFC 5101 で説明されているように、定期的にコレクタに送信されます。

テンプレートには、次の EIE を含めることができます。

  • transactionID

    アプリケーションレベルのトランザクションを識別する符号なし 32 ビットの数値。HTTPの場合、これは要求と応答のペアに対応します。この要求と応答のペアに対応するすべてのフローレコードは、同じトランザクション ID を持ちます。最も一般的なケースでは、このトランザクションに対応するuniflowレコードが 4 つあります。Citrix ADCがそれ自体で(統合キャッシュまたはセキュリティポリシーによって提供される)応答を生成する場合、このトランザクションのフローレコードは2つしかない可能性があります。

  • connectionID

    レイヤ 4 接続(TCP または UDP)を識別する符号なし 32 ビットの数値。Citrix ADCフローは双方向であり、フローの方向ごとに2つの個別のフローレコードがあります。この情報要素は、2 つのフローをリンクするために使用できます。

    Citrix ADCの場合、connectionIDは、接続の進行状況を追跡するための接続データ構造の識別子です。たとえば、HTTPトランザクションでは、特定のconnectionIDに、その接続で行われた複数の要求に対応する複数のtransactionID要素が含まれる場合があります。

  • tcpRTT

    TCP 接続で測定されたラウンドトリップ時間(ミリ秒単位)。これは、ネットワーク上のクライアントまたはサーバーの遅延を判断するためのメトリックとして使用できます。

  • httpRequestMethod

    トランザクションで使用される HTTP メソッドを示す 8 ビットの数値。番号から方式へのマッピングを含むオプションテンプレートが、テンプレートとともに送信されます。

  • 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 ビットの数値。有効な値は、MS SQL の場合は 1、MySQL の場合は 2 です。

  • dbReqType

    トランザクションで使用されるデータベース要求メソッドを示す符号なしの 8 ビットの数値。MS SQL の場合、有効な値は 1 がクエリの場合、2 がトランザクションの場合、3 が RPC の場合、です。MySQL の有効な値については、MySQL のドキュメントを参照してください。

  • dbReqString

    ヘッダーのないデータベース要求文字列を示します。

  • dbRespStatus

    Web サーバから受信したデータベース応答のステータスを示す符号なし 64 ビットの数値。

  • dbRespLength

    応答サイズを示す符号なし 64 ビットの数値。

  • dbRespStatString

    Web サーバから受信した応答ステータス文字列。

AppFlow