ADC

トランザクションログをNetScalerからSplunkに直接エクスポートする

NetScalerからSplunkなどの業界標準のログアグリゲータープラットフォームにトランザクションログをエクスポートできるようになりました。トランザクションログは、HTTP要求と応答、接続の開始と終了など、NetScaler上のアプリケーショントラフィックフローイベントの記録です。トランザクションログの詳細については、「 AppFlow」を参照してください。

Web Insight、セキュリティ、ゲートウェイ、HDXインサイトなどのさまざまなインサイト用にトランザクションログをJSON形式でエクスポートできます。トランザクションログをSplunkにエクスポートするには、SplunkをHTTPサーバーとして構成し、HTTPイベントコレクターを使用してトランザクションログをHTTP (またはHTTPS) 経由でNetScalerからSplunkプラットフォームに直接送信する必要があります。Splunkの視覚化ツールを使用すると、エクスポートされたデータについて有意義な洞察を得ることができます。

注:

トランザクションログの一部としてエクスポートされる IP アドレスは、標準形式ではなく 10 進形式で表示されます。たとえば、NetScaler の IP アドレスが 10.102.154.153 の場合、Splunk のトランザクションログには同じアドレスが 174496409 と表示されます。Splunkに組み込まれている式を使用して、IPアドレスを10進形式から標準形式に変換できます。

NetScalerからHTTPサーバーとして構成されたSplunkにトランザクションログをエクスポートします

トランザクションログのエクスポートを設定するには、次の手順を実行する必要があります:

  1. Splunk で HTTP イベントコレクターを設定します。
  2. NetScalerでコレクターサービスと分析プロファイルを作成します。

Splunk での HTTP イベントコレクターの設定

HTTP イベントコレクターを設定することで、トランザクションログを Splunk に転送できます。HTTP イベントコレクタを設定するには、認証トークンを作成し、イベントが送信されるトークンにイベントインデックスを関連付け、HTTP ポート番号を設定する必要があります。HTTP イベントコレクターの設定方法については、 Splunk のドキュメントを参照してください

HTTP イベントコレクターを設定したら、認証トークンをコピーして参照用に保存します。NetScalerで分析プロファイルを構成する際には、このトークンを指定する必要があります。

NetScaler でアナリティクスプロファイルを設定する

