фонLogrotate, Syslog-нг и потери журнала
- сервер Apache работает на машине и по производству бревен в
/var/log/httpd/error_log
- Использование
syslog-ng
для отправки журнала в порт5140
- В конце концов, это будет потребляемая
kafka producer
для отправки сообщения по электронной почте logrotate
Вращается/var/log/httpd/error_log
каждый час
Настройки
Syslog-ng.conf
options {
flush_lines (0);
time_reopen (10);
log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (no);
keep_hostname (no);
};
source s_apache2 {
file("/var/log/httpd/error_log" flags(no-parse));
}
destination loghost {
tcp("*.*.*.*" port(5140) template("$MSG\n"));
}
logrotate.hourly.conf
/var/log/httpd/error_log {
copytruncate
rotate 4
dateext
missingok
ifempty
.
.
.
}
Потребление Войти
nc -k -l 5140 | grep "STATS:" | java program
Эта программа Java является по существу kafka-producer
и отправляет данные Кафка кластера
Проблема
Между logrotate
инициирующих copytruncate
и syslog-ng
чтения данных из /var/log/httpd/error_log
, некоторые данные передаются на этот файл но не фиксируется syslog-ng
и, следовательно, не помещается в kafka-cluster
Есть ли разумный способ читать журналы непрерывно, не теряя при этом файл, который периодически поворачивается на logrotate
?