在Syslog-NG中丢弃的消息-缓冲区配置?

时间:2018-09-20 10:35:49

标签: syslog syslog-ng

我正在使用Syslog-NG 3.8作为syslog服务器,它接收来自许多不同来源的消息,这些消息来自大约400台服务器(并过滤它们并最终中继到splunk服务器)。

但是,看起来很多消息甚至在被过滤并转发到splunk实例之前都已被“丢弃”。

我有一个配置,在过滤到平面文件之前,我一直跟踪“传入”消息,并且在那里看不到某些消息(请参见下面的示例),而在运行时我可以成功看到tcp跟踪一个tcpdump,表示Syslog-NG在“源”机制期间“丢弃”消息。

我怀疑这是由于在其接口上传入的大量邮件造成的,我需要对缓冲区和特定选项进行一些调整。

这是该错误的具体示例:

从源计算机上,如果我做一个小循环,每秒发送一个ID递增的消息(例如20、21、22、23、24等):

root@sm1u1050vmo /var/log: for ((i=20;i<100;i++)); do logger -p auth.notice "test auth notice $i" ; sleep 1 ; done

如果我在Syslog-NG(接收器)上尾随“ incoming.log”平面文件,我会看到许多丢失的消息:

[root@xm1p1034vmo 20]# tail -f incoming.log | grep sm1u1050vmo
Sep 20 12:27:32 sm1u1050vmo root: [ID 702911 auth.notice] test auth notice 28
Sep 20 12:27:34 sm1u1050vmo root: [ID 702911 auth.notice] test auth notice 30
Sep 20 12:27:37 sm1u1050vmo root: [ID 702911 auth.notice] test auth notice 33
Sep 20 12:27:42 sm1u1050vmo root: [ID 702911 auth.notice] test auth notice 38
Sep 20 12:27:43 sm1u1050vmo root: [ID 702911 auth.notice] test auth notice 39
Sep 20 12:27:52 sm1u1050vmo root: [ID 702911 auth.notice] test auth notice 48

我们可以清楚地看到许多消息丢失。

这是我配置的一小部分,带有选项和源:

options {
  chain_hostnames(no);
  log_msg_size(8192);
  time_reopen(2);
  create_dirs(yes);
  use_dns(yes);
  keep_hostname(yes);
  stats_freq(3600);
  flush_lines(1);
  log_fifo_size(1000);
};

正在使用的来源:

source s_EXTERNAL {
         network(transport("udp") log-fetch-limit(500));
};

用于过滤这些传入消息的“本地副本”目标:

destination d_INCOMING_ALL       
{ 
 file("/app/syslog-ng/logs/${YEAR}/${MONTH}/${DAY}/incoming.log" create-dirs(yes)); 
};

注意,我目前正在尝试在源代码中使用诸如 so-rcvbuf()之类的选项(并同时调整内核参数 rmem_max )。它是16Mb,我将其增加到64M,但目前没有任何改变。运行 netstat -us

时,我仍然看到 RcvbufErrors 数据包接收错误不断增加的情况

有任何提示吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我会告诉您一个UDP笑话,但您可能不会理解。严重地,不能保证UDP到达。在每一端将协议更改为TCP,应该进行设置。除了协议之外,如果您的系统以每秒1的速率丢弃邮件,则您的网络可能存在配置问题,或者只是过载。