我们是这么使用rsyslog的:
app —-通过/dev/log写入—-> 本地rsyslogd ——–tcp转发(DA Queue)——> 集中日志收集rsyslogd
其中: DA Queue就是如果远程rsyslogd出现问题了,就暂存到本地(先内存后磁盘)
小朋友说配置了DA Queue了,但是一次远程rsyslogd的几个小时的中断过后,日志没能暂存到app端;配置如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 | $ActionQueueType                         LinkedList $ActionQueueFileName                     da_queue $ActionQueueMaxFileSize                  100M         # 设置单个disk文件的大小 $ActionQueueMaxDiskSpace                 10G          # 设置最大占用空间 $ActionQueueDisacdSeverity               3            # 设置忽略的等级 $ActionQueueLowWaterMark                 5000         # 默认是2000 $ActionQueueHighWatermark                15000        # 默认是8000 $ActionQueueDiscardMark                  30000        # 默认是9750 $ActionQueueSize                         80000        # 文档没写,测试发现默认是1000 $ActionQueueSaveOnShutdown               on user.* @@log-center.xxx.com:514 local6.* @@log-center.xxx.com:514 | 
其实,我们只是使用了local6,我们也只想转发local6的日志到远程rsyslogd;但是,小朋友就是画蛇添足多写了 user.* 这行, 问题就出现在这行;说明: ActionQueue的配置是针对紧挨着的那个转发的配置的,一个ActionQueue的配置不能同时应用到多个转发的配置的。