NetScalerのトランザクションログをSplunkにエクスポートするには、次の操作を行います。

  1. Splunk 用のコレクターサービスを作成します。

    add service <collector> <splunk-server-ip-address> <protocol> <port>
    

    例:

    add service splunk_service 10.102.34.155 HTTP 8088
    

    この構成では:

    • IPアドレス:SplunkサーバーのIPアドレス。
    • コレクター名:コレクターの名前。
    • プロトコル:プロトコルを HTTP または SSL として指定します。
    • ポート:ポート番号。
  2. 分析プロファイルを作成します。

    add analytics profile `profile-name` -type <insight> -collectors `collector-name` -analyticsAuthToken `<auth-scheme> <authorization-parameters>` -analyticsEndpointContentType `application/json` -analyticsEndpointUrl `endpoint-url`
    

    例:

    add analytics profile transaction-log-profile -type webinsight -collectors splunk_collector -analyticsAuthToken "Splunk 1234-5678-12345" -analyticsEndpointContentType "application/json" -analyticsEndpointUrl "/services/collector/event"
    

    注:

    -allHttpHeadersオプションは、NetScaler 14.1-25.x以降でのSplunkトランザクションログのエクスポートでサポートされています。

    add analytics profile <profile-name> -type webinsight -allHttpHeaders

    set analytics profile <profile-name> -type webinsight -allHttpHeaders

    この構成では:

    • Insight:エクスポートできるインサイトの種類次のオプションを使用できます:
      • botinsight
      • CIinsight
      • Gatewayinsight
      • hdxinsight
      • lsninsight
      • securityinsight
      • tcpinsight
      • udpinsight
      • videoinsight
      • webinsight
    • -AnalyticsAuthToke認証スキーム認証パラメーター:Splunkにログを送信する際に、認証スキーム「Splunk」を使用して認証ヘッダーに含める認証トークンを指定します。このトークンは、HTTP イベントコレクターの設定時に Splunk サーバーで作成される認証トークンです。

    • アナリティクスエンドポイントコンテンツタイプ:コンテンツタイプヘッダー。ハードコードされた値は application/json です。

    • AnalyticsEndpointURL: Splunk 上の HEC へのパス (/サービス/コレクター/イベントまたは /サービス/コレクター)。

      注:

      分析プロファイルのパラメーターは、 set analytics profile コマンドを使用して変更できます。

    • dataFormatFile: トランザクションログのどのデータをどの形式でエクスポートする必要があるかの詳細を含むファイル。各エンドポイントは、JSON ペイロードが特定の形式でエンコードされることを想定しています。形式が指定されていない場合は、デフォルトでsplunk_format.txtが選択されます。
  3. show analytics profile コマンドを使用して、アナリティクスプロファイルの設定を確認します。

    > sh analytics profile 
        
    ns_analytics_default_http_profile
    1)      Name: ns_analytics_default_http_profile
            Collector: splunk
            Profile-type: webinsight
                    Page Tracking: DISABLED
                    Client Side Measurements: DISABLED
                    URL Logging: ENABLED
                    Host Header Logging: ENABLED
                    Method Logging: ENABLED
                    Cookie Header Logging: DISABLED
                    Referer Header Logging: DISABLED
                    User Agent Logging: DISABLED
                    Content Type Logging: DISABLED
                    Authorization Header Logging: DISABLED
                    Via Header Logging: DISABLED
                    Location Header Logging: DISABLED
                    URL Category Logging: DISABLED
                    Log All HTTP Headers: DISABLED
                    X-Forwarded-For Header Logging: DISABLED
                    Set-Cookie Header Logging: DISABLED
                    Set-Cookie2 Header Logging: DISABLED
                    Domain Name Logging: DISABLED
                    URL-Query Logging: DISABLED
                    Integrated Cache Logging: DISABLED
                    gRPC Status Logging: DISABLED
                    API Spec Info Export Logging: DISABLED
            Authentication Token:
            Endpoint URL: /services/collector/event
            Endpoint Content-type: text/json
            Reference Count: 1
            Managementlog: NONE
    
  4. 分析プロファイルを仮想サーバーにバインドします。

    bind lb vserver <vserver-name> -analyticsProfile transaction-log-profile
    

    例:

    bind lb vserver sample-virtualserver -analyticsProfile transaction-log-profile
    

構成が成功すると、トラフィックに基づいてトランザクションが記録され、SplunkのHECにエクスポートされます。

データレコードのフィールドベースのフィルタリング

デフォルトでは、エンドポイントがエクスポートされたデータのすべてを必要としない場合でも、NetScalerはトランザクションログの何百ものフィールドをエクスポートします。また、各エンドポイントは、JSON ペイロードがデータレコードの開始と終了、データレコード間の区切り文字、バッファーの開始と終了などの特定の形式でエンコードされていることを想定しています。

Splunkは、NetScalerから送信されるJSONペイロードが次の形式でエンコードされることを想定しています

  • バッファーの開始と終了:BUFFER-STARTおよびBUFFER-ENDには値は必要ありません。
  • データレコードの開始と終了:データレコードは{"event":{で始まり 、}}で終わる必要があります 。エクスポートされるすべてのフィールドは、DATA-STARTDATA-ENDの間にある必要があります 。

    データレコードは次の文字で始まる必要があります:

     RECORD-START
     {"event":{
     DATA_START
    

    データレコードは次の文字で終わる必要があります:

     DATA-END
     }}
     RECORD-END
    
  • データレコード間の区切り文字:区切り文字は必要ありません。

