Existe uma maneira de enviar logs para um diretório específico com o syslog-ng?

Existe uma maneira de enviar logs para um diretório específico com o syslog-ng?

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); };

informação relacionada