Ignorer la validation des journaux pour les extensions d'analyseur et les analyseurs personnalisés
Le processus de validation des analyseurs personnalisés et des extensions d'analyseur effectue généralement une vérification rigoureuse par rapport aux exemples de journaux des 30 jours précédents pour garantir l'intégrité fonctionnelle. Toutefois, dans certains cas, les clients peuvent avoir besoin de déployer une extension malgré les échecs de validation, par exemple lorsqu'aucun journal n'a été ingéré au cours des 30 derniers jours ou lorsque les journaux actuels ne reflètent pas encore un nouveau format.
Ce document décrit le workflow basé sur l'API permettant d'ignorer la validation obligatoire des journaux pour les extensions d'analyseur et les analyseurs personnalisés.
| Composant | Définition |
| Méthode API | CreateParserExtension (pour les extensions) ou CreateParser (pour les analyseurs personnalisés)
|
| Indicateur de contournement | validation_skipped
|
| Type d'indicateur | Booléen (par défaut : false) |
| Champ d'application | Proto ParserExtension (pour les extensions) et proto Parser (pour les analyseurs personnalisés) |
Lorsque vous ignorez la validation, l'analyseur affiche l'état validation_skipped. Comme il s'agit d'une opération asynchrone, les appels initiaux à l'API Create affichent un nouvel état. Toutefois, les requêtes Get API suivantes reflètent l'état validation_skipped une fois le traitement effectué.
Exécution de l'API
Exécutez l'appel d'API Create approprié avec l'indicateur validation_skipped activé. Vous pouvez utiliser cet indicateur et activer l'analyseur personnalisé ou l'extension, même si aucun journal n'a été ingéré pour le client et le type de journal.
Exemples d'API pour les extensions d'analyseur
Requête
CreateParserExtensionparent: "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 }Réponse
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 }Requête
GetParserExtensionname: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"Réponse
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 }
Une fois les extensions d'analyseur créées, vous pouvez les déployer à l'aide de la méthode ActivateParserExtension.
Exemples d'API pour les analyseurs personnalisés
Requête
CreateParserparent: "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 }Réponse
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 }Requête
GetParsername: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"Réponse
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"
Une fois les analyseurs personnalisés créés, vous pouvez les déployer à l'aide de la méthode ActivateParser.
Critères de refus et risques
Bien que l'indicateur
validation_skippedpermette aux utilisateurs d'ignorer les vérifications par rapport aux exemples de journaux, il ne permet pas de déployer du code défectueux. Une extension ou un analyseur personnalisé est toujours refusé si le code de l'extension ou de l'analyseur contient des échecs liés à la syntaxe. L'option d'ignorance n'est viable que si l'extension est syntaxiquement correcte, mais échoue en raison de la logique d'analyse ou du manque de journaux.Si un indicateur
validation_skippedentraîne des problèmes système ou des régressions de performances, il peut être désactivé par les équipes d'ingénierie internes de Google.
Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.