rsyslog使用模板格式将消息转发到远程服务器

rsyslog使用模板格式将消息转发到远程服务器

我想将日志从 2 个客户端服务器发送到单个远程服务器。客户端配置:

  ...
  module(load="imfile" PollingInterval="10")    # Polling every 10 secondes
  ...
  if $syslogtag == 'apache' then {
    action(type="omfwd" Target="192.168.0.10" Port="514" Protocol="udp" )
    & stop
  }
  ...
  input(type="imfile"
      File="/var/log/httpd/my_apache_log"
      Tag="apache"
      Severity="info"
      Facility="local7")
   ...

服务器配置:

  ...
  # Provides UDP syslog reception
  $ModLoad imudp
  $UDPServerRun 514
  ...
  if $syslogtag == 'apache' and $syslogseverity-text == 'info' then {
    /my_path/my_apache_log
    & stop
  }
  ...

这些配置就像一个魅力。

现在,我想用template format来自定义日志。因此,在客户端配置中,我像这样更改配置:

  ...
  module(load="imfile" PollingInterval="10")    # Polling every 10 secondes
  ...
  template (name="MyTemplate" type="list") {
        property(name="hostname")
        constant(value="', ")
        property(name="msg")
        constant(value="\n")
  }
  ...
  if $syslogtag == 'apache' then {
    action(type="omfwd" Target="192.168.0.10" Port="514" Protocol="udp" template="MyTemplate")
    & stop
  }
  ...
  input(type="imfile"
      File="/var/log/httpd/my_apache_log"
      Tag="apache"
      Severity="info"
      Facility="local7")
   ...

如果我运行以下命令rsyslogd -N1,我不会收到任何错误,但远程服务器上没有更多日志。

为什么 ?

相关内容