デフォルトでは、splunk_format.txtはSplunkが想定するJSONペイロード形式を含むvar/analytics_confフォルダーにあり、データがエクスポートされるいくつかのデフォルトフィールドも含まれています。add analytics profileコマンドの-dataFormatFileパラメータの値としてsplunk_format.txtを設定できます。

Splunk のサンプルデータフォーマットファイルを次に示します:

    BUFFER-START
    RECORD-START
    {"event":{
    DATA-START
    153 observationPointId
    547 nsPartitionId
    154 exportingProcessId
    159 transactionId
    801 httpReqUrl
    685 httpReqMethod
    683 httpReqHost
    472 svrDstIpv4Address
    579 srvSrcPort
    580 srvDstPort
    13 backendSvrIpv6Address
    473 cltIpv4Address
    474 cltDstIpv4Address
    577 cltSrcPort
    578 cltDstPort
    14 transCltIpv6Address
    15 transCltDstIpv6Address
    DATA-END
    }}
    RECORD-END
    RECORD-DELIMITER

    RECORD-DELIMITER-END
    BUFFER-END

var/analytics_conf下のJSON_fields.txtファイルは、フィールドの完全なリストとその ID 番号を含むリファレンスマスターファイルです。マスターファイル内のフィールドは、インサイトに基づいて分類されます。たとえば、HDX Insightに関連するフィールドを知りたい場合は、JSON_fields.txtファイルのHDXインサイトカテゴリを調べることができます。

要件に基づいてsplunk_format.txtファイルをカスタマイズできます。たとえば、HDX Insightsをエクスポートする場合は、JSON_fields.txtファイル内のHDX Insightsカテゴリを確認して、必須フィールドをsplunk_format.txtファイルに追加できます。同様に、エクスポートしたくないフィールドは削除できます。

splunk_format.txtファイルをカスタマイズしたら、次のコマンドを実行して Analytics プロファイルを更新します:

update analytics profile <profile-name> -dataFormatFile <data-format-file-name>

例:

update analytics profile ns _analytics_ default_http_profile -dataFormatFile splunk_format.txt

GUI を使用してデータ形式ファイルの値を指定することもできます。[ システム] > [AppFlow] > [アナリティクスプロファイル ] に移動し、[ 追加] をクリックします。「 Analytics プロファイルの作成 」ページで、「 タイプ」で次のオプションのいずれかを選択すると、ファイル名を指定できる「 データ形式ファイル 」フィールドが表示されます:

  • GLOBAL
  • WEB INSIGHT
  • TCP INSIGHT
  • SECURITY INSIGHT
  • VIDEO INSIGHT
  • HDX INSIGHT
  • GATEWAY INSIGHT
  • LSN INSIGHT
  • BOT INSIGHT
  • TIME SERIES

サンプル出力

このセクションには、さまざまなトランザクションログの出力例が含まれています。

HTTP トランザクションログのサンプル出力

以下は、HTTP トランザクションログの出力例です。

