2014-09-19 2 views
0

Я хочу отправить журнал доступа nginx на удаленный сервер syslog-ng. Я установил syslog-ng каждую сторону (сервер-клиент). Клиент: 10.10.10.2 Сервер: 10.10.10.1 Некоторые файлы журналов (сообщения, syslog, mail.log) успешно отправляются на сервер с клиента, но не отправляют журнал nginx. сервера конфигурации:nginx отправить журнал на удаленный сервер syslog

source s_net { 
    tcp(ip(0.0.0.0) port(1999) 
    tls(key_file("/etc/syslog-ng/key.d/privkey.pem") 
     cert_file("/etc/syslog-ng/cert.d/cacert.pem") 
     peer_verify(optional-untrusted))); }; 

destination d_net_nginx_access { file("/mnt/syslog_storage/HOSTS/$HOST 
/nginx.access.log"); }; 

filter f_nginx_access { program("nginx") }; 

log { source(s_net); filter(f_nginx_access); destination(d_net_nginx_access); }; 

Клиент конфигурации:

source s_src { 
     system(); 
     internal(); 
}; 

destination tls_log { 
tcp("10.10.10.1" port(1999) 
tls(ca_dir("/etc/syslog-ng/ca.d")));}; 

destination d_nginx_access { file("/var/log/nginx/nginx.access.log"); }; 

filter f_nginx { program("nginx"); }; 

log { source(s_src); filter(f_nginx); destination(d_nginx_access); }; 

# All messages send to a remote site 
# 
log { source(s_src); destination(tls_log); }; 

Я сейчас не в чем проблема. Спасибо заранее.

ответ

1

Проблема в том, что на клиенте вы получаете доступ к журналам Nginx в качестве адресата. Направления - как следует из названия - где вы положили. syslog-ng не читает адресатов. Причина, по которой почтовые журналы, а остальные - по проводу, заключается в том, что они регистрируются непосредственно на syslog(), поэтому syslog-ng не должен читать отдельный файл. Nginx не использует службу syslog() (за исключением случаев, когда вы настроили ее, в последних версиях есть плагин syslog), поэтому журналы nginx не поступают в syslog-ng, и поэтому установленный вами фильтр также не будет их улавливать.

Теперь, чтобы передать журналы Nginx, изменить что Nginx назначения на клиенте что-то вроде этого:

source s_nginx_access { file("/var/log/nginx/nginx.access.log" flags(no-parse)); }; log { source(s_src); source(s_nginx_access); destination(tls_log); };

flags(no-parse) есть, потому что Nginx не войти нормального системного журнала формата.

Смежные вопросы