8.데이터 적재

Edit

8.1import

문법

import [create=t] 테이블이름

입력되는 모든 레코드를 지정된 테이블에 기록합니다. 관리자 권한이 없으면 쿼리가 실패합니다.

create

t로 지정되는 경우 테이블이 없으면 자동으로 테이블을 생성합니다. create 옵션이 지정되지 않은 상태에서 임포트할 테이블이 존재하지 않으면 쿼리가 실패합니다.

사용 예

1) 기존 전체 sys_cpu_logs 데이터를 old_sys_cpu_logs 에 입력

table order=asc sys_cpu_logs | import create=t old_sys_cpu_logs

8.2insert

문법

insert table=필드이름 [create=true] 테이블이름

입력된 필드 값을 기준으로 테이블을 선택하여 데이터를 입력합니다. 관리자 권한이 없으면 쿼리가 실패합니다.

table

지정된 필드이름을 로그에서 찾아 해당 값을 테이블 이름으로 하여 데이터를 기록합니다. 데이터가 기록될 때 table 옵션에 지정된 필드는 제외하여 기록되며 해당 필드가 없는 로그는 기록되지 않습니다.

create

테이블이 없으면 자동으로 테이블을 생성합니다. create 옵션이 지정되지 않은 상태에서 insert할 테이블이 존재하지 않으면 쿼리가 실패합니다.

8.3outputtxt

문법

outputtxt [overwrite=t] [append=t] [delimiter=구분자] [encoding=인코딩] [tmp=파일경로] [gz=t] [partition=t] [flush=주기] 파일경로 출력필드1 [, 출력필드2, ...]

지정된 파일시스템 경로에 주어진 필드 값들을 텍스트 파일로 기록합니다.

overwrite

t로 설정 시 이미 파일이 있더라도 덮어씁니다. 미설정 시 파일이 존재하면 쿼리가 실패합니다. overwrite 옵션과 append 옵션은 동시에 사용할 수 없습니다.

append

t로 설정 시 파일 뒤에 쿼리 결과 내용을 추가합니다. overwrite 옵션과 append 옵션은 동시에 사용할 수 없습니다.

delimiter

미지정 시 기본값은 공백 문자입니다.

gz

t로 설정 시 결과 텍스트 파일이 gz 형식으로 압축됩니다.

encoding

파일 인코딩을 지정합니다. 미설정 시 기본값은 utf-8입니다.

tmp

임시 파일경로를 설정할 경우 파일을 해당 경로에 임시로 작성한 후 쿼리가 종료되면 입력된 파일경로로 이동시킵니다.

partition

t로 설정 시 파일 경로에 시간 기반으로 입력된 매크로를 기준으로 디렉토리를 설정할 수 있습니다. 로그 시각을 기준으로 하는 logtime 매크로와 현재 시각을 기준으로 하는 now 매크로를 사용할 수 있으며, 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

flush

지정한 주기마다 출력 버퍼를 비우고 파일에 쓰도록 설정합니다. 주기 단위는 y, mon, m, w, d, m, s 중 하나를 사용할 수 있습니다. 예를 들어, 5초마다 플러시하려면 5s로 지정합니다.

파일경로

상대 경로 혹은 절대 경로로 입력할 수 있습니다.

출력필드

반드시 1개 이상의 출력 필드를 지정해야 합니다.

사용 예

1) ippair.txt 파일로 src_ip와 dst_ip를 구분자 |로 기록

outputtxt delimiter="|" ippair.txt src_ip, dst_ip

2) ippair.txt 파일로 src_ip와 dst_ip를 구분자 공백으로 기록

outputtxt ippair.txt src_ip, dst_ip

3) 디렉토리를 로그 시간을 기준으로 년월일로, 파일이름을 현재시간 기준으로 시분으로 src_ip와 dst_ip를 기록

outputtxt partition=t {logtime:/yyyy/MM/dd/}{now:HHmm.txt} src_ip, dst_ip

8.4outputcsv

문법

outputcsv [overwrite=t] [append=t] [bom=t] [tab=t] [encoding=인코딩] [tmp=파일경로] [partition=t] [flush=주기] 파일경로 출력필드1 [, 출력필드2, ...]

