ADC

Exportez les journaux de transactions directement de NetScaler vers Splunk

Vous pouvez désormais exporter des journaux de transactions depuis NetScaler vers des plateformes d’agrégation de journaux standard telles que Splunk. Le journal des transactions est l’enregistrement des événements du flux de trafic des applications sur le NetScaler, tels que les requêtes et réponses HTTP, le début et la fin de la connexion. Pour plus d’informations sur les journaux de transactions, consultez AppFlow.

Vous pouvez exporter les journaux de transactions au format JSON pour obtenir différentes informations telles que Web Insight, la sécurité, la passerelle, HDX Insights. Pour exporter des journaux de transactions vers Splunk, vous devez configurer Splunk en tant que serveur HTTP et utiliser le collecteur d’événements HTTP pour envoyer les journaux de transactions via HTTP (ou HTTPS) directement à la plateforme Splunk depuis votre NetScaler. À l’aide des outils de visualisation de Splunk, vous pouvez obtenir des informations pertinentes sur les données exportées.

Remarque :

Les adresses IP exportées dans le cadre des journaux de transactions apparaissent au format décimal au lieu du format standard. Par exemple, si votre adresse IP NetScaler est 10.102.154.153, la même adresse dans les journaux de transactions de Splunk s’affiche sous la forme 174496409. Vous pouvez utiliser les expressions intégrées disponibles sur Splunk pour convertir l’adresse IP du format décimal au format standard.

Exportez les journaux de transactions de NetScaler vers Splunk configuré en tant que serveur HTTP

Pour configurer l’exportation des journaux de transactions, vous devez suivre les étapes suivantes :

  1. Configurez un collecteur d’événements HTTP sur Splunk.
  2. Créez un service de collecte et un profil d’analyse sur NetScaler.

Configurer un collecteur d’événements HTTP sur Splunk

Vous pouvez transmettre les journaux de transactions à Splunk en configurant un collecteur d’événements HTTP. La configuration du collecteur d’événements HTTP implique la création d’un jeton d’authentification et l’association d’un index d’événements au jeton d’envoi des événements, ainsi que la définition du numéro de port HTTP. Pour plus d’informations sur la configuration du collecteur d’événements HTTP, consultez la documentation Splunk.

Une fois que vous avez configuré le collecteur d’événements HTTP, copiez le jeton d’authentification et enregistrez-le pour référence. Vous devez spécifier ce jeton lors de la configuration du profil d’analyse sur NetScaler.

Configurer le profil d’analyse sur NetScaler

Procédez comme suit pour exporter les journaux de transactions NetScaler vers Splunk.

  1. Créez un service de collecte pour Splunk.

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

    Exemple :

    add service splunk_service 10.102.34.155 HTTP 8088
    

    Dans cette configuration :

    • adresse IP : adresse IP du serveur Splunk.
    • collector-name : nom du collecteur.
    • protocole : spécifiez le protocole HTTP ou SSL.
    • port : numéro de port.
  2. Créez un profil analytique.

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

    Exemple :

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

    Remarque :

    L’option -allHttpHeaders est prise en charge pour l’exportation des journaux de transactions Splunk dans NetScaler 14.1-25.x et versions ultérieures.

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

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

    Dans cette configuration :

    • insight : types d’informations que vous pouvez exporter Les options suivantes sont disponibles :
      • aperçu des robots
      • Aperçu de la CIA
      • Gateway Insight
      • aperçu hdx
      • aperçu du LSN
      • aperçu de la sécurité
      • tcpinsight
      • uppinsight
      • aperçu vidéo
      • webinsight
    • -Paramètres d’autorisation du schéma d’authentification -AnalyticsAuthToke : spécifiez le jeton d’authentification à inclure dans l’en-tête d’autorisation avec le schéma d’authentification « Splunk » lors de l’envoi de journaux à Splunk. Ce jeton est le jeton d’authentification créé sur le serveur Splunk lors de la configuration du collecteur d’événements HTTP.

    • AnalyticSendpointContentType : en-tête Content-Type. La valeur codée en dur est application/json.

    • AnalyticSendpointUrl : chemin d’accès à HEC sur Splunk (/services/collector/event ou /services/collector).

      REMARQUE :

      Vous pouvez modifier les paramètres du profil d’analyse à l’aide de la commande set analytics profile.

    • DataFormatFile : fichier qui contient les détails des données du journal des transactions qui doivent être exportées et dans quel format. Chaque point de terminaison s’attend à ce que la charge utile JSON soit codée dans un format spécifique. Si le format n’est pas spécifié, splunk_format.txt est sélectionné par défaut.
  3. Vérifiez la configuration du profil d’analyse à l’aide de la commande 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. Liez le profil d’analyse au serveur virtuel.

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

    Exemple :

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

Une fois la configuration réussie, en fonction du trafic, les transactions seront enregistrées et exportées vers HEC sur Splunk.

Filtrage par champs des enregistrements de données

Par défaut, NetScaler exporte des centaines de champs dans le journal des transactions, même lorsque les terminaux n’ont pas besoin de toutes les données exportées. En outre, chaque point de terminaison s’attend à ce que la charge utile JSON soit codée dans un format spécifique, tel que le début et la fin d’un enregistrement de données, le délimiteur entre les enregistrements de données et le début et la fin de la mémoire tampon.

Splunk s’attend à ce que la charge utile JSON provenant de NetScaler soit encodée dans le format suivant :

  • Début et fin de la mémoire tampon : aucune valeur n’est requise pour BUFFER-START et BUFFER-END.
  • Début et fin de l’enregistrement de données : L’enregistrement de données doit commencer par {"event":{ et se terminer par }}. Tous les champs exportés doivent être compris entre DATA-START et DATA-END.

    Les enregistrements de données doivent commencer par les éléments suivants :

     RECORD-START
     {"event":{
     DATA_START
    

    Les enregistrements de données doivent se terminer par les mots suivants :

     DATA-END
     }}
     RECORD-END
    
  • Délimiteur entre les enregistrements de données : aucun délimiteur n’est requis.

Par défaut, splunk_format.txt est disponible dans un dossier var/analytics_conf contenant le format de charge utile JSON attendu par Splunk et contenant également quelques champs par défaut pour lesquels les données sont exportées. Vous pouvez configurer splunk_format.txt comme valeur du paramètre -dataFormatFile dans la commande add analytics profile.

Voici un exemple de fichier de format de données pour 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

Le fichier JSON_fields.txt sous var/analytics_conf est un fichier principal de référence qui contient la liste complète des champs ainsi que leurs numéros d’identification. Les champs du fichier principal sont classés en fonction des informations. Par exemple, si vous souhaitez connaître les champs associés à HDX Insight, vous pouvez consulter la catégorie HDX Insights de fichier JSON_fields.txt.

Vous pouvez personnaliser le fichier splunk_format.txt en fonction de vos besoins. Par exemple, si vous souhaitez exporter HDX Insights, vous pouvez consulter la catégorie HDX Insights dans le fichier JSON_fields.txt et ajouter les champs obligatoires dans le fichier splunk_format.txt. De même, vous pouvez supprimer tous les champs que vous ne souhaitez pas exporter.

Après avoir personnalisé le fichier splunk_format.txt, exécutez la commande suivante pour mettre à jour le profil analytique :

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

Exemple :

update analytics profile ns _analytics_ default_http_profile -dataFormatFile splunk_format.txt

Vous pouvez également spécifier la valeur du fichier de format de données à l’aide de l’interface graphique. Accédez à Système > AppFlow > Profils analytiques et cliquez sur Ajouter. Sur la page Créer un profil Analytics, si vous sélectionnez l’une des options suivantes pour Type, le champ Fichier de format de données apparaît dans lequel vous pouvez spécifier le nom du fichier :

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

Sorties d’échantillons

Cette section contient des exemples de résultats pour différents journaux de transactions.

Exemple de sortie du journal des transactions HTTP

Voici un exemple de sortie pour le journal des transactions 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
}

Exemple de sortie du journal des transactions TCP

Voici un exemple de sortie pour le journal des transactions 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
}

Exemple de sortie du journal des transactions SSL

Voici un exemple de sortie pour le journal des transactions 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
}

Exemple de sortie du journal des transactions Web Insight

Voici un exemple de sortie pour le journal des transactions 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
}

Exemples de tableaux de bord pour les journaux de transactions

Les tableaux de bord suivants disponibles sur Splunk fournissent les données relatives aux journaux de transactions :

  • Tableau de bord NetScaler HTTP Insight
  • Tableau de bord NetScaler SSL Insight
  • Tableau de bord NetScaler TCP Insight

Pour plus d’informations, consultez la section Exemples de tableaux de bord sur Splunk.