5.데이터 적재

Edit

5.1dropdrop

들어오는 모든 입력을 버립니다.

문법

drop

설명

쉘에서 스크립트 파일 형태로 부수적인 효과가 있는 쿼리 명령어를 실행하고 출력 결과는 버릴 때, 배치 실행만 하고 쿼리 결과가 필요 없을 때, 이전 명령어의 쿼리 수행 시간만을 측정하려고 할 때 사용합니다.

5.2importimport

입력되는 모든 레코드를 지정된 테이블에 기록합니다. 이 명령어를 실행하려면 관리자 권한이 필요합니다.

문법

import [create=t] TABLE
create=t

t로 설정하면, 데이터를 저장할 테이블의 유무를 확인합니다. 테이블이 없으면 자동으로 테이블을 생성합니다. 이 옵션을 사용하지 않거나, f로 설정하면 테이블이 존재하지 않으면 쿼리가 실패합니다.

TABLE

데이터를 저장할 테이블의 이름을 지정합니다.

사용 예

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

table order=asc sys_cpu_logs 
| import create=t old_sys_cpu_logs

5.3insertinsert

입력된 필드 값을 기준으로 테이블을 선택하여 데이터를 입력합니다. 이 명령어를 실행하려면 관리자 권한이 필요합니다.

문법

insert table=FIELD [create=t]

table=FIELD

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

create=t

t로 설정하면, 데이터를 저장할 테이블의 유무를 확인합니다. 테이블이 없으면 자동으로 테이블을 생성합니다. 이 옵션을 사용하지 않거나, f로 설정하면 테이블이 존재하지 않으면 쿼리가 실패합니다.

5.4outputcsvoutputcsv

특정 필드의 값을 CSV 파일로 내보냅니다.

문법

outputcsv [append=t]|[overwrite=t] [bom=t] [encoding=CHARSET] [flush=NUM{y|mon|w|d|h|m|s}] [partition=t] [tab=t] [tmp=TMP_FILE_PATH] FILE_PATH FIELD_1[, FIELD_2, ...]
append=t

t로 설정하면 FILE_PATH로 지정된 경로에서 파일을 찾은 후, 해당 파일의 뒷부분에 출력합니다. 파일이 없으면 지정된 경로에 새 파일을 만들어서 내용을 출력합니다. append 옵션은 overwrite 옵션과 함께 사용할 수 없습니다.

bom=t

t로 설정하면 파일 헤더에 BOM(Byte Order Mark)를 추가합니다. 파일 인코딩 또는 CSV/TSV 파일의 이용 환경에 따라 필요성을 판단하여 사용하세요. 이 옵션을 지정하지 않거나, f로 설정하면 BOM을 추가하지 않습니다.

encoding=CHARSET

문자열 인코딩 형식(기본값: UTF-8). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

flush=NUM{y|mon|w|d|h|m|s}

지정한 주기마다 출력 버퍼에 저장된 값을 FILE_PATH로 지정된 파일에 기록하고 버퍼를 지우도록 설정합니다. 주기 단위는 y(연), mon(월), w(주), d(일), h(시), m(분), s(초) 중 하나를 사용할 수 있습니다. 예를 들어, 5초마다 버퍼를 비우려면 '5s'로 지정합니다.

overwrite=t

t로 설정하면 FILE_PATH로 지정된 경로에서 파일을 찾은 후, 파일의 내용을 덮어쓰는 방식으로 출력합니다. overwrite 옵션은 append 옵션과 함께 사용할 수 없습니다.

partition=t

t로 설정하면 매크로를 이용해 디렉터리 경로를 지정할 수 있습니다. 매크로를 이용하면 디렉터리나 파일 이름을 시간에 따라 변경합니다.

tab=t

t로 설정하면 Tab 문자를 구분자로 인식합니다. TSV(Tab-separated Values) 파일을 처리할 때 유용합니다. 이 설정을 지정하지 않거나, f로 설정하면 구분자로 쉼표(,)를 사용합니다.

tmp=TMP_FILE_PATH

