Ignora la convalida dei log per le estensioni del parser e i parser personalizzati

Supportato in:

La procedura di convalida del parser personalizzato e dell'estensione del parser in genere prevede un controllo rigoroso rispetto ai log di esempio dei 30 giorni precedenti per garantire l'integrità funzionale. Tuttavia, ci sono scenari in cui i clienti potrebbero dover implementare un'estensione nonostante gli errori di convalida, ad esempio quando non sono stati inseriti log negli ultimi 30 giorni o quando i log attuali non riflettono ancora un nuovo formato.

Questo documento descrive il flusso di lavoro basato su API per bypassare la convalida obbligatoria dei log per le estensioni del parser e i parser personalizzati.

Componente Definizione
Metodo API CreateParserExtension (per le estensioni) o CreateParser (per i parser personalizzati)
Flag di bypass validation_skipped
Tipo di flag Booleano (valore predefinito: false)
Ambito ParserExtension.proto (per le estensioni) e Parser.proto (per i parser personalizzati)

Se salti la convalida, il parser viene visualizzato con lo stato validation_skipped. Poiché si tratta di un'operazione asincrona, le chiamate iniziali all'API Create mostreranno un nuovo stato. Tuttavia, le successive richieste dell'API Get rifletteranno lo stato validation_skipped una volta elaborate.

Esecuzione API

Esegui la chiamata API Create pertinente con il flag validation_skipped abilitato. Puoi utilizzare questo flag e attivare il parser o l'estensione personalizzati, anche quando non sono stati importati log per il cliente e il tipo di log.

Esempi di API per le estensioni del parser

  • Richiesta 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
    }
    
  • CreateParserExtension Risposta

    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
    }
    
  • Richiesta GetParserExtension

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parserExtensions/dummy"
    
  • GetParserExtension Risposta

    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 volta create le estensioni del parser, puoi eseguirne il deployment utilizzando il metodo ActivateParserExtension.

Esempi di API per analizzatori personalizzati

  • Richiesta 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
    }
    
  • CreateParser Risposta

    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
    }
    
  • Richiesta GetParser

    name: "projects/dummy/locations/us/instances/dummy/logTypes/dummy/parsers/dummy"
    
  • GetParser Risposta

    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 volta creati i parser personalizzati, puoi eseguirne il deployment utilizzando il metodo ActivateParser.

Criteri di rifiuto e rischio

  • Anche se il flag validation_skipped consente agli utenti di ignorare i controlli sui log di esempio, non consente il deployment di codice danneggiato. Un'estensione o un parser personalizzato viene comunque rifiutato se il codice dell'estensione o del parser contiene errori relativi alla sintassi. L'opzione di ignorare è fattibile solo se l'estensione è sintatticamente corretta, ma non funziona a causa della logica di analisi o della mancanza di log.

  • Se un flag validation_skipped causa problemi di sistema o regressioni delle prestazioni, potrebbe essere disattivato dai team di ingegneria interni di Google.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.