2017-01-12 4 views
0

배경logrotate에, 시스템 로그 - NG와 잃어버린 로그

    결국 5140
  1. 이 될 것입니다 포트에 로그를 보낼 syslog-ng를 사용 /var/log/httpd/error_log
  2. 에 기계와 생산 로그에서 실행
  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("$MSG\n")); 
} 

logrotate.hourly.conf

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

로그인 소비

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

이 자바 프로그램은 본질적으로 kafka-producer하고 /var/log/httpd/error_log에서 logrotate 시작 copytruncatesyslog-ng 데이터를 읽는 사이

문제

는 일부 데이터가이 파일로 전송됩니다 카프카 클러스터에 데이터를 전송 syslog-ng에 포착되지 않으므로 kafka-cluster

으로 푸시되지 않습니다.3210

주기적으로 logrotate으로 회전 된 파일에서 로그를 계속 읽는 것이 정상적인 방법입니까?

답변

0

logrotate는 로그 회전시 syslog-ng를 다시로드합니까? 그것 없이는 syslog-ng는 파일의 절단을 더 느리게 배웁니다.