パーサー拡張機能とカスタム パーサーのログ検証をバイパスする

以下でサポートされています。

カスタム パーサーとパーサー拡張機能の検証プロセスでは通常、機能の完全性を確保するために、過去 30 日間のサンプルログに対して厳密なチェックが実施されます。ただし、過去 30 日間にログが取り込まれていない場合や、現在のログに新しい形式がまだ反映されていない場合など、検証に失敗しても拡張機能をデプロイする必要があるシナリオもあります。

このドキュメントでは、パーサー拡張機能とカスタム パーサーの必須ログ検証をバイパスする API ベースのワークフローの概要について説明します。

コンポーネント 定義
API メソッド CreateParserExtension(拡張機能の場合)または CreateParser(カスタム パーサーの場合)
バイパス フラグ validation_skipped
フラグの種類 ブール値(デフォルト: false)
スコープ ParserExtension プロトコル(拡張機能用)と Parser プロトコル(カスタム パーサー用)

検証をスキップすると、パーサーは validation_skipped ステータスとして表示されます。これは非同期オペレーションであるため、Create API の最初の呼び出しでは新しい状態が表示されます。ただし、後続の Get API リクエストでは、処理後に validation_skipped ステータスが反映されます。

API の実行

validation_skipped フラグを有効にして、関連する Create API 呼び出しを実行します。このフラグを使用すると、お客様とログタイプに対してログがまったく取り込まれていない場合でも、カスタム パーサーまたは拡張機能を有効にできます。

パーサー拡張機能の API の例

  • CreateParserExtension リクエスト

    parent:    "projects/dummy/locations/us/instances/dummy/logTypes/dummy"
    parser_extension {
      cbn_snippet: "# Author:dummy@google.com\n# Note: Pls don\'t delete or update.\n\nfilter {\n  mutate {\n    convert => {\n      \"message\" => \"integer\"\n    }\n  }\n   mutate {\n    merge => {\n      \"@output\" => \"event\"\n    }\n  }\n}"
      validation_skipped: true
    }
    
  • CreateParserExtension のレスポンス

    google.cloud.chronicle.v1main.ParserExtension { # [619B]
    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"
    state: NEW
    create_time: { # [12B]
    seconds: 1775133417
    nanos: 697098000
    }
    cbn_snippet: "# Author:dummy@google.com\n# Note: Pls don\'t delete or update.\n\nfilter {\n  mutate {\n    convert => {\n      \"message\" => \"integer\"\n    }\n  }\n   mutate {\n    merge => {\n      \"@output\" => \"event\"\n    }\n  }\n}"
    extension_validation_report:
    "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy/extensionValidationReports/dummy"
    validation_skipped: true
    }
    
  • GetParserExtension リクエスト

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"
    
  • GetParserExtension のレスポンス

    google.cloud.chronicle.v1main.ParserExtension { # [862B]
    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"
    state: VALIDATION_SKIPPED
    create_time: { # [12B]
    seconds: 1775133417
    nanos: 697098000
    }
    cbn_snippet: "# Author:dummy@google.com\n# Note: Pls don\'t delete or update.\n\nfilter {\n  mutate {\n    convert => {\n      \"message\" => \"integer\"\n    }\n  }\n   mutate {\n    merge => {\n      \"@output\" => \"event\"\n    }\n  }\n}"
    extension_validation_report: 
    "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy/extensionValidationReports/dummy"
    validation_report:"projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy/validationReports/dummy"
    state_last_changed_time: { # [12B]
    seconds: 1775133417
    nanos: 976250000
    }
    last_live_time: { # [11B]
    seconds: 1775133418
    nanos: 189172000
    }
    validation_skipped: true
    }
    

パーサー拡張機能を作成したら、ActivateParserExtension メソッドを使用してデプロイできます。

カスタム パーサーの API の例

  • CreateParser リクエスト

    parent: "projects/dummy/locations/us/instances/dummy/logTypes/dummy"
    parser: { # [260B]
    cbn: "# Author: dummy@google.com\n# Note: Pls don\'t delete or update. This is used by normalizer custom prober.\n\nfilter {\n  mutate {\n    convert => {\n      \"message\" => \"integer\"\n    }\n  }\n   mutate {\n    merge => {\n      \"@output\" => \"event\"\n    }\n  }\n}"
    validation_skipped: true
    }
    
  • CreateParser のレスポンス

    google.cloud.chronicle.v1main.Parser { # [489B]
    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"
    creator: { # [85B]
    customer:"projects/dummy/locations/us/instances/dummy"
    source: CUSTOMER
    }
    cbn: "# Author: dummy@google.com\n# Note: Pls don\'t delete or update. This is used by normalizer custom prober.\n\nfilter {\n  mutate {\n    convert => {\n      \"message\" => \"integer\"\n    }\n  }\n   mutate {\n    merge => {\n      \"@output\" => \"event\"\n    }\n  }\n}"
    changelogs: { # [0B]
    }
    validation_stage: NEW
    type: CUSTOM
    state: INACTIVE
    validation_skipped: true
    }
    
  • GetParser リクエスト

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"
    
  • GetParser のレスポンス

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"
    creator: { # [85B]
    customer:"projects/dummy/locations/us/instances/dummy"
    source: CUSTOMER
    }
    cbn: "# Author:dummy@google.com\n# Note: Pls don\'t delete or update. This is used by normalizer custom prober.\n\nfilter {\n  mutate {\n    convert => {\n      \"message\" => \"integer\"\n    }\n  }\n   mutate {\n    merge => {\n      \"@output\" => \"event\"\n    }\n  }\n}"
    create_time: { # [12B]
    seconds: 1775135466
    nanos: 795092000
    }
    changelogs: { # [0B]
    }
    validation_stage: VALIDATION_SKIPPED
    type: CUSTOM
    state: INACTIVE
    validation_report:"projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy/validationReports/dummy"
    

カスタム パーサーを作成したら、ActivateParser メソッドを使用してデプロイできます。

不承認の条件とリスク

  • validation_skipped フラグを使用すると、サンプルログに対するチェックをバイパスできますが、破損したコードをデプロイすることはできません。拡張機能またはパーサーのコードに構文関連のエラーが含まれている場合、拡張機能またはカスタム パーサーは引き続き拒否されます。スキップ オプションは、拡張機能の構文は正しいが、解析ロジックまたはログの不足により失敗している場合にのみ有効です。

  • validation_skipped フラグが原因でシステムの問題やパフォーマンスの低下が発生した場合は、Google の内部エンジニアリング チームによって無効化されることがあります。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。