Capture apenas alguns logs com syslong-NG

2

Sou novo no Syslog-ng. Eu implantei e está funcionando bem, empurrando alguns logs para o MongoDB. Agora, o que eu realmente quero fazer é enviar alguns logs (por exemplo, / var / log / secure) para o MongoDb, enquanto empurra alguns outros logs para o sistema de arquivos e ainda ignorar algum outro conjunto de logs.

vocês podem me ajudar a definir essa configuração?

obrigado Max.

    
por Klaus 16.06.2012 / 04:18

1 resposta

1

/var/log/secure deve vir do syslog-ng já. Como tal, você só precisa redirecionar para onde as entradas de log estão indo.

Tente não pensar em coisas em termos de arquivos. / var / log / secure é um arquivo sim, mas somente porque o syslog-ng está configurado para colocar entradas de log nele. Entradas de log vêm com todos os tipos de atributos como o 'recurso', a 'prioridade', o nome do programa, o PID, etc. Se eu quiser, eu poderia dizer syslog-ng para rotear todas as entradas de log do programa 'sshd 'para / var / log / secure.

Então, o que você precisa fazer é alterar os critérios do que é roteado para o mongodb. Vamos fingir que sua configuração do syslog-ng é algo assim:

filter f_secure {
  facility(auth) or facility(authpriv);
};
destination d_secure {
  file('/var/log/secure');
};
log {
  source(s_local); filter(f_secure); destination(d_secure);
};

filter f_mongodb {
  program('foobar');
};
destination d_mongodb {
  mongodb(
    ...
  );
};
log {
  source(s_local); fitler(f_mongodb); destination(d_mongodb);
};

Tudo o que você precisa fazer é alterar o filtro do mongodb para incluir as mesmas coisas que o filtro para / var / log / secure. Dependendo da sua versão do syslog-ng, isso pode ser tão simples quanto alterar f_mongodb para o seguinte:

filter f_mongodb {
  filter(f_secure) or program('foobar');
};

Tudo o que fizemos foi incluir a definição de f_secure em f_mongodb . Agora, qualquer alteração no f_secure também afetará o que entra no mongodb.

No entanto, versões mais antigas do syslog-ng você deve fazer o seguinte (como filtros recursivos foram adicionados em uma versão 3.X eu acredito):

filter f_mongodb {
  ( facility(auth) or facility(authpriv) ) or program('foobar');
};

Isso faz o exato igual ao nosso exemplo anterior. A única diferença é que substituímos filter(f_secure) pelo conteúdo do próprio filtro. Isso é tudo filter(f_secure) faz. Apenas torna a sua configuração mais simples de manter, para que você não tenha linhas de configuração duplicadas em todos os lugares.

Note que os parênteses em torno do facility(auth) or facility(authpriv) são estritamente necessários, eu os incluí como o equivalente lógico de qual filter(f_secure)

    
por 16.06.2012 / 06:02