Cómo omitir la validación de registros para las extensiones del analizador y los analizadores personalizados

Se admite en los siguientes sistemas operativos:

Por lo general, el proceso de validación del analizador personalizado y de la extensión del analizador aplica una verificación rigurosa en los registros de muestra de los últimos 30 días para garantizar la integridad funcional. Sin embargo, hay situaciones en las que los clientes pueden necesitar implementar una extensión a pesar de las fallas de validación, por ejemplo, cuando no se han transferido registros en los últimos 30 días o cuando los registros actuales aún no reflejan un formato nuevo.

En este documento, se describe el flujo de trabajo basado en la API para omitir la validación de registros obligatoria para las extensiones del analizador y los analizadores personalizados.

Componente Definición
Método de API CreateParserExtension (para extensiones) o CreateParser (para analizadores personalizados)
Indicador de omisión validation_skipped
Tipo de marca Booleano (valor predeterminado: falso)
Alcance Proto de ParserExtension (para extensiones) y proto de Parser (para analizadores personalizados)

Cuando omites la validación, el analizador muestra el estado validation_skipped. Dado que se trata de una operación asíncrona, las llamadas iniciales a la API de Create mostrarán un estado nuevo. Sin embargo, las solicitudes posteriores a la API de Get reflejarán el estado validation_skipped una vez que se procesen.

Ejecución de la API

Ejecuta la llamada a la API de Create pertinente con la marca validation_skipped habilitada. Puedes usar esta marca y activar el analizador o la extensión personalizados, incluso cuando no se hayan transferido registros para el cliente y el tipo de registro.

Ejemplos de APIs para extensiones del analizador

  • Solicitud de 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
    }
    
  • Respuesta de 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
    }
    
  • Solicitud de GetParserExtension

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

Una vez que hayas creado las extensiones del analizador, podrás implementarlas con el método ActivateParserExtension.

Ejemplos de APIs para analizadores personalizados

  • Solicitud de 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
    }
    
  • Respuesta de 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
    }
    
  • Solicitud de GetParser

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

Una vez que hayas creado los analizadores personalizados, puedes implementarlos con el método ActivateParser.

Criterios de rechazo y riesgo

  • Si bien la marca validation_skipped permite a los usuarios omitir las verificaciones en los registros de muestra, no permite la implementación de código dañado. Una extensión o un analizador personalizado se rechazan si su código contiene errores relacionados con la sintaxis. La opción de omitir solo es viable si la extensión es sintácticamente correcta, pero falla debido a la lógica de análisis o la falta de registros.

  • Si una marca validation_skipped causa problemas en el sistema o regresiones de rendimiento, es posible que los equipos internos de ingeniería de Google la desactiven.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.