Syslog-ng is always one message behing with a tcp destination
Hi,
I have a "client" syslog-ng that reads from a unix domain socket and writes to a file destination as well as a tcp destination. I have a "server" syslog-ng listening on 0.0.0.0 on the port specified in the "client" tcp destination.
When I write a sample payload to the domain socket, syslog-ng writes the message in full to the file destination immediately. However I see no file created on the host referred to by tcp destination.
If I write a second payload, the first payload is now written to the remote location specified in the tcp destination.
It seems like syslog-ng is always one message behind in writing to the tcp destination.
I am able to flush the "client" syslog-ng buffer by sending a kill -1. This causes the payload to be written to the tcp destination.
Is this the only way to force syslog-ng to write all its buffer contents to the tcp destination? Or is there someway to control the flushing using flow-control?
"client" syslog-ng configuration:
@version: 3.0
options { flush_timeout(1000); };
source s_socks { unix-stream ("/home/srini/dev/log" max-connections(5) log_msg_size(3145728) flags(no-parse));
};
destination d_logs { file("/logs/app.log"); };
destination d_tcp { tcp("192.168.1.102" port(60999) frac_digits(6) keep-alive(yes) ); };
rewrite r_rewrite_newlines{ subst("#012", "\n", value("MESSAGE"), flags("global")); };
log { source(s_socks); rewrite(r_rewrite_newlines); destination(d_logs); };
log { source(s_socks); destination(d_tcp); };
"Server" syslog-ng: This is the "centralized" log server:
@version: 3.0
source s_tcp { tcp(port(60999)) log_msg_size(3145728) keep-alive(yes) };
destination d_logs { file("/logs/app.llog" };
rewrite r_rewrite_newlines{ subst("#012", "\n", value("MESSAGE"), flags("global")); };
log { source(s_tcp); rewrite(r_rewrite_newlines); destination(d_logs); };
Thanks. Srini
participants (1)
-
Srinivasan Sreenivasan