rsyslogd[xxxx]: 구성 처리 중 오류가 발생했습니다. STOP 다음에 연결할 수 없는 문이 옵니다.

rsyslogd[xxxx]: 구성 처리 중 오류가 발생했습니다. STOP 다음에 연결할 수 없는 문이 옵니다.

기본 syslog 서버에는 다음 구성이 있습니다.

[root@STGSYSLOG ~]# egrep -v "^$|^#" /etc/rsyslog.conf
$MaxMessageSize 32k
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$template RemoteLogs,"/var/log/RemoteLogs/%fromhost-ip%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& stop
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
[root@STGSYSLOG ~]#

rsyslog 버전은 다음과 같습니다.

[root@STGSYSLOG ~]# rsyslogd -v
rsyslogd 8.24.0-52.el7_8.2

구성을 확인할 때 다음 오류가 발생합니다.

[root@STGSYSLOG ~]# rsyslogd -f /etc/rsyslog.conf -N1
rsyslogd: version 8.24.0-52.el7_8.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: error during config processing: STOP is followed by unreachable statements!  [v8.24.0-52.el7_8.2 try http://www.rsyslog.com/e/2207 ]
[root@STGSYSLOG ~]#

파일에 메시지를 쓴 후 메시지 처리를 중지하도록 rsyslog에 지시하는 "&stop" 줄이 있습니다. "&stop"이 포함되지 않으면 메시지가 로컬 파일에 기록됩니다. 내가 여기서 뭔가 잘못하고 있는 걸까요? 아니면 이 매개변수가 rsyslog 8.x에서 더 이상 사용되지 않습니까? 조언해주세요.

답변1

이 페이지는 rsyslog와 관련된 중지 명령 오류를 참조하는 검색 결과에 나타납니다. 답글을 게시하면 후속 조치를 취하는 사람들이 문제를 더 쉽게 해결할 수 있기를 바랍니다.


란지스,

귀하의 구성 파일에 따르면 귀하는 제가 어려움을 겪어왔던 것과 동일한 결과를 얻으려고 노력하고 있는 것으로 보입니다.

  • 정의된 템플릿에 따라 적절한 이름의 로컬 로그 파일에 기록된 원격 syslog 메시지를 수신합니다.
  • 구성 파일의 나머지 부분에 지시된 대로 표준 로컬 로그 파일에 로컬 메시지를 계속 기록합니다.

위 내용을 토대로 저의 답변은 아래와 같습니다.

예, stop 지시문은 무조건적이며 구성 파일의 나머지 부분이 무시됩니다(인용한 오류 메시지 생성). 나는 "규칙 세트"를 사용하면 오류 없이 목표를 달성할 수 있다는 것을 발견했습니다.

저는 Debian 10.8과 [rsyslog] v8.1901.0-1을 사용하고 있습니다.

내 [rsyslog.conf]의 관련 부분:

모듈 섹션에서:

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514" ruleset="remote")  # "remote" ruleset defined below...

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote") # "remote" ruleset defined below...

문서에 규칙 세트를 정의해야 한다는 내용이 나와 있다는 것을 알고 있습니다.앞으로갇혔어요... 제가 이 글을 쓰는 지금은 그런 것 같지 않습니다.

규칙 섹션에서:

$template Incoming-logs,"var/log/%HOSTNAME%/%PROGRAMNAME%.log
ruleset(name="remote"){
action(type="omfile" dynafile="Incoming-logs")
}               # This ruleset is used above where it is bound 
                #  to the TCP/UDP listener definitions

이것은 마침내 내 목표를 달성했으며 오류/경고 메시지가 없습니다.

도움이 되었기를 바랍니다.

관련 정보