Log-Validierung für Parser-Erweiterungen und benutzerdefinierte Parser umgehen
Bei der Validierung des benutzerdefinierten Parsers und der Parsererweiterung werden in der Regel Beispielprotokolle der letzten 30 Tage gründlich geprüft, um die funktionale Integrität sicherzustellen. Es gibt jedoch Szenarien, in denen Kunden eine Erweiterung trotz Validierungsfehlern bereitstellen müssen, z. B. wenn in den letzten 30 Tagen keine Logs erfasst wurden oder wenn aktuelle Logs noch kein neues Format widerspiegeln.
In diesem Dokument wird der API-basierte Workflow zum Umgehen der obligatorischen Log-Validierung für Parser-Erweiterungen und benutzerdefinierte Parser beschrieben.
| Komponente | Definition |
| API-Methode | CreateParserExtension (für Erweiterungen) oder CreateParser (für benutzerdefinierte Parser)
|
| Umgehungsflag | validation_skipped
|
| Flag-Typ | Boolesch (Standard: „false“) |
| Umfang | ParserExtension-Proto (für Erweiterungen) und Parser-Proto (für benutzerdefinierte Parser) |
Wenn Sie die Validierung überspringen, wird der Parser mit dem Status validation_skipped angezeigt. Da es sich um einen asynchronen Vorgang handelt, wird bei ersten Aufrufen der Create API ein neuer Status angezeigt. Bei nachfolgenden Get API-Anfragen wird der Status validation_skipped jedoch nach der Verarbeitung berücksichtigt.
API-Ausführung
Führen Sie den entsprechenden Create API-Aufruf mit aktiviertem validation_skipped-Flag aus. Sie können dieses Flag verwenden, um den benutzerdefinierten Parser oder die benutzerdefinierte Erweiterung zu aktivieren, auch wenn für den Kunden und den Logtyp noch keine Logs erfasst wurden.
API-Beispiele für Parser-Erweiterungen
CreateParserExtensionAnfrageparent: "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 }Antwort für
CreateParserExtensiongoogle.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 }GetParserExtensionAnfragename: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"Antwort für
GetParserExtensiongoogle.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 }
Nachdem Sie die Parsererweiterungen erstellt haben, können Sie sie mit der Methode ActivateParserExtension bereitstellen.
API-Beispiele für benutzerdefinierte Parser
CreateParserAnfrageparent: "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 }Antwort für
CreateParsergoogle.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 }GetParserAnfragename: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"Antwort für
GetParsername: "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"
Nachdem Sie die benutzerdefinierten Parser erstellt haben, können Sie sie mit der Methode ActivateParser bereitstellen.
Ablehnungskriterien und Risiken
Mit dem Flag
validation_skippedkönnen Nutzer zwar Prüfungen anhand von Beispielprotokollen umgehen, aber es ist nicht möglich, fehlerhaften Code bereitzustellen. Eine Erweiterung oder ein benutzerdefinierter Parser wird weiterhin abgelehnt, wenn der Code der Erweiterung oder des Parsers Syntaxfehler enthält. Die Option „Überspringen“ ist nur sinnvoll, wenn die Erweiterung syntaktisch korrekt ist, aber aufgrund der Parsing-Logik oder fehlender Logs fehlschlägt.Wenn ein
validation_skipped-Flag Systemprobleme oder Leistungseinbußen verursacht, kann es von den internen Engineering-Teams von Google deaktiviert werden.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten