Extratores diferentes para a mesma entrada do Graylog?

3

Estou usando a funcionalidade sidecar do Graylog com o Filebeat para coletar vários arquivos de log diferentes do meu servidor, incluindo Syslog, Nginx e Java App. Todos eles fluem para a mesma entrada do Graylog para o Beats (eu tentei fornecer várias entradas, infelizmente o Filebeat envia para um e apenas um local). Tudo funciona bem, exceto para extratores.

Como eu especifico um extrator específico para uma mensagem de log específica? Ex: Se o campo 'type' = 'API' (meu aplicativo Java), eu quero aplicar um extrator JSON. Se o tipo = 'nginx', aplique extratores regex.

    
por Jon 12.10.2016 / 19:00

2 respostas

2

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:

  1. Decodifique o JSON (a entrada é fornecida como JSON, isso é nivelado em campos)
  2. Formato de registro de aplicativos padrão (usamos um padrão interno)
  3. Código de erro para aplicativo (se ERROR, nossos aplicativos usam um campo personalizado Example_Error = Something)
  4. Nome do host do Mac OS X

Quando um registro de aplicativo sem um erro aparece, ele:

  1. é decodificado a partir de JSON
  2. Corresponde ao formato via grok com RegEx
  3. Pass (no campo "Example_Error=")
  4. Pass (sem correspondência nos registros do Mac OS X)

E quando um registro do sistema do Mac OS X entra:

  1. é decodificado a partir de JSON
  2. Pass (não corresponde ao formato de registro do aplicativo)
  3. Pass (não corresponde ao campo do código de erro)
  4. 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.

    
por 23.03.2017 / 21:02
-1

Você pode encadear extratores de forma que, se a mensagem contiver API, copiar a mensagem para api_message, fazer um extrator nesse novo campo.

faça o mesmo para o nginx, etc.

    
por 26.10.2016 / 01:43