我们是这么使用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的配置不能同时应用到多个转发的配置的。