2017-01-12 2 views
0

Contextelogrotate, syslog-ng et perdre journal

  1. serveur Apache en cours d'exécution sur une machine et produisant des journaux dans /var/log/httpd/error_log
  2. aide syslog-ng envoyer journal à un port 5140
  3. Finalement, il sera consommé par kafka producer à envoyer à un sujet
  4. 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?

Répondre

0

Logrotate recharge-t-il syslog-ng lors de la rotation du journal? Sans cela, syslog-ng apprend la troncature du fichier plus lentement.