略過剖析器擴充功能和自訂剖析器的記錄驗證
自訂剖析器和剖析器擴充功能的驗證程序通常會對前 30 天的範例記錄檔進行嚴格檢查,確保功能完整性。不過,在某些情況下,即使驗證失敗,客戶可能仍需部署擴充功能,例如過去 30 天內未擷取任何記錄,或目前的記錄尚未反映新格式。
本文將說明以 API 為基礎的工作流程,略過剖析器擴充功能和自訂剖析器的強制記錄驗證。
| 元件 | 定義 |
| API 方法 | CreateParserExtension (適用於擴充功能) 或 CreateParser (適用於自訂剖析器)
|
| 略過標記 | validation_skipped
|
| 旗標類型 | 布林值 (預設值:false) |
| 範圍 | ParserExtension Proto (適用於擴充功能) 和 Parser Proto (適用於自訂剖析器) |
略過驗證後,剖析器會顯示 validation_skipped 狀態。由於這是非同步作業,因此對 Create API 的初始呼叫會顯示新狀態。不過,後續的 Get API 要求會在處理完畢後反映 validation_skipped 狀態。
API 執行
執行相關的 Create API 呼叫,並啟用 validation_skipped 旗標。即使系統完全沒有為客戶和記錄類型擷取任何記錄,您仍可使用這個標記,啟用自訂剖析器或擴充功能。
剖析器擴充功能的 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 專業人員尋求解答。