rsyslog: 시스템 로그를 필터링하여 다른 파일로 로그 보내기

rsyslog: 시스템 로그를 필터링하여 다른 파일로 로그 보내기

여러 호스트에서 모든 원격 NAT 이벤트를 가져오는 다음 설정을 갖춘 CentOS 기반 rsyslog 서버가 있습니다.

$template TmplcpFW, "/var/log/%HOSTNAME%.log"
if ($hostname == ["CP1CGNAT","CP2CGNAT"]) then ?TmplcpFW
& ~

/var/log/CP1CGNAT의 샘플 로그 출력

<150>1 2018-12-20T16:07:00.482369+01:00 2018-12-20 15 - - - 06:59: CP1CGNAT_O_Poland{OR_NAT}[jservices-nat]: JSERVICES_NAT_RULE_MATCH: proto 6 (TCP) application: any, xe-1/0/1.1718:100.70.0.2:59794 -> 109.32.8.15:80, Match NAT rule-set: (null), rule: OR_NAT_Poland, term: t1
<150>1 2018-12-20T16:07:00.482369+01:00 2018-12-20 15 - - - 06:59: CP1CGNAT_O_France{OR_NAT}JSERVICES_SESSION_OPEN: application:none, xe-1/0/1.1718 100.70.0.2:59794 [55.93.69.53:26620] ->  109.32.8.15:80 (TCP) 
<150>1 2018-12-20T16:07:11.091313+01:00 2018-12-20 15 - - - 07:10: CP1CGNAT_O_UK{OR_NAT}JSERVICES_SESSION_CLOSE: application:none, xe-1/0/1.1718 100.70.0.2:59778 [55.93.69.60:40136] ->  109.32.8.15:80 (TCP) 

접두사 "syslog 호스트 10.10.10.10 log-prefix CP1CGNAT_O_Poland"를 사용하여 NAT 장치 서비스를 구성했습니다.

이제 다음과 같은 타임스탬프가 있는 접두사 값을 기반으로 위의 로그를 다른 디렉터리/파일로 분리하고 싶습니다.

/Poland/Logs_Poland_2018-12-20, /France/Logs_France_2018-12-20, /UK/Logs_UK_2018-12-20

rsyslog에서 이를 달성하는 방법을 제안해 주실 수 있나요?


의견에서 업데이트:

NAT 장치에 구성된 다양한 로그 접두사를 필터로 사용하고 템플릿에서는 다음과 같이 사용했습니다(총 10개의 유사한 템플릿).

$template TmplcpFW_P, "/var/log/NIPFW/Poland/Poland_%HOSTNAME%_%$year%.%$month%.%$day%.log" 
if ($hostname == ["CP1CGNAT","CP2CGNAT"]) and $msg contains 'CP1CGNAT_O_Poland' then ?TmplcpFW_P 
$template TmplcpFW_F, "/var/log/NIPFW/France/France_%HOSTNAME%_%$year%.%$month%.%$day%.log" 
if ($hostname == ["CP1CGNAT","CP2CGNAT"]) and $msg contains 'CP1CGNAT_O_France' then ?TmplcpFW_F

이제 위 기준에 일치하는 모든 로그를 해당 디렉터리/파일로 이동하고 나머지 로그는 /var/log/messages로 이동하고 싶습니다.

관련 정보