여러 호스트에서 모든 원격 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로 이동하고 싶습니다.