지정된 파일시스템 경로에 주어진 필드 값들을 CSV 포맷으로 기록합니다.

로그프레소는 비정형 데이터 처리가 가능하여 레코드마다 필드 구성이 다를 수 있지만, CSV 포맷은 그 특성상 모든 row 에 필드 구성이 동일해야 한다는 제약이 있습니다. 따라서 로그프레소의 outputcsv 명령을 사용할 때는 출력필드를 반드시 사용자가 정의해야 합니다. 출력필드 지정 없이 데이터를 파일에 기록하고 싶을 때는 outputjson 명령을 참고하세요.
overwrite

t로 설정 시 이미 파일이 있더라도 덮어씁니다. 미설정 시 파일이 존재하면 쿼리가 실패합니다.

append

t로 설정 시 파일 뒤에 쿼리 결과 내용을 추가합니다. overwrite 옵션과 append 옵션은 동시에 사용할 수 없습니다.

bom

t로 설정 시 바이트 오더 마크를 추가합니다. 미설정 시 파일 헤더에 BOM을 추가하지 않습니다

tab

t로 설정 시 쉼표 대신 탭 문자를 구분자로 사용합니다.

encoding

파일 인코딩을 지정합니다. 미설정 시 기본값은 utf-8입니다.

tmp

임시 파일경로를 설정할 경우 파일을 해당 경로에 임시로 작성한 후 쿼리가 종료되면 입력된 파일경로로 이동시킵니다.

partition

t로 설정 시 파일 경로에 시간 기반으로 입력된 매크로를 기준으로 디렉토리를 설정할 수 있습니다. 로그 시각을 기준으로 하는 logtime 매크로와 현재 시각을 기준으로 하는 now 매크로를 사용할 수 있으며, 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

flush

지정한 주기마다 출력 버퍼를 비우고 파일에 쓰도록 설정합니다. 주기 단위는 y, mon, m, w, d, m, s 중 하나를 사용할 수 있습니다. 예를 들어, 5초마다 플러시하려면 5s로 지정합니다.

파일경로

상대 경로 혹은 절대 경로로 입력할 수 있습니다.

출력필드

반드시 1개 이상의 출력 필드를 지정해야 합니다.

사용 예

1) ippair.csv 파일로 src_ip와 dst_ip를 기록

outputcsv ippair.csv src_ip, dst_ip

2) 디렉토리를 로그 시간을 기준으로 년월일로, 파일이름을 현재시간 기준으로 시분으로 src_ip와 dst_ip를 기록

outputcsv partition=t {logtime:/yyyy/MM/dd/}{now:HHmm.csv} src_ip, dst_ip

8.5outputjson

문법

outputjson [overwrite=t] [append=t] [encoding=인코딩] [tmp=파일경로] [partition=t] [flush=주기] 파일경로 [출력필드1 , 출력필드2, ...]

지정된 파일시스템 경로에 주어진 필드 값들을 JSON 포맷의 텍스트로 기록합니다. 각 JSON 레코드는 개행으로 구분됩니다.

overwrite

t로 설정 시 이미 파일이 있더라도 덮어씁니다. 미설정 시 파일이 존재하면 쿼리가 실패합니다.

append

t로 설정 시 파일 뒤에 쿼리 결과 내용을 추가합니다. overwrite 옵션과 append 옵션은 동시에 사용할 수 없습니다.

encoding

파일 인코딩을 지정합니다. 미설정 시 기본값은 utf-8입니다.

tmp

임시 파일경로를 설정할 경우 파일을 해당 경로에 임시로 작성한 후 쿼리가 종료되면 입력된 파일경로로 이동시킵니다.

partition

t로 설정 시 파일 경로에 시간 기반으로 입력된 매크로를 기준으로 디렉토리를 설정할 수 있습니다. 로그 시각을 기준으로 하는 logtime 매크로와 현재 시각을 기준으로 하는 now 매크로를 사용할 수 있으며, 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

flush

지정한 주기마다 출력 버퍼를 비우고 파일에 쓰도록 설정합니다. 주기 단위는 y, mon, m, w, d, m, s 중 하나를 사용할 수 있습니다. 예를 들어, 5초마다 플러시하려면 5s로 지정합니다.

파일경로

