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

Compatible con:

Por lo general, el proceso de validación de la extensión del analizador y del analizador personalizado aplica una verificación rigurosa en los registros de muestra de los 30 días anteriores 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, como cuando no se han ingerido 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)
Marca de omisión validation_skipped
Tipo de marca Booleano (predeterminado: falso)
Alcance Proto ParserExtension (para extensiones) y proto Parser (para analizadores personalizados)

Cuando omites la validación, el analizador muestra el estado validation_skipped. Debido a 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 correspondiente con la marca validation_skipped habilitada. Puedes usar esta marca y activar el analizador o la extensión personalizados, incluso cuando no se hayan ingerido registros para el cliente y el tipo de registro.

Ejemplos de API para extensiones del analizador

  • Solicitud 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 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 GetParserExtension

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"
    
  • Respuesta 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 API para analizadores personalizados

  • Solicitud 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 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 GetParser

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"
    
  • Respuesta 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, podrás 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 el código de la extensión o del analizador contiene fallas relacionadas con la sintaxis. La opción de omisión solo es viable si la extensión es sintácticamente correcta, pero falla debido a la lógica de análisis o a la falta de registros.

  • Si una marca validation_skipped causa problemas del sistema o regresiones de rendimiento, los equipos de ingeniería internos de Google pueden desactivarla.

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