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오류가 발생하지 않지만 원격 서버에 더 이상 로그가 없습니다.

왜?

관련 정보