0
- Apache服務器一臺機器,生產日誌上運行到
/var/log/httpd/error_log
- 使用
syslog-ng
發送日誌到端口5140
- 最終這將是消耗
kafka producer
待發送至主題 logrotate
每小時輪換/var/log/httpd/error_log
設置
系統日誌-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
並將數據發送到卡夫卡簇
問題
從/var/log/httpd/error_log
的logrotate
發起copytruncate
和syslog-ng
讀取數據期間,一些數據被髮送到該文件但不被syslog-ng
捕獲,因此不被推到kafka-cluster
是否有任何理智的方式來連續讀取日誌,而不會丟失定期輪換logrotate
的文件?