作为服务运行时,Rsyslog不会转发

我有两台运行CentOS 7的本地虚拟机来模拟我们的生产环境。 1个代理服务器和1个集中式(ELK)服务器。 在ELK服务器上运行logstash从运行的实例中收集所有的syslog。 代理服务器通过Ansible提供Rsyslog(和logrotate)。 安装syslog和logrotate。 复制configuration。 重新启动服务。 真正的基本configuration,只是一个*.* @@IP.ADD.RE.SS:12345位于/etc/rsyslog.d/中的10-logstash.conf ,其余部分是标准configuration。 但是,它似乎没有发送日志到logstash。 当我尾巴/var/log/messages我看到在实例上运行的代理容器的输出。 但是没有一个被转发到日志服务器。

所以我GOOGLE了,并findDebuggingOnDemand选项。 当我停止rsyslogd服务,并手动运行sudo rsyslog -n它开始转发日志。 当我运行rsyslog -d (没有sudo),我得到通知它不能写入.pid文件。 所以我的猜测是,当它作为服务运行时,它没有足够的权利来正常工作? 我不能手动启动rsyslog没有sudo。 但我可以启动rsyslog作为服务( sudo service rsyslog start ),并确认它正在运行。

那么问题到底在哪里? 这是stream程本身吗? 它不能读取日志文件吗? 我无法想象我的configuration是错误的,因为rsyslog在手动运行时正确转发。 我不知道什么日志logging或输出提供,所以如果有需要请问,我会尽量提供。

rsyslogd -N 10输出(与另一个configuration文件,确认在生产中,相同的转发器,但有更多的选项定义)

 rsyslogd: version 7.4.7, config validation run (level 10), master config /etc/rsyslog.conf rsyslogd: module 'imuxsock' already in this config, cannot be added [try http://www.rsyslog.com/e/2221 ] rsyslogd: $WorkDirectory: /rsyslog/work can not be accessed, probably does not exist - directive ignored [try http://www.rsyslog.com/e/2181 ] rsyslogd: End of config validation run. Bye. 

提前致谢!