Contextelogrotate, syslog-ng et perdre journal
- serveur Apache en cours d'exécution sur une machine et produisant des journaux dans
/var/log/httpd/error_log
- aide
syslog-ng
envoyer journal à un port5140
- Finalement, il sera consommé par
kafka producer
à envoyer à un sujet logrotate
fait pivoter/var/log/httpd/error_log
par heure
Réglages
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
.
.
.
}
Log Consommation
nc -k -l 5140 | grep "STATS:" | java program
Ce programme java est essentiellement un kafka-producer
et envoie des données au cluster kafka
Problème
Entre les logrotate
initiant copytruncate
et syslog-ng
données de lecture de /var/log/httpd/error_log
, certaines données sont envoyées à ce fichier mais n'est pas capturé par syslog-ng
et n'est donc pas poussé à kafka-cluster
Y at-il une manière saine de lire les journaux en continu sans perdre d'un fichier qui est tourné par logrotate
périodiquement?