Protokollvalidierung für Parsererweiterungen und benutzerdefinierte Parser umgehen
Bei der Validierung von benutzerdefinierten Parsern und Parsererweiterungen wird in der Regel eine strenge Überprüfung anhand von Beispielprotokollen aus den letzten 30 Tagen durchgeführt, um die funktionale Integrität zu gewährleisten. Es gibt jedoch Szenarien, in denen Kunden eine Erweiterung trotz Validierungsfehlern bereitstellen müssen, z. B. wenn in den letzten 30 Tagen keine Protokolle aufgenommen wurden oder wenn aktuelle Protokolle noch kein neues Format aufweisen.
In diesem Dokument wird der API-basierte Workflow zum Umgehen der obligatorischen Protokollvalidierung für Parsererweiterungen 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 für den Parser der Status validation_skipped angezeigt. Da es sich um einen asynchronen Vorgang handelt, wird bei ersten Aufrufen der Create API ein neuer Status angezeigt. Nachfolgende Get API-Anfragen geben jedoch nach der Verarbeitung den Status validation_skipped zurück.
API-Ausführung
Führen Sie den entsprechenden Create API-Aufruf mit aktiviertem Flag validation_skipped aus. Sie können dieses Flag verwenden und den benutzerdefinierten Parser oder die Erweiterung aktivieren, auch wenn für den Kunden und den Protokolltyp noch keine Protokolle aufgenommen wurden.
API-Beispiele für Parsererweiterungen
CreateParserExtension-Anfrageparent: "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-Antwortgoogle.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-Anfragename: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"GetParserExtension-Antwortgoogle.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
CreateParser-Anfrageparent: "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-Antwortgoogle.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-Anfragename: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"GetParser-Antwortname: "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 Risiko
Mit dem Flag
validation_skippedkönnen Nutzer zwar Überprüfungen anhand von Beispielprotokollen umgehen, aber keinen fehlerhaften Code bereitstellen. Eine Erweiterung oder ein benutzerdefinierter Parser wird weiterhin abgelehnt, wenn der Code der Erweiterung oder des Parsers Syntaxfehler enthält. Die Option zum Überspringen ist nur sinnvoll, wenn die Erweiterung syntaktisch korrekt ist, aber aufgrund der Parserlogik oder fehlender Protokolle nicht funktioniert.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