Exporter les journaux

Si vous voulez stocker les résultats de recherche hors ligne, Oracle Log Analytics vous permet d'exporter les résultats de recherche au format Valeurs séparées par des virgules (CSV), JavaScript Object Notation (JSON) ou Parquet.

Rubriques :

Pour exporter les résultats d'interrogation à l'aide de l'interface de ligne de commande, voir Informations de référence sur la ligne de commande.

Pour exporter les résultats de recherche à partir de la console :

  1. Recherchez les journaux pour obtenir le résultat souhaité.
  2. Cliquez sur Actions, puis sur Exporter.
  3. Pour le format de fichier, sélectionnez Valeurs séparées par une virgule ou JSON.

    En outre, vous pouvez exporter les résultats de recherche au format Parquet à l'aide de l'API REST et de l'interface de ligne de commande. Pour un exemple, voir Exemples d'exportation de journaux.

  4. Entrez un nom pour le fichier et cliquez sur Exporter.

Dans le cas des visualisations Enregistrements et Histogramme, le résultat de la recherche est exporté en fonction de l'heure, du contenu du journal initial et de tous les champs d'affichage sélectionnés. Dans le cas de la visualisation Table, les résultats de la recherche sont exportés en fonction de l'heure et des champs d'affichage sélectionnés. Pour toute autre visualisation, les résultats de l'interrogation affichés dans la visualisation sélectionnée sont exportés.

Exporter les limites

Si le résultat de l'exportation peut être diffusé en continu, le nombre maximal de résultats extraits dans la source de données est 1 000 000. S'il n'est pas diffusé en continu, le nombre maximal est :

  • 500 si l'interrogation inclut la commande link
  • 10 000 si l'interrogation n'inclut pas la commande link
  • 10 000 si l'interrogation inclut des commandes telles que head, tail ou stats.

Exportations importantes

Oracle Log Analytics est optimisé pour la recherche et l'agrégation des journaux, mais pas pour l'exportation d'une grande quantité de données. Les exportations importantes sont limitées et ralenties afin de minimiser l'impact sur le système.

Restrictions et limites d'interrogation d'exportation

  • Limites :

    • Un maximum d'une exportation par seconde
    • Un maximum de 7 exportations par minute
    • Un maximum de 100 exportations par 15 minutes
  • Commandes non autorisées :

    Un champ Large est celui qui est utilisé pour contenir une grande quantité de données. Les commandes suivantes ne peuvent pas être utilisées avec des champs volumineux dans les interrogations utilisées pour exporter des journaux en raison d'une utilisation élevée des ressources.

    extract
    jsonextract
    xmlextract
    
    eval/where
       substr
       replace
       reverse

    En outre, évitez d'utiliser LIKE avec des champs volumineux dans votre interrogation.

    Voici quelques exemples de grands champs :

    Arguments
    Call Stack Trace
    Data Received
    Data Sent
    Environment
    Error Stack Dump
    Error Text
    Exception
    Message
    Original Log Content
    Resource Limit Settings
    SQL Bind Variables
    SQL Statement
    Stack Trace
    Supplemental Detail
    URI

    N'affectez pas de grands champs à des variables temporaires et utilisez-les avec les commandes ci-dessus. Un champ dérivé d'opérations telles que ci-dessous ne peut pas être utilisé avec les commandes ci-dessus :

    message
    message || a, 
    a || message, 
    concat(message, a), 
    concat(a, message), 
    upper(message), 
    lower(message), 
    trim(message), 
    ltrim(message), 
    rtrim(message)

    Au lieu d'utiliser des interrogations à caractère générique et des commandes telles que extract ou regex dans votre interrogation d'exportation, définissez des champs étendus et utilisez ces champs pour de telles exigences. Voir Utiliser des champs étendus dans les sources.

  • Si vous utilisez le partitionnement de journaux :

    Si vous avez activé le partitionnement de journaux dans votre locataire, vous pouvez inclure un maximum de 5 jeux de journaux dans l'interrogation d'exportation.

  • Interrogations pour l'exportation en continu :

    La commande sort n'est pas prise en charge dans les interrogations d'exportation en continu.

Exemples d'exportation de journaux

  • Exporter les journaux avec des champs spécifiques au format CSV : Modifiez la chaîne d'interrogation pour inclure uniquement les champs obligatoires avec fields -,* 'User ID', 'Host IP Address', Status, Time et utilisez le paramètre --output-format. Par exemple :
    oci log-analytics query export --output-format CSV --compartment-id $compartment_id --namespace-name $namespace_name --query-string "fields -,* 'User ID', 'Host IP Address', Status, Time" --file $file
  • Exporter un grand nombre de journaux (50 000 enregistrements de journal) : Utilisez le paramètre --max-total-count avec oci log-analytics query export pour limiter la sortie à 50 000 enregistrements. Par exemple :
    oci log-analytics query export --compartment-id $compartment_id --namespace-name $namespace_name --query-string $query_string --max-total-count 50000 --file $file
  • Exporter les journaux pour un intervalle de dates spécifique : Utilisez les paramètres --time-start et --time-end dans oci log-analytics query export. Par exemple :
    oci log-analytics query export --compartment-id $compartment_id --namespace-name $namespace_name --query-string $query_string --time-start 2024-12-15T20:30Z --time-end 2025-03-15T20:29Z --file $file
  • Exporter les journaux au format parquet (pq) : Voir API : Informations de référence sur ExportDetails et interface de ligne de commande : Exportation d'interrogation.
    oci log-analytics query export --output-format PARQUET --compartment-id $compartment_id --namespace-name $namespace_name --query-string $query_string --file $file

    Lire le fichier de parquet exporté :

    import pandas as pd
    table = pd.read_parquet('example.parquet')

    La table Parquet utilise des noms internes de colonne d'interrogation. Les noms d'affichage des colonnes sont stockés dans les métadonnées du fichier parquet.

    import json
    import pyarrow.parquet as pq
    metadata = pq.read_metadata('example.parquet').metadata
    fields = json.loads(metadata[b'parquet.avro.schema'])['fields']
    table.rename(columns={ field['name'] : field['doc'] for field in fields })