이 옵션을 설정하면 임시 파일을 만들어 해당 경로에 출력한 다음, 쿼리문 실행이 종료되면 FILE_PATH로 지정한 파일 경로로 이동시킵니다.

FILE_PATH

절대 경로로 파일 경로를 지정합니다.

FIELD_1[, FIELD_2, ...]

CSV 또는 TSV 파일에 출력할 필드를 1개 이상 지정합니다. 여러 필드를 지정하려면 구분자로 쉼표(,)를 사용합니다.

CSV와 TSV 형식은 모든 행의 필드 구성이 동일해야 하므로 로그프레소의 outputcsv 명령을 사용할 때는 반드시 출력필드를 정의해주세요. 출력필드를 지정하지 않고 데이터를 파일에 기록하고 싶을 때는 outputjson 명령을 참고하세요.

설명

partition=t 옵션을 이용하면 매크로를 이용해 시간에 따라 디렉터리 및 파일 경로를 변경하도록 FILE_PATH를 지정할 수 있습니다. 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

사용할 수 있는 매크로는 logtimenow가 있습니다.

매크로는 중괄호 쌍({ })으로 감싸 입력합니다. 입력 예시는 사용 예 2번을 참조하세요.

사용 예

1) ippair.csv 파일로 src_ipdst_ip를 기록

outputcsv /home/logpresso/files/ippair.csv src_ip, dst_ip

2) 매크로를 이용해 로그 발생 연월일로 디렉터리를 지정하고, 현재 시각 기준 파일 이름을 생성하는 방식으로 src_ipdst_ip 필드 값을 기록

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

5.5outputjsonoutputjson

특정 필드의 값을 JSON 형식으로 내보냅니다. 각 JSON 레코드는 개행으로 구분됩니다.

문법

outputjson [append=t]|[overwrite=t] [encoding=CHARSET] [flush=NUM{y|mon|w|d|h|m|s}] [partition=t] [tmp=TMP_FILE_PATH] FILE_PATH [FIELD_1[, FIELD_2, ...]]
append=t

t로 설정하면 FILE_PATH로 지정된 경로에서 파일을 찾은 후, 해당 파일의 뒷부분에 출력합니다. 파일이 없으면 지정된 경로에 새 파일을 만들어서 내용을 출력합니다. 이 옵션은 overwrite 와 함께 사용할 수 없습니다.

encoding=CHARSET

문자열 인코딩 형식(기본값: UTF-8). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

flush=NUM{y|mon|w|d|h|m|s}

지정한 주기마다 출력 버퍼에 저장된 값을 FILE_PATH로 지정된 파일에 기록하고 버퍼를 지우도록 설정합니다. 주기 단위는 y(연), mon(월), w(주), d(일), h(시), m(분), s(초) 중 하나를 사용할 수 있습니다. 예를 들어, 5초마다 버퍼를 비우려면 '5s'로 지정합니다.

overwrite=t

t로 설정하면 FILE_PATH로 지정된 경로에서 파일을 찾은 후, 파일의 내용을 덮어쓰는 방식으로 출력합니다. 지정한 경로에 파일이 없으면 실행 오류가 발생합니다. 이 옵션은 append와 함께 사용할 수 없습니다.

partition=t

t로 설정하면 매크로를 이용해 디렉터리 경로를 지정할 수 있습니다. 매크로를 이용하면 디렉터리나 파일 이름을 시간에 따라 변경합니다.

tmp=TMP_FILE_PATH

이 옵션을 설정하면 임시 파일을 만들어 해당 경로에 출력한 다음, 쿼리문 실행이 종료되면 FILE_PATH로 지정한 파일 경로로 이동시킵니다.

FILE_PATH

상대 경로 혹은 절대 경로로 파일 경로를 지정합니다.

FIELD_1[, FIELD_2, ...]

JSON 파일에 출력할 필드를 1개 이상 지정합니다. 여러 필드를 지정하려면 구분자로 쉼표(,)를 사용합니다. 필드를 선택하지 않으면 모든 필드 값을 JSON 파일에 기록합니다.

설명

