Citrix ADC

AppFlow

Citrix ADCアプライアンスは、データセンター内のすべてのアプリケーショントラフィックを一元的に制御します。これは、アプリケーションパフォーマンスの監視、分析、およびビジネスインテリジェンスアプリケーションにとって有効なフローとユーザーセッションレベルの情報を収集します。また、Web ページのパフォーマンスデータとデータベース情報も収集します。AppFlowは、RFC 5101で定義されているオープンなインターネット技術タスクフォース(IETF)標準であるインターネットプロトコルフロー情報エクスポート(IPFIX)形式を使用して情報を送信します。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アドレス、およびVIPからクライアントに流れます。フローは、次の 5 つのタプル(sourceIP、sourcePort、destIP、destPort、およびプロトコル)によって識別される IP パケットの単方向コレクションです。

次の図は、AppFlow 機能の仕組みを示しています。

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

フローシーケンス

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

フローレコードを形成するさまざまなフローは次のとおりです。

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

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

  • トランザクション ID

    アプリケーションレベルのトランザクションを識別する符号なし 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 ビットフラグ。

Web ページのパフォーマンスデータの 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