流量突降,升级rsyslog失败?


机房syslog日志服务器使用的rsyslog还在用v5,版本太低,需要升级到v8。

测试通过后先选了一个小机房进行升级,过程一切顺利,结果也正常。流量图很漂亮,两台syslog日志服务器做负载均衡,红线是升级了的服务器的流量。日志收发都正常。

 

今天下午继续升级,有三个机房没有负载均衡,单独拿出来处理。安装部署也没问题,该检查流量了。结果一看,IN流量掉了一截。没有负载均衡,按理应该升级瞬间流量掉为0,升级完成流量又恢复升级前的水平。等了一段时间,IN流量仍然没有恢复,进一步查看OUT流量也掉了一截,而且几乎降为0了,升级过的机房都表现成这样。

 

不应该啊,昨天晚上测的好好的,而且今天操作步骤又和昨天晚上一样,操作系统内核完全一样,为啥会出现这种情况!于是检查rsyslog进程和配置,都没有错。检查rsyslog接收日志情况,能接收日志,检查某一种日志的接收情况,没有数据丢失。去下游检查转发出去的某种日志,依然没有丢失。这时候IN和OUT流量依然没有恢复升级前水平,我认为升级失败了,于是回滚。回滚后IN和OUT流量恢复了。

至此有个问题不解:

为什么OUT流量陡降几乎为0了,去下游检查转发出去的某种日志却没有丢失的情况?这太矛盾了。

NO GHOST ONLINE!

以前从来没关注过OUT流量,为什么升级前OUT流量这么大?OUT流量主要就是转发到下游的日志,而且我确定这种日志非常少,绝不可能达到20Mbps。而且为什么升级后OUT流量陡降,回滚后立即复原?那一定是别的流量被干掉了,因为转发到下游的日志没有丢。

上机器抓包,发现出去的包绝大多数是dns请求,这是因为rsyslog配置了域名解析,所以升级后OUT流量被干掉的是dns流量!立马想到前些日子在读Rainer博客时读到的rsyslog v5的dns cache机制问题

Up until and including version 5 rsyslog does actually not implement a real DNS cache.
Starting with 6.3.1, I have now implemented a real, full-blown cache system which will resolve the issues with that use case.

v5的dns cache并不是一个真正的cache,所以仍然有大量的dns请求。然而从6.3.1开始,rsyslog实现了完整的dns cache,dns请求自然就少了。

这篇博客还提到v5的dns cache工作地很好,几乎没有用户抱怨。唯一不同的是udp流量,如果模板配置了域名解析而且有大量机器发送日志的话,就会有大量dns请求。——呵呵,no real pain.

They seem to work surprisingly well, as almost no real pain was reported by users in regard to this system. The big exception is UDP traffic, if combined with template options that require host resolution and a larger number of different hosts sendin messages.

这种问题只会在大流量时表现地很明显,所以昨天晚上升级的小流量机房没出现这个问题。其实再仔细看看那个流量图,小流量机房升级过后IN的流量也没有恢复到升级前的水平,只是差得不多,被忽略了。

那么IN的流量为什么也下降了呢?因为接收的dns应答包少了。

好吧,所以说升级没有失败,周一继续升完剩余的机房。

唔 = –

  1. No comments yet.
(will not be published)

Are you a human?