partition=t 옵션을 이용하면 매크로를 이용해 시간에 따라 디렉터리 및 파일 경로를 변경하도록 FILE_PATH를 지정할 수 있습니다. 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.

사용할 수 있는 매크로는 logtimenow가 있습니다.

매크로는 중괄호 쌍({ })으로 감싸 입력합니다. 입력 예시는 사용 예 2번을 참조하세요.

사용 예

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

outputjson /home/logpresso/files/output.json

2) ippair.json 파일에 src_ipdst_ip를 기록

outputjson /home/logpresso/files/ippair.json src_ip, dst_ip

3) 기록 매크로를 이용해 로그 발생 연월일로 디렉터리를 지정하고, 현재 시각 기준 파일 이름을 생성하는 방식으로 src_ipdst_ip 필드 값을 기록

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

5.6outputpcapoutputpcap

입력으로 받은 payload 필드를 지정한 파일 시스템 경로에 PCAP 파일로 기록합니다.

문법

FORWRADING_STATEMENT | outputpcap FILE_PATH
FORWRADING_STATEMENT

pcapfile 명령어를 이용하거나, PCAP 수집기로부터 데이터 스트림을 받을 수 있도록 logger 명령어를 이용하거나, 직접 데이터 스트림을 이용하도록 stream 명령어 등을 이용해서 작성합니다.

FILE_PATH

파일을 저장할 절대 경로를 지정합니다.

사용 예

1) pcap_stream 로그 수집기에서 발생하는 스트림을 5분간 모니터링하면서 목적지나 출발지 포트가 80인 패킷만 저장

logger window=5m localhost\pcap_stream
| pcapdecode
| search src_port==80 or dst_port==80
| outputpcap /home/logpresso/files/http.pcap

5.7outputtxtoutputtxt

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

문법

outputtxt [append=t]|[overwrite=t] [delimiter="CHAR"] [encoding=CHARSET] [flush=NUM{y|mon|w|d|h|m|s}] [gz=t] [partition=t] [tmp=TMP_FILE_PATH] FILE_PATH FIELD_1[, FIELD_2, ...]
append=t

t로 설정하면 FILE_PATH로 지정된 경로에서 파일을 찾은 후, 해당 파일의 뒷부분에 출력합니다. 파일이 없으면 지정된 경로에 새 파일을 만들어서 내용을 출력합니다. 이 옵션은 overwrite와 함께 사용할 수 없습니다.

delimiter="CHAR"

필드 구분자로 사용할 문자를 입력합니다. 지정하지 않으면 공백문자를 사용합니다.

encoding=CHARSET

문자열 인코딩 형식(기본값: UTF-8). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml

flush=NUM{y|mon|w|d|h|m|s}

지정한 주기마다 출력 버퍼에 저장된 값을 FILE_PATH로 지정된 파일에 기록하고 버퍼를 지우도록 설정합니다. 주기 단위는 y(연), mon(월), w(주), d(일), h(시), m(분), s(초) 중 하나를 사용할 수 있습니다. 예를 들어, 5초마다 버퍼를 비우려면 '5s'로 지정합니다.

gz=t

t로 설정하면 텍스트 파일을 gz 아카이브 파일로 압축합니다.

overwrite=t

t로 설정하면 FILE_PATH로 지정된 경로에서 파일을 찾은 후, 파일의 내용을 덮어쓰는 방식으로 출력합니다. 지정한 경로에 파일이 없으면 실행 오류가 발생합니다. 이 옵션은 append와 함께 사용할 수 없습니다.

partition=t

t로 설정하면 매크로를 이용해 디렉터리 경로를 지정할 수 있습니다. 매크로를 이용하면 디렉터리나 파일 이름을 시간에 따라 변경합니다. FILE_PATH에서 매크로 사용법을 참조하세요.

tmp=TMP_FILE_PATH

이 옵션을 설정하면 임시 파일을 만들어 해당 경로에 출력한 다음, 쿼리문 실행이 종료되면 FILE_PATH로 지정한 파일 경로로 이동시킵니다.

FILE_PATH

절대 경로로 파일 경로를 지정합니다.

