我试图设置一个rsyslog客户端(运行rsyslog 7.4.8),它将通过两种不同的SSLconfigurationlogin到两台远程服务器。 要做到这一点,它看起来像我需要从旧的configuration文件格式迁移到新的基于行动的格式。
如果我有以下的/etc/rsyslog.conf然后一切工作正常。 远程服务器接收消息,netstat显示从客户端到远程服务器的已build立的TCP连接:
$ModLoad imuxsock.so $ModLoad imklog.so $DefaultNetstreamDriver gtls $ActionSendStreamDriverAuthMode anon $ActionSendStreamDriverMode 1 $DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem $DefaultNetstreamDriverCertFile /etc/pki/rsyslog/local-cert.pem $DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/local-key.pem *.* @@10.50.59.241:6514
从我能从rsyslog文档中收集到的信息,我应该可以按照以下方式做一些事情:
$ModLoad imuxsock.so $ModLoad imklog.so $DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem $DefaultNetstreamDriverCertFile /etc/pki/rsyslog/local-cert.pem $DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/local-key.pem *.* action (type="omfwd" protocol="tcp" Target="10.50.59.241" Port="6514" StreamDriverMode="1" StreamDriver="gtls" StreamDriverAuthMode="anon")
但是这第二个configuration不起作用。 rsyslogd重新启动成功,所以我知道这个configuration没有语法错误。 但是netstat从来不会显示连接,即使试图连接远程系统日志服务器。 我错过了什么?
在经过一堆头撞之后,我自己就明白了这一点。 首先,rsyslog的某些版本中有一个错误会阻止这个工作(你永远不会看到build立到一个或多个目标服务器的连接),所以确保你使用的是rsyslog的7.6或更高版本。
确保您的CA文件具有其中列出的所有目标所需的任何CA. 订单不重要。 那么你的conf文件应该是这样的:
$DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem *.* action(type="omfwd" protocol="tcp" Target="10.50.59.241" Port="6514" StreamDriverMode="1" StreamDriver="gtls" StreamDriverAuthMode="anon") *.* action(type="omfwd" Protocol="tcp" Target="some.other.host.com" Port="6514" StreamDriverMode="1" StreamDriver="gtls" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.some.other.host.com")