パーサー拡張機能とカスタム パーサーのログ検証をバイパスする
カスタム パーサーとパーサー拡張機能の検証プロセスでは通常、機能の完全性を確保するために、過去 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 のプロフェッショナルから回答を得ることができます。