본문 바로가기

Network Management System

Rsyslog 템플릿 (Template)

템플릿은 rsyslog의 핵심 기능입니다. 사용자가 원하는 출력 형식을 지정할 수 있고 동적으로 파일 이름 등을 생성할수 있습니다. rsyslog의 모든 출력에는 템플릿이 사용되는데 파일, 사용자 메시지 및 데이터베이스 등을 활용할 수 있습니다.
rsyslog 문서에 의하면 템플릿이 지정되지 않을 경우, syslogd 형식과 호환되는 템플릿으로 rsyslogd에 하드코딩되어 있고 그것이 사용된다고 합니다.

 

Property는 Rsyslog Template의 Key Element기 때문에 먼저 property를 확인할 필요가 있습니다.

Property에 대해서는 이전에 작성한 아래 포스트를 참고해주세요.

kennypark.tistory.com/18?category=918131

 

Rsyslog Properties

Rsyslog Templates Rsyslog를 잘 사용하려면 원하는 출력 포맷에 맞는 template 작성이 필수적이고, 이는 Rsyslog의 필수 기능이라 볼 수 있습니다. 자세한 Template은 추후 다루어보기로 하고 우선 간단히 Templ

kennypark.tistory.com

템플릿은 사용법이 매뉴얼 상에서도 방대하기 때문에 모두 정리하기는 어렵고 주요한 예를 참고하면서 살펴보겠습니다.

 

파일에 쓰기 위한 표준 템플릿

template(name="FileFormat" type="list") {
property(name="timestamp" dateFormat="rfc3339")
constant(value=" ")
property(name="hostname")
constant(value=" ")
property(name="syslogtag")
property(name="msg" spifno1stsp="on" )
property(name="msg" droplastlf="on" )
constant(value="\n")
}

같은 의미로 아래와 같이 사용할 수도 있습니다.

template(name="FileFormat" type="string"
string= "%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
)

 

원격 호스트로 전송을 위한 표준 템플릿

template(name="ForwardFormat" type="list") {
constant(value="<")
property(name="pri")
constant(value=">")
property(name="timestamp" dateFormat="rfc3339")
constant(value=" ")
property(name="hostname")
constant(value=" ")
property(name="syslogtag" position.from="1" position.to="32")
property(name="msg" spifno1stsp="on" )
property(name="msg")
}

 

MySQL Database를 위한 표준 템플릿

template(name="StdSQLformat" type="list" option.sql="on")
{
constant(value="insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag)")
constant(value=" values ('")
property(name="msg")
constant(value="', ")
property(name="syslogfacility")
constant(value=", '")
property(name="hostname") constant(value="', ")
property(name="syslogpriority") constant(value=", '")
property(name="timereported" dateFormat="mysql") constant(value="', '")
property(name="timegenerated" dateFormat="mysql")
constant(value="', ")
property(name="iut")
constant(value=", '")
property(name="syslogtag")
constant(value="')")
}

 

Json용 표준 템플릿

template(name="outfmt" type="list" option.jsonf="on") {

property(outname="@timestamp" name="timereported" dateFormat="rfc3339" format="jsonf") property(outname="host" name="hostname" format="jsonf")

property(outname="severity" name="syslogseverity" caseConversion="upper" format="jsonf" datatype="number") property(outname="facility" name="syslogfacility" format="jsonf" datatype="number")

property(outname="syslog-tag" name="syslogtag" format="jsonf")

property(outname="source" name="app-name" format="jsonf" onEmpty="null")

property(outname="message" name="msg" format="jsonf") }

'Network Management System' 카테고리의 다른 글

Rsyslog Template: 호스트별(IP) 파일 생성  (0) 2021.03.09
SNMP MIB  (0) 2021.02.18
Rsyslog Properties  (0) 2021.02.14
RSyslog Configuration 설정  (0) 2021.02.13
Rsyslog 개요  (0) 2021.02.13