{
    appName: VS1
    clientMss: 1460
    clntFastRetxCount: 0
    clntTcpJitter: 0
    cintTcpPacketsRetransmited: 0
    clntTcpRtoCount: 0
    clntTcpZeroWindowCount: 0
    cltDstIpv4Address: 174496411
    cltIpv4Address: 174496407
    connEndTimestamp: 0
    connStartTimestamp: 7329468222993076980
    exportingProcessId: 0
    httpReqHost: 10.102.154.155
    httpReqMethod: GET
    httpReqUrl: /big.html
    httpRspLen: 114380
    httpRspStatus: 200
    mainPageCoreId: 0
    mainPageId: 0
    nsPartitionId: 0
    observationPointId: 174496409
    originRspLen: 0
    srvrIcpPacketsRetransmited: 0
    srvrTcpZeroWindowCount: 0
    svrDstIpv4Address: 174496415
    svrIpv4Address: 174496408
    tepSrvrConnRstCode: 0
    transClntRTT: 0
    transCltDstPort: 20480
    transCltFlowEndUsecRx: 7329468222993084980
    transCltFlowEndUsecTx: 7329468222993084980
    transCltFlowStartUsecRx: 7329468222993076980
    transCltFlowStartUsecTx: 7329468222993077984
    transCltSrcPort: 60315
    transCltTotRx0ctCnt: 1766
    transCltTotTx0ctCnt: 117580
    transSrvDstPort: 36895
    transSrvSrcPort: 15213
    transSrvrRTT: 0
    transSvrFlowEndUsecRx: 7329468222993084980
    transSvrFlowEndUsecTx: 7329468222993084980
    transSvrFlowStartUsecRx: 7329468222993077984
    transSvrFlowStartUsecTx: 0
    transSvrTotRx0ctCnt: 117580
    transSvrTotTx0ctCnt: 1766
    transactionId: 4890
}

TCP トランザクションログのサンプル出力

TCP トランザクションログの出力例を次に示します。

{
    appName: vs1
    clientConnEndTimestamp: 7333165210582386064
    clientConnStartTimestamp: 7333165210582386054
    clientMss: 1460
    clntFastRetxCount: 0
    clntTcpJitter: 0
    clntTcpPacketsRetransmited: 0
    clntTcpRtoCount: 0
    clntTcpZeroWindowCount: 0
    cltDstIpv4Address: 174496411
    cltDstPort: 20480
    cltIpv4Address: 174496407
    cltSrcPort: 42939
    connectionChainHopCount: 0
    exportingProcessId: 0
    nsPartitionId: 0
    observationPointId: 174496409
    serverConnEndTimestamp: 7333165201992708470
    serverConnStartTimestamp: 7333165201992708459
    srvDstPort: 36895
    srvSrcPort: 51973
    srvrTcpPacketsRetransmited: 0
    srvrTcpZeroWindowCount: 0
    svrDstIpv4Address: 174496415
    svrIpv4Address: 174496408
    tcpClntConnRstCode: 0
    tcpSrvrConnRstCode: 0
    transClntRTT: 0
    transCltTotRxOctCnt: 208
    transCltTotTxOctCnt: 331
    transSrvrRTT: 0
    transSvrTotRxOctCnt: 331
    transSvrTotTxOctCnt: 208
    transactionId: 330
    vlanNumber: 1
}

SSL トランザクションログのサンプル出力

SSL トランザクションログの出力例を次に示します。

