コンテンツにスキップ

データ転送


更新頻度が低く長期間保存が必要なデータ(ログなど)は、データ転送機能を使用してオブジェクトストレージに自動保存したり、Kafka などの外部システムにリアルタイム転送したりできます。この機能はルールに従って必要なデータをフィルタリングし、低コストでの長期アーカイブを実現すると同時に、その後の二次加工処理もサポートします。

ルールが有効になると、データ転送ページでクエリ期間とルールを設定することで、保存済みデータをすばやく検索できます。

機能の仕組み

データがオブジェクトストレージに転送される際のワークフローは次のとおりです。ルールに一致するユーザーが報告したデータは、まずサーバーのローカルディスクにある一時ファイルに行単位で書き込まれます。この一時ファイルのサイズがプリセット値(例:256MB)に達するか、または継続書き込み時間が設定時間(例:1時間)を超えると、システムは自動的に現在のファイルを閉じて新しい一時ファイルを作成し、データの受信を続行します。

同時に、バックグラウンドサービスがこれらの閉じられた一時ファイルを継続的にスキャンし、gzip 形式で圧縮してサイズを縮小した後、事前に定義されたパスルールに従って、指定されたオブジェクトストレージの場所にアップロードします。保存されたデータを検索する必要がある場合、システムは同じパスルールに従ってオブジェクトストレージ内の関連ファイルを特定し、それらをダウンロード、解凍し、入力された検索条件に1行ずつマッチングします。

ファイル形式の説明

オブジェクトストレージに最終的に保存されるファイル形式は、gzip 圧縮されています。解凍後、ファイルの内容は複数行のテキストとして表示され、各行は元のデータレコード1件に対応し、データは JSON 形式で完全に保存されます。ファイル内の空行はシステムによって自動的に無視されます。

典型的なログタイプのデータ転送ファイルは次のようになります。

そのうち date は必須フィールドで、データの時刻をミリ秒単位の unix タイムスタンプで識別し、message フィールドは具体的なログ内容です。

{"__docid":"L_1750649205520_d1cciupkac7k1683bhq0","__namespace":"backup_log","date":1750649205520,"date_ns":168000,"df_metering_size":-9223372036854775808,"filepath":"/var/log/datakit/gin.log","host":"X.local","log_read_lines":2,"message":"[GIN] 2025/06/23 - 11:26:43 | 200 | 1.012923708s |       127.0.0.1 | GET     \"/metrics\"","message_length":87,"service":"default","source":"default","status":"unknown"}

{"__docid":"L_1750649205516_d1cciupkac7k1683bhqg","__namespace":"backup_log","date":1750649205516,"date_ns":897000,"df_metering_size":-9223372036854775808,"filepath":"/var/log/datakit/gin.log","host":"X.local","log_read_lines":1,"message":"[GIN] 2025/06/23 - 11:26:38 | 200 | 1.012696542s |       127.0.0.1 | GET     \"/metrics\"","message_length":87,"service":"default","source":"default","status":"unknown"}

{"__docid":"L_1750649206520_d1cciupkac7k1683bhr0","__namespace":"backup_log","date":1750649206520,"date_ns":948000,"df_metering_size":-9223372036854775808,"filepath":"/var/log/datakit/log","host":"X.local","log_read_lines":150,"message":"2025-06-23T11:26:46.520+0800\tWARN\thost_processes\tprocess/input.go:332\tprocess: {\"pid\":411}, proc.PageFaults(): not implemented yet","message_length":130,"service":"default","source":"default","status":"unknown"}

{"__docid":"L_1750649205520_d1cciupkac7k1683bhrg","__namespace":"backup_log","date":1750649205520,"date_ns":419000,"df_metering_size":-9223372036854775808,"filepath":"/var/log/datakit/log","host":"X.local","log_read_lines":9,"message":"2025-06-23T11:26:43.876+0800\tWARN\tcontainer\tcontainer/impl.go:254\tendpoint unix:///var/run/crio/crio.sock does not exist, maybe it is not running, skip","message_length":151,"service":"default","source":"default","status":"unknown"}

