Ignorar a validação de registros para extensões de analisadores e analisadores personalizados

Compatível com:

O processo de validação de extensões de analisadores e analisadores personalizados geralmente aplica uma verificação rigorosa em registros de amostra dos 30 dias anteriores para garantir a integridade funcional. No entanto, há cenários em que os clientes precisam implantar uma extensão, apesar das falhas de validação, como quando nenhum registro foi ingerido nos últimos 30 dias ou quando os registros atuais ainda não refletem um novo formato.

Este documento descreve o fluxo de trabalho baseado em API para ignorar a validação obrigatória de registros para extensões de analisadores e analisadores personalizados.

Componente Definição
Método de API CreateParserExtension (para extensões) ou CreateParser (para analisadores personalizados)
Flag de ignorar validation_skipped
Tipo de flag Booleano (padrão: falso)
Escopo Proto ParserExtension (para extensões) e proto Parser (para analisadores personalizados)

Quando você pula a validação, o analisador mostra o status validation_skipped. Como essa é uma operação assíncrona, as chamadas iniciais para a API Create vão mostrar um novo estado. No entanto, as solicitações subsequentes da API Get vão refletir o status validation_skipped depois de processadas.

Execução da API

Execute a chamada da API Create relevante com a flag validation_skipped ativada. Você pode usar essa flag e ativar o analisador ou a extensão personalizada, mesmo quando nenhum registro tiver sido ingerido para o cliente e o tipo de registro.

Exemplos de API para extensões de analisadores

  • Solicitação 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
    }
    
  • Resposta 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
    }
    
  • Solicitação GetParserExtension

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"
    
  • Resposta 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
    }
    

Depois de criar as extensões do analisador, você pode implantá-las usando o método ActivateParserExtension.

Exemplos de API para analisadores personalizados

  • Solicitação 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
    }
    
  • Resposta 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
    }
    
  • Solicitação GetParser

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"
    
  • Resposta 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"
    

Depois de criar os analisadores personalizados, você pode implantá-los usando o método ActivateParser.

Critérios de rejeição e risco

  • Embora a flag validation_skipped permita que os usuários ignorem as verificações em registros de amostra, ela não permite a implantação de código corrompido. Uma extensão ou analisador personalizado ainda será rejeitado se o código da extensão ou do analisador contiver falhas relacionadas à sintaxe. A opção de ignorar só é viável se a extensão estiver sintaticamente correta, mas falhar devido à lógica de análise ou à falta de registros.

  • Se uma flag validation_skipped causar problemas no sistema ou regressões de desempenho, ela poderá ser desativada pelas equipes de engenharia internas do Google.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.