
Gostaria de enviar logs de cada aplicativo para um coletor remoto com syslog-ng.
Se eu tiver o Apache, gostaria que meus logs do Apache fossem enviados ao meu coletor remoto no arquivo /var/log/apache.log
.
Não consegui encontrar nada sobre isso. Eu sei que é possível com o rsyslog, mas a única coisa que consigo fazer aqui é enviar todos os logs junto com:
destination remote { network("<collector_adress>" transport("udp") port(514)); };
Responder1
Para coletar logs de arquivos com syslog-ng, você precisa criar fontes de arquivo e adicioná-las a uma instrução de log. Algo assim:
source s_apache {
file("/var/log/apache.log");
};
log {
source(s_apache); destination(remote);
};
Para coletar logs também de outros arquivos, defina fontes adicionais e adicione-as à instrução log. Se você tiver um aplicativo que efetua login em vários arquivos de log diferentes (por exemplo, em arquivos de log com registro de data e hora), poderá usar a origem do arquivo curinga. Verifique os documentos para obter detalhes:https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.21/administration-guide/16#TOPIC-1180423
Responder2
Eu acho que você pode usar a mesma abordagem que emSyslog-ng - Envia o nome do arquivo do cliente para o servidor.
Configuração do lado do cliente em syslog-ng -
file("/var/log/shell.log" log_prefix("shell: "));
Configuração do lado do servidor em syslog-ng -
filter f_shell { match("shell" value("MSGHDR")); };
destination d_shell { file("/var/log/syslog-ng/shell.log"); };
log { source(demo_tls_src); filter(f_shell); destination(d_shell); flags(final); };