使用 syslog-ng `as is` 传输日志,不带时间戳和主机名等
Transferring logs using syslog-ng `as is` without timestamp and hostname etc
背景
- 机器上的 Apache 服务器 运行 并生成日志到
/var/log/httpd/error_log
- 使用
syslog-ng
将日志发送到端口 5140
- 最终它将被
kafka producer
消耗并发送到主题
设置
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));
}
问题
syslog-ng
将 timestamp 和 hostname 添加到不需要的日志数据中
<13>Jan 10 11:01:03 hostname [Tue Jan 10 11:01:02 2017] [notice] Digest: generating secret for digest authentication ...
<13>Jan 10 11:01:03 hostname [Tue Jan 10 11:01:02 2017] [notice] Digest: done
<13>Jan 10 11:01:03 hostname [Tue Jan 10 11:01:02 2017] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.4.30 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
期望的输出(每个日志行 as is
来自 error_log
文件)
[Tue Jan 10 11:01:02 2017] [notice] Digest: generating secret for digest authentication ...
[Tue Jan 10 11:01:02 2017] [notice] Digest: done
[Tue Jan 10 11:01:02 2017] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.4.30 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
平台
- CentOS 6.4 版(最终版)
- syslog-ng @version:3.2
PS
Syslog-ng to Kafka Integration :请让我知道是否有人尝试过这会使我的 java Kafka 生产者变得多余
当你在syslog-ng中使用flags(no-parse)选项时,那么syslog-ng不会尝试解析消息的不同字段,而是将所有内容放入MESSAGE字段传入的日志消息,并在系统日志前添加 header。要删除此 header,请在您的 syslog-ng 目标中使用模板:
template t_msg_only { template("${MSG}\n"); };
destination loghost {
tcp("*.*.*.*" port(5140) template(t_msg_only) );
}
要使用 syslog-ng 的 Kafka 目的地,您需要更新版本的 syslog-ng(我推荐 3.8 或 3.9)。 Peter Czanik has written a detailed post about installing new syslog-ng rpm for CentOS.
背景
- 机器上的 Apache 服务器 运行 并生成日志到
/var/log/httpd/error_log
- 使用
syslog-ng
将日志发送到端口5140
- 最终它将被
kafka producer
消耗并发送到主题
设置
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));
}
问题
syslog-ng
将 timestamp 和 hostname 添加到不需要的日志数据中<13>Jan 10 11:01:03 hostname [Tue Jan 10 11:01:02 2017] [notice] Digest: generating secret for digest authentication ... <13>Jan 10 11:01:03 hostname [Tue Jan 10 11:01:02 2017] [notice] Digest: done <13>Jan 10 11:01:03 hostname [Tue Jan 10 11:01:02 2017] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.4.30 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
期望的输出(每个日志行
as is
来自error_log
文件)[Tue Jan 10 11:01:02 2017] [notice] Digest: generating secret for digest authentication ... [Tue Jan 10 11:01:02 2017] [notice] Digest: done [Tue Jan 10 11:01:02 2017] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.4.30 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
平台
- CentOS 6.4 版(最终版)
- syslog-ng @version:3.2
PS Syslog-ng to Kafka Integration :请让我知道是否有人尝试过这会使我的 java Kafka 生产者变得多余
当你在syslog-ng中使用flags(no-parse)选项时,那么syslog-ng不会尝试解析消息的不同字段,而是将所有内容放入MESSAGE字段传入的日志消息,并在系统日志前添加 header。要删除此 header,请在您的 syslog-ng 目标中使用模板:
template t_msg_only { template("${MSG}\n"); };
destination loghost {
tcp("*.*.*.*" port(5140) template(t_msg_only) );
}
要使用 syslog-ng 的 Kafka 目的地,您需要更新版本的 syslog-ng(我推荐 3.8 或 3.9)。 Peter Czanik has written a detailed post about installing new syslog-ng rpm for CentOS.