为什么syslog-ng会截断输出?

我正在将防火墙的系统日志发送到在CentOS 7服务器上运行的syslog-ng 3.5.6。我可以通过tcpdump查看进入的日志,一切看起来都很好。但是,一旦syslog-ng处理日志并将其发送到输出文件,它们就会被截断。我还有其他不会被截断的系统日志源。

这是tcpdump的示例:

192.168.1.1.10002 > 192.168.2.1.514: SYSLOG,length: 694
        Facility authpriv (10),Severity notice (5)
        Msg: 1 2019-11-08T19:30:08 192.168.1.1 CP-GW - Log [Fields@1.3.6.1.4.1.2620 action="accept" UUid="{0x5dc5c542}" rule="117" rule_uid="{C94E97R1}" rule_name="Test" src="192.168.1.38" dst="192.168.160.1" proto="17" user="test administrator (test_administrator)(+)jtest.Administrator (FI) @ TEST - TEST - TEST (jtest_administrator)(+)Testl.Administ..." src_user_name="test administrator (test_administrator)(+)jtest.Administrator (FN) @ TEST - TEST - TEST (jtest_administrator)(+)Testl.Administ..." src_machine_name="TEST@TEST.TEST.com" snid="76d73747" product="VPN-1 & FireWall-1" service="53" s_port="64642" product_family="Network"]
19:30:09.083410 IP (tos 0x0,ttl 55,id 0,offset 0,flags [DF],proto UDP (17),length 722)

这是输出文件的样子:

Nov  8 19:30:08 192.168.1.1 CP-GW:

这是syslog-ng conf.d文件:

destination d_c2 {
  file ("/var/log/fw-test/${SOURCEIP}/${C_YEAR}-${C_MONTH}-${C_DAY}T${C_HOUR}.log"
    owner(root) group(splunk)
    perm(0755) dir_perm(0755)
    create_dirs(yes)
  );
};

filter f_c2 {
  netmask(192.168.1.1);
};

log {
  source(s_udp514);
  filter(f_c2);
  destination(d_c2);
};

以及syslog-ng.conf的options部分:

options {
    flush_lines (100);
    time_reopen (10);
    log_fifo_size (1000);
    chain_hostnames (yes);
    use_dns (no);
    use_fqdn (no);
    create_dirs (no);
    keep_hostname (yes);
    log-msg-size(1048576);
};

有什么想法为什么输出会被截断?

预先感谢

lxlovekobe8 回答:为什么syslog-ng会截断输出?

这是正确的行为,因为您的消息除了标头和结构化数据外不包含任何其他内容。

输入采用IETF syslog格式(RFC 5424):

SYSLOG-MSG = HEADER SP STRUCTURED-DATA [SP MSG]
HEADER = PRI VERSION SP ISOTIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID

MSG是可选的,在您的情况下为空:

1 2019-11-08T19:30:08 192.168.1.1 CP-GW - Log [Fields@1.3.6.1.4.1.2620 Action="accept" UUid="{0x5dc5c542}" rule="117" rule_uid="{C94E97R1}" rule_name="Test" src="192.168.1.38" dst="192.168.160.1" proto="17" user="test administrator (test_administrator)(+)Jtest.Administrator (FI) @ TEST - TEST - TEST (Jtest_administrator)(+)Testl.Administ..." src_user_name="test administrator (test_administrator)(+)Jtest.Administrator (FN) @ TEST - TEST - TEST (Jtest_administrator)(+)Testl.Administ..." src_machine_name="TEST@TEST.TEST.com" snid="76d73747" product="VPN-1 & FireWall-1" service="53" s_port="64642" product_family="Network"] here would come the message body

输出采用旧的BSD syslog格式(RFC 3164),其中不包含任何结构化数据:

Nov  8 19:30:08 192.168.1.1 CP-GW:

您可以通过创建包含所有重要字段的模板或使用其他输出格式(例如原始IETF syslog格式)来避免丢失sdata信息:

file ("/var/log/fw-test/${SOURCEIP}/${C_YEAR}-${C_MONTH}-${C_DAY}T${C_HOUR}.log"
  owner(root) group(splunk) perm(0755) dir_perm(0755) create_dirs(yes)
  flags(syslog-protocol)
);
本文链接:https://www.f2er.com/3135289.html

大家都在问