상대 경로 혹은 절대 경로로 입력할 수 있습니다.

출력필드

반드시 1개 이상의 출력 필드를 지정해야 합니다.

사용 예

1) output.json 파일로 모든 필드를 기록

outputjson output.json

2) ippair.json 파일로 src_ip와 dst_ip를 기록

outputjson ippair.json src_ip, dst_ip

3) 디렉토리를 로그 시간을 기준으로 년월일로, 파일이름을 현재시간 기준으로 시분으로 src_ip와 dst_ip를 기록

outputjson partition=t {logtime:/yyyy/MM/dd/}{now:HHmm.json} src_ip, dst_ip

8.6sendsyslog

문법

sendsyslog [dst=목적지IP] [port=목적지포트] [format=포맷] [pri=PRI] [src=출발지IP]

입력되는 모든 데이터를 원격 시스템에 시스로그로 전달합니다.

dst (필수)

목적지 IP를 설정합니다.

port (선택)

목적지 포트 번호를 설정합니다. 미지정시 기본값으로 514가 지정됩니다.

format (선택)

패킷 본문 텍스트의 양식을 txt 혹은 json 중 하나로 지정합니다. txt로 지정하면 line 필드의 문자열 값을 그대로 전송하고, json로 지정하면 입력 데이터 전체를 JSON 형식으로 변환하여 전송합니다. 미지정 시 기본값은 txt 입니다.

pri (선택)

RFC 5424 (https://tools.ietf.org/html/rfc5424)에 정의된 PRI 상수값을 입력합니다. 미지정 시 기본값은 134입니다. 이는 local0 와 INFO 수준에 해당됩니다.

src (선택)

출발지 IP를 로그프레소 IP 주소가 아닌 임의의 IP로 바꿔서 전송하려는 경우 설정합니다.

출발지 IP를 변조하여 전송하려는 경우, 시스템에 libpcap이나 winpcap 라이브러리가 미리 설치되어 있어야 합니다. 버전이 일치하지 않으면 부팅 시 라이브러리 링크에 실패하면서 에러 로그가 남을 수 있으며, 이 경우 araqne-pcap 라이브러리를 시스템에서 다시 컴파일해야 할 수 있습니다. 출발지 IP를 지정하는 경우에만 PCAP을 사용하여 주소를 변조한 패킷을 생성하여 전송합니다. MTU를 넘는 패킷 크기는 전송에 실패하므로 주의해야 합니다.

8.7sendmail

문법

sendmail

입력되는 레코드를 메일로 전달합니다. sendmail 커맨드는 입력이 들어오는 즉시 메일 큐에 적재하고, 메일을 비동기적으로 발송합니다. 이 커맨드를 실행하려면 관리자 권한이 필요합니다.

sendmail 커맨드는 아래의 입력 필드를 사용합니다. 만약 입력 필드를 누락하거나, 주소 목록이 잘못된 경우 _sendmail_fail 필드를 출력하여 발송 오류를 표시합니다. 단, SMTP 설정 누락으로 인한 오류는 표시되지 않습니다.

to (필수)

쉼표로 구분된 메일 주소 목록

subject (필수)

메일 제목. 메일 제목에 태그 등 특수문자가 입력되는 경우 자동으로 이스케이프 처리됩니다.

message (필수)

메일 본문 텍스트. 메일 본문에 태그 등 특수문자가 입력되는 경우 자동으로 이스케이프 처리됩니다.

관리자의 쿼리 실수로 수천 건 이상의 대량 메일이 발송 큐에 적재된 경우, 로그프레소 쉘에서 강제로 메일 발송 큐를 비울 수 있습니다. logpresso.mailQueue 명령으로 현재 대기 중인 발송 메일 목록을 확인할 수 있으며, logpresso.clearMailQueue 명령으로 일괄 삭제할 수 있습니다.

8.8drop

문법

drop

들어오는 모든 입력을 버립니다. 일반적으로 스크립트와 같이 부수적인 효과가 있는 쿼리 커맨드를 실행하고 출력 결과는 버릴 때나, 배치 실행만 하고 쿼리 결과는 필요없을 때, 이전 커맨드의 쿼리 수행 시간만을 측정하려고 할 때 사용합니다.

Count of comments [0]