ログのエクスポート
検索結果をオフラインで格納する場合、Oracle Log Analyticsでは、検索結果がカンマ区切り値(CSV)、JavaScript Object Notation (JSON)またはParquet形式でエクスポートされます。
トピック:
CLIを使用して問合せ結果をエクスポートするには、コマンドライン・リファレンスを参照してください。
コンソールから検索結果をエクスポートするには:
- ログを検索して目的の結果を取得します。
- 「アクション」をクリックし、「エクスポート」をクリックします。
- ファイル形式として、「カンマ区切り値」または「JavaScriptオブジェクト注釈」を選択します。
また、REST APIおよびCLIを使用して、検索結果をParquet形式でエクスポートできます。例は、ログのエクスポートの例を参照してください。
- ファイルの名前を入力し、「エクスポート」をクリックします。
レコードおよびヒストグラムのビジュアライゼーションの場合、検索結果は、時間、元のログ・コンテンツ、および選択したすべての表示フィールドに基づいてエクスポートされます。表のビジュアライゼーションの場合、検索結果は、時間および選択した表示フィールドに基づいてエクスポートされます。その他のビジュアライゼーションの場合、選択したビジュアライゼーションに表示される問合せの結果がエクスポートされます。
エクスポート限度
エクスポート結果をストリームできる場合、データ・ソースから取得された結果の最大数は1,000,000です。ストリームされない場合、最大数は次のとおりです。
- 500問合せに
link
コマンドが含まれている場合 - 10,000問合せに
link
コマンドが含まれていない場合 - 問合せに
head
、tail
、stats
などのコマンドが含まれている場合は、10,000。
大規模なエクスポート
Oracle Log Analyticsは、ログの検索および集計用に最適化されていますが、大量のデータのエクスポートには最適化されていません。大規模なエクスポートは、システムへの影響を最小限に抑えるために制限および調整されます。
エクスポート問合せの制限および制限
-
制限:
- 1秒当たり最大1つのエクスポート
- 1分当たり最大7エクスポート
- 15分当たり最大100個のエクスポート
-
許可されないコマンド:
大フィールドとは、大量のデータを保持するために使用されるフィールドです。リソース使用率が高いため、ログのエクスポートに使用される問合せの大きいフィールドでは、次のコマンドを使用できません。
extract jsonextract xmlextract eval/where substr replace reverse
また、問合せの大きいフィールドでは
LIKE
を使用しないでください。次に、大きなフィールドの例をいくつか示します。
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
大きいフィールドを一時変数に割り当てず、前述のコマンドで使用します。次のような操作から導出されたフィールドは、前述のコマンドでは使用できません。
message message || a, a || message, concat(message, a), concat(a, message), upper(message), lower(message), trim(message), ltrim(message), rtrim(message)
エクスポート問合せでワイルドカード問合せおよび
extract
やregex
などのコマンドを使用するかわりに、拡張フィールドを定義し、このような要件にそれらのフィールドを使用します。ソースでの拡張フィールドの使用を参照してください。 -
ログ・パーティション化を使用している場合:
テナントでログ・パーティション化を有効にしている場合は、エクスポート問合せに最大5個のログ・セットを含めることができます。
-
ストリーミング・エクスポートの問合せ:
sort
コマンドは、エクスポート問合せのストリーミングではサポートされていません。
ログのエクスポートの例
- CSV形式の特定のフィールドを含むログのエクスポート:
fields -,* 'User ID', 'Host IP Address', Status, Time
の必須フィールドのみを含めるように問合せ文字列を変更し、--output-format
パラメータを使用します。例: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
- 多数のログ(50,000ログ・レコード)のエクスポート:
--max-total-count
パラメータをoci log-analytics query export
とともに使用して、出力を50,000レコードに制限します。例:oci log-analytics query export --compartment-id $compartment_id --namespace-name $namespace_name --query-string $query_string --max-total-count 50000 --file $file
- 特定の日付範囲のログのエクスポート:
oci log-analytics query export
の--time-start
および--time-end
パラメータを使用します。例: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
- ログをparquet (pq)形式でエクスポート: API: ExportDetailsリファレンスおよびCLI: 問合せエクスポートを参照してください。
oci log-analytics query export --output-format PARQUET --compartment-id $compartment_id --namespace-name $namespace_name --query-string $query_string --file $file
エクスポートされたparquetファイルの読取り:
import pandas as pd table = pd.read_parquet('example.parquet')
Parquet表では、問合せ列の内部名が使用されます。列の表示名は、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 })