Citrix ADC

AppFlow

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

AppFlowは、転送プロトコルとしてUDPを使用して、収集されたデータ( フローレコードと呼ばれる)を1つ以上のIPv4コレクタに送信します。コレクターはフローレコードを集約し、リアルタイムレポートまたは履歴レポートを生成します。

AppFlowは、HTTP、SSL、TCP、SSL_TCPフロー、HDX Insight フローのトランザクションレベルでの可視性を提供します。監視対象のフロータイプのサンプリングとフィルタリングを行うことが可能です。

注:

HDX Insightの詳細については、HDX Insightを参照してください。

AppFlowは、アクションとポリシーを使用して、選択したフローのレコードを特定のコレクターセットに送信します。AppFlow アクションは、AppFlow レコードを受け取るコレクターのセットを指定します。Advanced 式に基づくポリシーは、関連付けられた 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 などのアプリケーションレベルのコンテンツスイッチングでは、1 つのクライアント 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 を持ちます。最も一般的なケースでは、このトランザクションに対応する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