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エラーは発生しませんが、リモートサーバーにログがなくなりました。

なぜ?

関連情報