Estou ingerindo várias origens de log em uma entrada e tenho 4 extratores encadeados a ela. Do comportamento que eu observei, se o extrator não combina, simplesmente passa para o próximo Extrator. É apenas uma tentativa, não uma força.
Por exemplo, meus extratores:
- Decodifique o JSON (a entrada é fornecida como JSON, isso é nivelado em campos)
- Formato de registro de aplicativos padrão (usamos um padrão interno)
- Código de erro para aplicativo (se ERROR, nossos aplicativos usam um campo personalizado Example_Error = Something)
- Nome do host do Mac OS X
Quando um registro de aplicativo sem um erro aparece, ele:
- é decodificado a partir de JSON
- Corresponde ao formato via grok com RegEx
- Pass (no campo "Example_Error=")
- Pass (sem correspondência nos registros do Mac OS X)
E quando um registro do sistema do Mac OS X entra:
- é decodificado a partir de JSON
- Pass (não corresponde ao formato de registro do aplicativo)
- Pass (não corresponde ao campo do código de erro)
- Obtém o nome do host
Com algum planejamento e bons conjuntos de groks, você pode fazer isso funcionar com vários Extractors com base na formatação esperada de seus logs. De uso particular para você também pode ser a opção "Somente tentativa de extração se o campo contiver (expressão de string / regular) dentro dos Extratores.