logrotate, syslog-ng и loosing log

Фон

  1. Сервер Apache, работающий на машине и производящий /var/log/httpd/error_log
  2. Использование syslog-ngдля отправки журнала на порт 5140
  3. В конечном итоге он будет потребляться kafka producerдля отправки в тему
  4. 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("$MSGn")); 
}

logrotate.почасовой.conf

/var/log/httpd/error_log {
  copytruncate
  rotate 4
  dateext
  missingok
  ifempty
  .
  .
  .
}

Потребление Журнала

 nc -k -l 5140 | grep "STATS:" | java program

Эта программа java по существу a kafka-producerи отправляет данные в кластер Кафки

Проблема

Между logrotateинициированием copytruncateи syslog-ngчтением данных из/var/log/httpd/error_log, некоторые данные отправляются в этот файл, но не захватывается syslog-ngи, следовательно, не толкается в kafka-cluster

Есть ли разумный способ читать журналы непрерывно, не теряя из файла, который logrotateпериодически вращается ?

1 ответ

  1. Logrotate перезагружает syslog — ng при вращении журнала? Без него syslog — ng узнает о усечении файла медленнее.