{"__docid":"L_1750649205517_d1cciupkac7k1683bhs0","__namespace":"backup_log","date":1750649205517,"date_ns":79000,"df_metering_size":-9223372036854775808,"filepath":"/var/log/datakit/log","host":"X.local","log_read_lines":1,"message":"2025-06-23T11:26:38.365+0800\tWARN\thttp\thttpapi/http.go:494\tlistener.Close failed: close tcp [::]:9529: use of closed network connection","message_length":135,"service":"default","source":"default","status":"unknown"}
{"__docid":"L_1750649205517_d1cciupkac7k1683bhsg","__namespace":"backup_log","date":1750649205517,"date_ns":80000,"df_metering_size":-9223372036854775808,"filepath":"/var/log/datakit/log","host":"X.local","log_read_lines":2,"message":"2025-06-23T11:26:38.365+0800\tWARN\thttp\thttpapi/http.go:494\tlistener.Close failed: close tcp [::]:9529: use of closed network connection","message_length":135,"service":"default","source":"default","status":"unknown"}

ファイル命名と保存パス

[{$path_prefix}/]{$workspace_uuid}/[{$data_type}/]

{$rule_name}/{$year}/{$month}/{$day}/{$hour}/{$time}-{$hostname}.gz

[] で囲まれた部分は「オプション」を示します。詳細は以下の説明を参照してください。

変数
説明
サンプル 備考
$path_prefix パスプレフィックス path/to/backup オプション。バックアップルール作成時のストレージパスオプションに対応します。
オブジェクトストレージは / で始まるキーをサポートしていないため、/ で始めないでください。
$workspace_uuid ワークスペース ID wksp_d9a1851859e040469d290409bc17cceb
$data_type バックアップデータタイプ。指定可能な値:

  • logging:ログ
  • rum:リアルユーザーモニタリング(RUM)
  • tracing:分散型トレーシング(tracing)
  • event:イベント
  • audit_event:監査イベント
  • tracing ログはデフォルトのデータタイプであるため、ログタイプデータの場合は {$data_type}/(すなわち logging/)部分を省略する必要があります。
    $rule_name ルール名 backup_logging_for_test ルール作成時のルール名オプションに対応します。
    英語での使用を推奨します。
    $year ログ発生時刻の年(4桁) 2025 UTC タイムゾーン
    $month ログ発生時刻の月(2桁) 03 UTC タイムゾーン
    $day ログ発生時刻の日(2桁) 01 UTC タイムゾーン
    $hour ログ発生時刻の時(2桁) 22 UTC タイムゾーン
    $time ファイル内の最後のログの発生時刻
    形式:時時分分秒秒 + ミリ秒3桁
    220607889 UTC タイムゾーン
    $hostname ホスト名を MD5 計算し、先頭16文字を取得 c6a92aafa992599c ファイルを手動で構築する場合は、現在のファイルの crc64 を使用するか、
    64ビットの乱数をランダム生成して16進数に変換してください。

    パスの例:

    wksp_d9a1851859e040469d290409bc17cceb/backup_logging_for_test/2025/05/06/17/175950000-c6a92aafa992599c.gz

    path/to/backup/wksp_d9a1851859e040469d290409bc17cceb/tracing/test-minio/2025/05/06/17/175950000-c6a92aafa992599c.gz

    ファイル分割ルール
    • 時間境界:単一ファイルには同じ時間内のログのみが含まれ、時間をまたぐことはありません。
    • サイズ境界:未圧縮の元のファイルは 256 MB~512 MB に制御され、gzip 圧縮後は通常数十 MB~数百 MB になります。大きすぎたり小さすぎたりすると、検索効率が低下します。

    外部ファイルをデータ転送ルールで生成された形式とパスルールに従ってオブジェクトストレージにアップロードすると、コンソールは同じ方法で検索および表示を行います。

    はじめに

    転送ルールを作成

    転送先の種類に基づいて、ビジネスニーズに合ったデータ転送ルールを確立します。

    種類 転送先
    内蔵ストレージ Guance
    オブジェクトストレージ AWS S3Huawei Cloud OBSAlibaba Cloud OSSVolcengine TOSGoogle Cloud GCS
    分析プラットフォーム Apache DorisTiDB Cloud Lake
    メッセージキュー Kafka

    転送ルールを管理

    データ転送ルール一覧では、一連の操作を通じて管理を行うことができます。

    フィードバック

    このページは役に立ちましたか?