FIELD_1[, FIELD_2, ...]

TXT 파일에 출력할 필드를 1개 이상 지정합니다. 여러 필드를 지정하려면 구분자로 쉼표(,)를 사용합니다.

설명

매크로와 partition=t 옵션을 이용해 시간에 따라 디렉터리 및 파일 경로를 변경하도록 FILE_PATH를 지정할 수 있습니다. 매크로를 사용할 때에는 반드시 partition=t 옵션을 지정해야 합니다. 지정하지 않으면 쿼리가 실패합니다.

사용할 수 있는 매크로는 logtimenow가 있습니다.

매크로는 중괄호 쌍({ })으로 감싸 입력합니다. 입력 예시는 사용 예 2번을 참조하세요.

사용 예

1) ippair.txt 파일에 src_ipdst_ip 필드의 값을 기록

outputtxt /home/logpresso/files/ippair.txt src_ip, dst_ip

2) 기록 매크로를 이용해 로그 발생 연월일로 디렉터리를 지정하고, 현재 시각 기준 파일 이름을 생성하는 방식으로 src_ipdst_ip 필드 값을 기록

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

5.8sendmailsendmail

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

메일을 보내기 위해선 시스템 설정 메뉴에서 메일 서버 설정을 해야 합니다.

문법

sendmail [html=t]
html=t

입력으로 받는 message 필드 값을 html 형식으로 간주해 메일 본문을 파싱합니다.

html 옵션은 ENT-3.10.2004.0 버전부터 사용 가능합니다.

설명

sendmail 명령어는 다음과 같은 필드를 입력으로 받습니다. 입력 필드가 누락되었거나, 주소 목록이 잘못된 경우 _sendmail_fail 필드에 오류 메시지를 기록합니다. 단, SMTP 설정 누락으로 인한 오류는 표시되지 않습니다.

to

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

subject

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

message

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

로그프레소 쉘에서 logpresso.mailQueue 명령으로 현재 대기 중인 발송 메일 목록을 확인할 수 있으며, logpresso.clearMailQueue 명령으로 일괄 삭제할 수 있습니다.

사용 예

1) to, subject, message 필드를 생성해 sendmail 명령어로 전달해 메일 전송

json "{}"
| eval to="[email protected], [email protected]",
     subject="Hello World",
     message="<h1>Hello, World</h1>"
| sendmail html=t

5.9sendsyslogsendsyslog

문법

sendsyslog [dst=IP_ADDR] [format=json|txt] [port=NUM] [pri=NUM] [src=IP_ADDR]
dst=IP_ADDR

Syslog 서버의 IP 주소를 지정합니다.

format=json|txt

전송할 로그의 형식을 json, txt 중에서 선택해 지정합니다. 지정하지 않으면 txt 형식을 사용합니다. json은 입력으로 받는 데이터를 모두 JSON 형식으로 변환해 전송하고, [object Text]txtline 필드의 문자열 값을 그대로 전송합니다.

port=NUM

Syslog 서버의 리스닝 포트 번호를 지정합니다. 포트 번호는 1-65535 사이의 값을 입력합니다. 지정하지 않으면 Syslog 서비스의 기본 포트인 '514'를 사용합니다.

pri=NUM

RFC 5424 (https://tools.ietf.org/html/rfc5424)에 정의된 PRI 상수값을 입력합니다. 미지정 시 기본값은 134입니다. 이는 local0INFO 수준에 해당됩니다. PRI 상수값은 부록 A. Syslog PRI 상수표를 참조하세요.

src=IP_ADDR

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

출발지 IP 주소를 변경해 전송하려면 운영체제에 libpcap이나 winpcap 라이브러리가 설치되어 있어야 합니다. 또한 araqne-pcap 라이브러리를 운영체제에 맞게 다시 컴파일해야 할 수 있습니다. 출발지 IP 주소를 지정하는 경우에만 PCAP을 사용하여 주소를 변경한 패킷을 생성하여 전송합니다. MTU를 넘는 패킷 크기는 전송에 실패하므로 주의해야 합니다.
Count of comments [0]