
Me gustaría enviar registros de cada aplicación a un recopilador remoto con syslog-ng.
Si tengo Apache, me gustaría que mis registros de Apache se envíen a mi recopilador remoto en el archivo /var/log/apache.log
.
No pude encontrar nada sobre esto. Sé que es posible con rsyslog pero lo único que puedo hacer aquí es enviar todos los registros junto con:
destination remote { network("<collector_adress>" transport("udp") port(514)); };
Respuesta1
Para recopilar registros de archivos con syslog-ng, debe crear fuentes de archivos y agregarlas a una declaración de registro. Algo como esto:
source s_apache {
file("/var/log/apache.log");
};
log {
source(s_apache); destination(remote);
};
Para recopilar también registros de otros archivos, defina fuentes adicionales y agréguelas a la declaración de registro. Si tiene una aplicación que inicia sesión en varios archivos de registro diferentes (por ejemplo, en archivos de registro con marca de tiempo), puede utilizar la fuente del archivo comodín. Consulte los documentos para obtener más detalles:https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.21/administration-guide/16#TOPIC-1180423
Respuesta2
Creo que puedes usar el mismo enfoque que enSyslog-ng: envía el nombre del archivo del cliente al servidor.
Configuración del lado del cliente en syslog-ng -
file("/var/log/shell.log" log_prefix("shell: "));
Configuración del lado del servidor en 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); };