rsyslog 8.24 和多个 omfwd

rsyslog 8.24 和多个 omfwd

我想*.*通过 TCP/IP 转发到远程主机。
此外,我有local0一个设施,其中消息是纯 JSON 消息,并且必须将它们转发到同一主机,但其他端口(并使用相同的 gTLS 证书)。

我做了一个配置:

# provides UDP syslog reception 
$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514

# provides TCP syslog reception 
$ModLoad imtcp 
$InputTCPServerRun 514

$template logFormat,"[1234] <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [type=syslog] %msg%\n" 
$template logJSON,"{ \"token\": \"1234\", \"env\": \"testfield\" , %msg:2:$:%\n" 
$WorkDirectory /var/spool/rsyslog # where to place spool files 
$ActionQueueFileName fwdRule1 # unique name prefix for spool files 
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible) 
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown 
$ActionQueueType LinkedList # run asynchronously 
$ActionResumeRetryCount -1 # infinite retries if host is down 
$DefaultNetstreamDriverCAFile /etc/ssl/certs/AddTrustExternalCARoot.crt

*.* action(type="omfwd" protocol="tcp" target="listener.example.com" port="5001" template="logFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.example.com") 
local0.info action(type="omfwd" protocol="tcp" target="listener.example.com" port="5005" template="logJSON" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.example.com") 
local0.* /var/log/app.log

不幸的是,rsyslog 甚至没有尝试建立连接。没有证据表明netstat -nt,也没有tcpdump

我正在寻找一种将这些日志流转发到目的地的方法,而无需深入研究 ELK 堆栈。您能帮忙吗?

答案1

我想将此写为评论,但没有足够的声誉。

确保允许的对等方与接收方证书中的 CN 匹配,并且用于签名的 CA 包含在 AddTrustExternalCARoot.crt 中。您也没有设置 $DefaultNetstreamDriverCertFile 和 $DefaultNetstreamDriverKeyFile,因此 rsyslogd 没有证书来提供客户端授权。

我假设您在发布之前编辑了 StreamDriverPermittedPeers="*.example.com" 并配置了正确的域而不是“example.com”。

可能还需要在 /etc/hosts 中有匹配的条目。

相关内容