{
    appName: sslvs
    clientConnEndTimestamp: 0
    clientConnStartTimestamp: 7333182669624439854
    clientMss: 1460
    clntFastRetxCount: 0
    clntTcpJitter: 0
    clntTcpPacketsRetransmited: 0
    clntTcpRtoCount: 0
    clntTcpZeroWindowCount: 0
    cltDstIpv4Address: 174496411
    cltDstPort: 47873
    cltIpv4Address: 174496407
    cltSrcPort: 17499
    connectionChainHopCount: 0
    exportingProcessId: 0
    httpContentType: text/html
    httpReqHost: 10.102.154.155
    httpReqMethod: GET
    httpReqUrl: /index.html
    httpReqUserAgent: curl/7.69.1
    httpRspLen: 291
    httpRspStatus: 200
    nsPartitionId: 0
    observationPointId: 174496409
    originRspLen: 0
    serverConnEndTimestamp: 0
    serverConnStartTimestamp: 7333182665330184556
    srvDstPort: 36895
    srvSrcPort: 34802
    srvrTcpPacketsRetransmited: 0
    srvrTcpZeroWindowCount: 0
    sslCipherValueBE: 0
    sslCipherValueFE: 50331701
    sslClientCertSizeBE: 0
    sslClientCertSizeFE: 0
    sslClntCertSigHashBE: 0
    sslClntCertSigHashFE: 0
    sslFLagsBE: 0
    sslFLagsFE: 1096
    sslServerCertSizeBE: 0
    sslServerCertSizeFE: 4096
    sslSessionIDBE: 0
    sslSessionIDFE: 2433458443
    sslSigHashAlgBE: 0
    sslSigHashAlgFE: 0
    sslSrvrCertSigHashBE: 0
    sslSrvrCertSigHashFE: 668
    svrDstIpv4Address: 174496415
    svrIpv4Address: 174496408
    tcpClntConnRstCode: 0
    tcpSrvrConnRstCode: 0
    transClntRTT: 0
    transCltFlowEndUsecRx: 7333182669624447854
    transCltFlowEndUsecTx: 7333182669624446854
    transCltFlowStartUsecRx: 7333182669624439854
    transCltFlowStartUsecTx: 7333182669624439854
    transCltTotRxOctCnt: 1501
    transCltTotTxOctCnt: 2223
    transSrvrRTT: 0
    transSvrFlowEndUsecRx: 7333182669624446854
    transSvrFlowEndUsecTx: 7333182669624446854
    transSvrFlowStartUsecRx: 7333182669624446854
    transSvrFlowStartUsecTx: 0
    transSvrTotRxOctCnt: 331
    transSvrTotTxOctCnt: 168
    transactionId: 2640
    vlanNumber: 1
}

Web Insight トランザクションログのサンプル出力

Web Insight トランザクションログの出力例を次に示します。

{
    appName: vs1
    clientConnEndTimestamp: 0
    clientConnStartTimestamp: 7333336201820249485
    clientMss: 1460
    clntFastRetxCount: 0
    clntTcpJitter: 0
    clntTcpPacketsRetransmited: 0
    clntTcpRtoCount: 0
    clntTcpZeroWindowCount: 0
    cltDstIpv4Address: 174496411
    cltDstPort: 20480
    cltIpv4Address: 174758625
    cltSrcPort: 46824
    connectionChainHopCount: 0
    exportingProcessId: 0
    httpContentType: text/html
    httpReqHost: 10.102.154.155
    httpReqMethod: GET
    httpReqUrl: /
    httpRspLen: 291
    httpRspStatus: 200
    nsPartitionId: 0
    observationPointId: 174496409
    originRspLen: 0
    serverConnEndTimestamp: 0
    serverConnStartTimestamp: 7333336201820250487
    srvDstPort: 36895
    srvSrcPort: 6465
    srvrTcpPacketsRetransmited: 0
    srvrTcpZeroWindowCount: 0
    svrDstIpv4Address: 174496415
    svrIpv4Address: 174496408
    tcpClntConnRstCode: 0
    tcpSrvrConnRstCode: 0
    transClntRTT: 0
    transCltFlowEndUsecRx: 7333336201820251488
    transCltFlowEndUsecTx: 7333336201820251488
    transCltFlowStartUsecRx: 7333336201820249485
    transCltFlowStartUsecTx: 7333336201820250487
    transCltTotRxOctCnt: 190
    transCltTotTxOctCnt: 371
    transSrvrRTT: 0
    transSvrFlowEndUsecRx: 7333336201820251488
    transSvrFlowEndUsecTx: 7333336201820250487
    transSvrFlowStartUsecRx: 7333336201820250487
    transSvrFlowStartUsecTx: 7333336201820250487
    transSvrTotRxOctCnt: 371
    transSvrTotTxOctCnt: 202
    transactionId: 11218
    vlanNumber: 1
}

トランザクションログのサンプルダッシュボード

Splunkで利用できる次のダッシュボードには、トランザクションログに関連するデータが表示されます:

  • NetScaler HTTP インサイトダッシュボード
  • NetScaler SSL Insightダッシュボード
  • NetScaler TCP Insightダッシュボード

詳細については、「 Splunk のサンプルダッシュボード」を参照してください。