/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)