
Quero configurar um servidor de log simples para aceitar logs de todos os clientes. Não estou falando sobre logs de sistema padrão, como /var/log/mail , mensagem, inicialização etc. Quero redirecionar ou enviar logs de aplicativos e eles podem não estar usando o daemon syslog para registrar suas mensagens.
Como /appdir/log/error.log.
Encontrei muitos posts na internet; a maioria sugere usar rsyslog ou syslog-ng. Bem, até agora consegui redirecionar os logs padrão do sistema, não os logs do aplicativo. Estou usando o ambiente centos 5/6.
Responder1
Existem duas abordagens principais para isso que eu vi.
Em primeiro lugar, muitos aplicativos terão a capacidade de gravar nativamente em um host syslog. Este é o melhor caminho a seguir. Em outros casos, usarei um script básico - algo como o mostrado abaixo funciona.
sudo tail /my/app/log | nc -w0 -u 192.168.1.1 514
EDIT - existe de fato uma maneira de lidar com isso no syslog-ng se você estiver executando-o no sistema que gera os logs. Substitua a convenção de nomenclatura e o destino conforme desejado. Algo semelhante também está disponível para rsyslog, mas é mais desajeitado (imho).
source s_trbdk3 {
file("/var/log/trbdk3.log" flags(no-parse) program_override("trbdk3") );
};
log{
source(s_trbdk3);
destination( d_mesg );
};
Responder2
O módulo de entrada do rsyslog imfile
pode:
Fornece a capacidade de converter qualquer arquivo de texto padrão em uma mensagem syslog. Um arquivo de texto padrão é um arquivo que consiste em caracteres imprimíveis com linhas delimitadas por LF.
Você pode lera documentação oficialpara mais.
Nunca experimentei e pode não ser muito eficiente, mas parece que pode funcionar.
syslog-ng parece ser capaz de fazer algo semelhante com seufile()
driver de origem.Este exemplosugere uma declaração de origem como esta:
source s_all {
file("/path/to/your/file" follow_freq(1) flags(no-parse));
};