2.데이터 조회

Edit

2.1confdbconfdb

로그프레소의 설정을 저장하는 araqne DB의 설정값 데이터를 조회합니다. 이 명령어를 실행하려면 관리자 권한이 필요합니다.

문법

confdb databases
confdb cols DB_NAME
confdb docs DB_NAME COL_NAME
confdb logs DB_NAME
databases

모든 설정 데이터베이스 인스턴스의 목록을 조회합니다.

cols DB_NAME

confdb databases 명령으로 조회된 데이터베이스 인스턴스 중에서 지정한 설정 인스턴스의 모든 컬렉션 이름 목록을 나열합니다.

docs DB_NAME COL_NAME

confdb cols DB_NAME으로 조회된 컬렉션 이름 목록 중 지정한 설정 컬렉션의 모든 문서 개체가 조회됩니다.

logs DB_NAME

confdb databases 명령으로 조회된 데이터베이스 인스턴스 중 지정한 설정 인스턴스의 로그를 조회합니다.

사용 예

1) 데이터베이스 인스턴스 목록 조회

confdb databases

2) araqne-cron 데이터베이스 인스턴스의 컬렉션 목록 조회

confdb cols araqne-cron

3) araqne-cron 데이터베이스 인스턴스의 schedule 컬렉션 조회

confdb docs araqne-cron schedule

4) araqne-cron 데이터베이스 인스턴스의 로그 조회

confdb logs araqne-cron

2.2csvfilecsvfile

CSV(Comma-separated Values) 텍스트 파일에서 데이터를 조회합니다. CSV 파일 첫번째 줄에 있는 헤더 정보를 읽어와 필드명으로 사용합니다.

문법

csvfile [cs=CHARSET] [limit=NUM] [maxcol=NUM] [offset=NUM] [rest=t] [strict=t] [tab=t] FILE_PATH
cs=CHARSET

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

limit=NUM

가져올 최대 레코드 개수를 입력합니다.

maxcol=NUM

조회할 최대 컬럼 수를 지정합니다(기본값: 10000). 최대 컬럼을 초과하는 경우 처리 방식은 rest 옵션을 이용해 정의합니다.

offset=NUM

건너뛸 레코드 개수를 입력합니다.

rest=t

't'로 설정하면 maxcol 옵션으로 지정한 최대 컬럼 수를 넘어가는 데이터를 _rest 필드에 넣습니다. 예를 들어 20000개의 컬럼이 있는 CSV 파일을 조회할 때, maxcol을 5000으로 지정하면 5000개의 컬럼이 조회되고 나머지 데이터는 _rest 필드에 들어갑니다. 이 설정을 지정하지 않거나, 'f'로 설정하면 maxcol을 초과하는 데이터를 5000으로 지정하면 5000개의 컬럼이 조회되고 나머지 컬럼은 버립니다.

strict=t

't'로 설정하면 RFC4180 표준(https://tools.ietf.org/html/rfc4180)을 엄격하게 적용하여 CSV 파일을 파싱합니다. 엑셀로 CSV 파일을 열었을 때와 같습니다. 이 설정을 지정하지 않거나, 'f'로 설정하면 CSV 파일을 유연하게 파싱합니다.

tab=t

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

FILE_PATH

데이터를 읽어들일 파일의 절대 경로를 입력합니다. 파일 이름에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다. 파일을 읽어오려면 로그프레소 실행 계정에 접근권한이 부여되어 있어야 합니다.

maxcolrest 옵션은 ENT #2246 2019-05-24_14-58 일자 버전부터 지원

사용 예

1) test.csv 파일을 조회

# Unix 계열의 파일 경로 형식
csvfile /home/logpresso/test.csv
# Windows의 파일 경로 형식
csvfile C:\logpresso\test.csv

2) test.csv 파일 내용 중 20건 조회

csvfile limit=20 /home/logpresso/test.csv

3) 컬럼 갯수가 20000개인 20000columns.csv 파일에서 5000개의 컬럼만 조회

csvfile maxcol=5000 /home/logpresso/20000columns.csv

4) 구분자와 컬럼 사이에 공백이 있는 데이터

strict=t일 때, 구분자와 컬럼 사이에 공백이 있으면 큰 따옴표(")는 문자로 인식되어 의도한대로 파싱되지 않습니다. strict=f일 때는 큰 따옴표 쌍(" ")의 짝이 맞으면 따옴표 쌍 안에 있는 문자열만 컬럼으로 인식하기 때문에 의도한대로 파싱됩니다.

# 원본 데이터
"Chevy", "Venture ""Extended Edition, Very Large""", "MUST SELL! air, moon roof, loaded", "5000.00"

# 'strict=t'일 때
[Chevy],[ "Venture ""Extended Edition],[ Very Large"""],[ "MUST SELL! air],[ moon roof],[ loaded"],[ "5000.00"]

# 'strict=f'일 때
[Chevy],[Venture "Extended Edition, Very Large"],[MUST SELL! air, moon roof, loaded],[5000.00]

5) 구분자와 컬럼 사이에 공백이 없는 데이터

strict 값에 관계없이 구분자와 컬럼 사이에 공백이 없으므로 의도한대로 파싱됩니다.

# 원본 데이터
"Chevy","Venture ""Extended Edition, Very Large""","MUST SELL! air, moon roof, loaded","5000.00"

# 'strict=t'일 때
[Chevy],[Venture "Extended Edition, Very Large"],[MUST SELL! air, moon roof, loaded],[5000.00]

# 'strict=f'일 때
[Chevy],[Venture "Extended Edition, Very Large"],[MUST SELL! air, moon roof, loaded],[5000.00]

6) 큰 따옴표(")를 이스케이프 처리(\")한 데이터

strict=t일 때, 이스케이프 문자(\)를 일반 문자로 인식하므로 큰 따옴표 쌍(" ")으로 감싼 컬럼 안에서 \"를 사용하여 큰 따옴표(")를 표기한 경우, 의도한대로 파싱되지 않습니다. strict=f일 때는 겹 큰 따옴표("")와 이스케이프 처리한 큰 따옴표(\")가 의도한대로 컬럼 안에서 큰 따옴표로 파싱됩니다.

# 원본 데이터
"Chevy","Venture \"Extended Edition, Very Large\"","MUST SELL! air, moon roof, loaded","5000.00"

# 'strict=t'일 때
[Chevy],[Venture \Extended Edition],[Very Large\""],[MUST SELL! air, moon roof, loaded],[5000.00]

# 'strict=f'일 때
[Chevy],[Venture "Extended Edition, Very Large"],[MUST SELL! air, moon roof, loaded],[5000.00]

7) 따옴표 대신에 표기로 겹 큰 따옴표("")를 사용한 데이터

strict 값에 관계없이 큰 따옴표(")로 감싸인 컬럼에서 겹 큰 따옴표("")를 사용하여 표기하기 때문에 의도한대로 파싱됩니다.

# 원본 데이터
"Chevy","Venture ""Extended Edition, Very Large""","MUST SELL! air, moon roof, loaded","5000.00"

# 'strict=t'일 때
[Chevy],[Venture "Extended Edition, Very Large"],[MUST SELL! air, moon roof, loaded],[5000.00]

# 'strict=f'일 때
[Chevy],[Venture "Extended Edition, Very Large"],[MUST SELL! air, moon roof, loaded],[5000.00]

2.3fulltextfulltext

테이블에 저장된 데이터에 대해 풀텍스트 인덱스를 이용하여 데이터를 검색합니다.

문법

fulltext [duration=NUM{mon|w|d|h|m|s}]|[[from=yyyyMMddHHmmss] [to=yyyyMMddHHmmss]] [limit=NUM] [offset=NUM] EXPR [from TABLE_1[.INDEX], TABLE_2[.INDEX], ...]
duration=NUM{mon|w|d|h|m|s}

현재 시각을 기준으로 지정한 시간 이내의 로그만 검색합니다. s(초), m(분), h(시), d(일), w(주), mon(월) 단위로 지정할 수 있습니다. 예를 들어 10s은 현재 시각을 기준으로 “최근 10초”를 의미합니다. 이 옵션은 from, to와 함께 사용할 수 없습니다.

from=yyyyMMddHHmmss

yyyyMMddHHmmss 형식으로 검색할 기간의 시작 날짜와 시각을 지정합니다. 앞부분만 입력하면 나머지 자리는 0으로 인식합니다. 예를 들어, 20130605를 입력하면 20130605000000(2013년 6월 5일 0시 0분 0초)으로 인식합니다. 이 옵션은 duration과 함께 사용할 수 없습니다.

to=yyyyMMddHHmmss

yyyyMMddHHmmss 형식으로 검색을 종료할 날짜와 시각을 지정합니다. 입력 방식은 from과 같습니다. 이 옵션은 duration과 함께 사용할 수 없습니다.

limit=NUM

가져올 최대 로그 개수를 지정합니다.

offset=NUM

건너뛸 로그 개수를 지정합니다.

EXPR [from TABLE_1[.INDEX], TABLE_2[.INDEX], ...]

테이블 및/또는 인덱스에서 검색할 문자열 또는 표현식을 입력합니다. 테이블 이름만 지정하게 되면 해당 테이블의 모든 인덱스를 조회하게 됩니다. 만약 같은 테이블이나 인덱스를 여러번 지정하게 되면, 동일한 검색 결과가 해당 횟수만큼 중복되어 출력됩니다.

to 옵션으로 지정된 시각은 항상 검색 범위에서 제외됩니다. fromto에 동일한 시각을 입력하면 검색할 대상 시간 범위가 ‘0’이 되므로 아무것도 검색 결과가 나타나지 않습니다.
duration, fromto를 사용하지 않으면 모든 로그를 검색합니다.

설명

EXPR은 검색할 데이터를 표현하는 식으로, 다음과 같은 규칙을 만족해야 합니다.

fulltext의 서브쿼리가 반환하는 검색 대상이 많을수록 인덱스 검색 속도가 느려집니다. fields 명령으로 꼭 필요한 필드만 검색하는 것을 권장합니다.

사용 예

1) 전체 테이블에서 2013년 6월 5일 로그 중 1.2.3.4를 포함한 로그 검색

fulltext from=20130605 to=20130606 "1.2.3.4"

2) iis 테이블에서 cmdshell을 포함한 모든 웹 로그 검색

fulltext "cmdshell" from iis

3) iis 테이블에서 game을 포함하면서 MSIE 혹은 Firefox 문자열이 포함된 모든 웹 로그 검색

fulltext "game" and ("MSIE" or "Firefox") from iis

4) iis 테이블에서 400~500 범위의 숫자를 문자열로 포함한 웹 로그 검색

fulltext range(400, 500) from iis

5) iis 테이블에서 블랙리스트 DB의 IP 집합을 검색

fulltext [ dbquery black select ip from ip_blacklist ] from iis

6) 테이블의 파서가 openssh인 테이블 집합을 대상으로 풀텍스트 검색

fulltext "term" from meta("parser==openssh")

2.4jsonjson

JSON 문자열을 이용하여 데이터 원본을 생성합니다. 일반적으로 이후에 연결되는 쿼리 커맨드의 동작을 테스트하기 위한 용도로 사용합니다.

문법

json "JSON_DATA"
JSON_DATA

JSON 문자열을 큰 따옴표 쌍(" ")으로 감싸 입력하거나, JSON으로 파싱된 문자열을 반환하는 표현식을 입력합니다. JSON 문자열에 큰 따옴표(")가 있으면 역슬래시(\)를 사용해 이스케이프 처리(\")해야 합니다.

사용 예

1) a => 8, b => "miles" 키/값 쌍을 가진 로그 생성

json "{ 'a': 8, 'b':'miles' }"

2) a => 8, b => "miles" 로그와 a => 2, b => "cats" 로그 생성

json "[{ 'a': 8, 'b':'miles' }, { 'a': 2, 'b':'cats' }]"

2.5jsonfilejsonfile

JSON 파일에서 데이터를 조회합니다. JSON의 키/값은 로그프레소 타입으로 파싱됩니다.

문법

jsonfile [limit=NUM] [offset=NUM] FILE_PATH
limit=NUM

가져올 최대 레코드 개수를 입력합니다. 개행문자(CRLF 또는 LF)로 레코드를 구분합니다.

offset=NUM

건너뛸 레코드 개수를 입력합니다.

FILE_PATH

데이터를 읽어들일 파일의 절대 경로를 입력합니다. 파일 이름에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다. 파일을 읽어오려면 로그프레소 실행 계정에 접근권한이 부여되어 있어야 합니다.

2.6loadload

로그프레소에 저장된 쿼리 결과를 조회합니다.

문법

load GUID

GUID

(ENT, STD 기준) 쿼리 > 불러오기 > 저장된 쿼리 결과 목록에 저장된 쿼리 결과에 할당된 GUID를 입력합니다.

설명

GUID 정보를 조회하는 명령어가 없으므로 이 명령을 사용자가 직접 실행하는 경우는 없습니다. (ENT, STD 기준) 쿼리 > 불러오기 > 저장된 쿼리 결과 목록에서 저장된 항목 이름을 누르면 쿼리 > 쿼리에서 이 명령을 실행해 결과를 보여줍니다.

사용 예

1) 저장한 쿼리 결과 조회

load f1737746-1dbf-48e6-8efb-1091a6fde37e

2.7loggerlogger

지정된 시간 동안 로그 수집기로 전송된 로그를 실시간으로 출력합니다. 이 명령어를 실행하려면 관리자 권한이 필요합니다.

문법

logger window=NUM{y|mon|w|d|h|m|s} NODE\LOGGER[, NODE\LOGGER, ...]
window=NUM{y|mon|w|d|h|m|s}

쿼리 실행 시점부터 출력을 실행할 시간을 지정합니다. s(초), m(분), h(시), d(일), w(주), mon(월), y(연) 단위로 지정할 수 있습니다. 예를 들어 10s은 쿼리 실행 시각을 기준으로 “앞으로 10초”입니다.

NODE_ID\LOGGER[, NODE_ID\LOGGER, ...]

쿼리를 실행할 로그 수집기의 논리적 경로를 입력합니다. 두 개 이상 로그 수집기를 지정하려면 구분자로 쉼표(,)를 사용합니다. 쿼리를 실행한 다음 로그 수집기 이름을 _logger 필드에서 확인할 수 있습니다.

설명

웹 인터페이스에서 NODE_ID를 확인할 수 있습니다.

웹 인터페이스에서 로거(LOGGER)의 이름을 확인할 수 있습니다.

LOGGER에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 로그 수집기를 한 번에 조회할 수 있습니다.

사용 예

1) local\sample1, local\sample2 로그 수집기에서 10초간 실시간 수신

logger window=10s local\sample1, local\sample2

2.8pcapfilepcapfile

PCAP 파일에서 데이터를 조회합니다.

문법

pcapfile FILE_PATH
FILE_PATH

데이터를 읽어들일 파일의 절대 경로를 입력합니다. 파일 이름에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다. 파일을 읽어오려면 로그프레소 실행 계정에 접근권한이 부여되어 있어야 합니다.

설명

페이로드 바이너리를 payload 필드에 출력합니다. 이 명령어는 PCAP 파일을 읽어들인 후 데이터를 가공하는 명령인 decodedhcp, decodedns, decodehttp, decodesflow, pcapdecode 등으로 전달하는 용도로 사용합니다.

2.9remoteremote

페데레이션 등록된 원격 노드에서 쿼리를 실행합니다. 노드 접속 실패 시 쿼리가 실패합니다.

문법

remote NODE [ SUBQUERY ]
NODE

쿼리를 실행할 대상 노드의 이름으로, system nodes 쿼리 결과에서 노드 이름을 확인 후 입력합니다.

SUBQUERY

대괄호 쌍([ ]) 안에 서브쿼리문을 입력합니다.

사용 예

1) n1 노드에서 system tables 쿼리 실행

remote n1 [ system tables ]

2.10resultresult

현재 세션에서 실행 중인 쿼리 결과를 조회합니다.

문법

result [offset=NUM] QUERY_ID
offset=NUM

건너뛸 레코드 개수를 입력합니다.

QUERY_ID

결과를 조회할 쿼리의 ID. 쿼리 ID는 system queries를 실행하여 확인 가능합니다.

사용 예

1) 현재 세션에서 실행중인 쿼리(616)의 쿼리 결과를 조회

result 616

2) 현재 세션에서 실행중인 쿼리(616)의 쿼리 결과 중 10개를 건너 뛰고 조회

result offset=10 616

2.11streamstream

지정된 스트림으로부터 출력을 수신하거나, 지정된 스트림으로 입력 데이터를 전달합니다. 이 커맨드를 실행하려면 관리자 권한이 필요합니다.

문법

특정한 스트림 쿼리를 지정된 시간 동안 조회할 때

stream window=NUM{y|mon|w|d|h|m|s} STREAM_NAME[, STREAM_NAME, ...]

포워딩 쿼리문으로부터 입력을 받아 다른 스트림으로 전달할 때

FORWARDING_STATEMENT | stream forward=t STREAM_NAME[, STREAM_NAME, ...]
FORWARDING_STATEMENT

로거, 테이블, 혹은 다른 스트림을 전달하거나, 파일을 읽어들여 출력하는 명령문으로, jsonfile, pcapfile, textfile, xmlfile, zipfile과 같이 파일에서 데이터를 가져오는 명령어를 이용하거나, 수집기로부터 데이터를 받을 수 있도록 logger 명령어를 이용하거나, 직접 데이터 스트림을 이용하도록 stream 명령어 등을 이용해서 작성합니다. 테이블에 입력되는 레코드를 행 단위로 읽어오도록 table 명령어를 시용할 수도 있습니다.

forward=t

't'로 설정하면 지정한 스트림 쿼리들의 입력으로 현재 쿼리 데이터를 넘깁니다. 이 옵션은 명시적으로 스트림 전달 기능을 활성화할 때만 사용합니다. 기본값은 'f'로, 특별히 지정하지 않는 한 사용하지 않습니다. 이 옵션은 window와 함께 사용할 수 없습니다.

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

쿼리 실행 시점부터 출력을 실행할 시간을 지정합니다. s(초), m(분), h(시), d(일), w(주), mon(월), y(연) 단위로 지정할 수 있습니다. 단위가 y일 때, '1y'만 허용됩니다. 예를 들어 10s은 쿼리 실행 시각을 기준으로 “앞으로 10초”입니다. 이 옵션은 forward와 함께 사용할 수 없습니다.

STREAM_NAME[, STREAM_NAME, ...]

스트림 이름을 입력합니다. 옵션에 따라 지정된 스트림을 실시간으로 출력하거나, 지정된 스트림으로 입력받은 데이터를 전달합니다. 두 개 이상 스트림을 지정하려면 구분자로 쉼표(,)를 사용합니다. 스트림 이름에 와일드카드(*)를 사용할 수 있습니다. 와일드카드를 사하면 특정 문자열 패턴을 포함한 모든 스트림을을 한 번에 보여줍니다. 쿼리를 실행하면 스트림 이름을 _stream 필드에서 확인할 수 있습니다.

FORWARDING_STATEMENTtable 명령어를 이용하는 경우, table 명령어의 옵션으로 제공되는 windows를 사용하세요.

사용 예

1) sample1, sample2 스트림 쿼리의 출력을 10초간 실시간 수신

stream window=10s sample1, sample2

2) test 테이블의 데이터 100건을 스트림 쿼리 sample1, sample2의 입력으로 전달

table limit=100 test | stream forward=t sample1, sample2

2.12tabletable

로그프레소 테이블에 저장된 데이터를 조회합니다.

문법

table [duration=NUM{mon|w|d|h|m|s}]|[[from=yyyyMMddHHmmss] [to=yyyyMMddHHmmss]]|window=NUM{y|mon|w|d|h|m|s}] [limit=NUM] [offset=NUM] [order=asc] {TABLE[, TABLE, ... ]|meta("CONDITION_EXPR", "TABLE_1"[, "TABLE_2", ... ])}
duration=NUM{mon|w|d|h|m|s}

현재 시각을 기준으로 지정한 시간 이내의 로그만 검색합니다. s(초), m(분), h(시), d(일), w(주), mon(월) 단위로 입력합니다. 예를 들어 '10s'은 쿼리 실행 시각을 기준으로 "최근 10초"를 의미합니다. 이 옵션은 from, to, window와 함께 사용할 수 없습니다.

from=yyyyMMddHHmmss

yyyyMMddHHmmss 형식으로 검색할 기간의 시작 날짜와 시각을 지정합니다. 입력한 시각부터 검색을 시작합니다. 앞부분만 입력하면 나머지 자리는 0으로 인식합니다. 예를 들어 20130605를 입력하면 20130605000000(2013년 6월 5일 0시 0분 0초)으로 인식합니다. 이 옵션은 to와 함께 사용할 수 있지만, duration, window는 함께 사용할 수 없습니다.

to=yyyyMMddHHmmss

yyyyMMddHHmmss 형식으로 검색을 종료할 날짜와 시각을 지정합니다. 입력 방식은 from과 같습니다. from과 함께 사용할 수 있지만, duration, window는 함께 사용할 수 없습니다.

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

쿼리 실행 시점부터 출력을 실행할 시간을 지정합니다. s(초), m(분), h(시), d(일), w(주), mon(월), y(연) 단위로 지정할 수 있으며, 단위가 y일 때, '1y'만 허용됩니다. 예를 들어 10s은 쿼리 실행 시각을 기준으로 “앞으로 10초”입니다. 이 옵션은 duration, from, to 와 함께 사용할 수 없습니다.

limit=NUM

가져올 최대 로그 개수를 지정합니다.

offset=NUM

건너뛸 로그 개수를 지정합니다.

order=asc

레코드를 오름차순(asc, ascending) 또는 내림차순(desc, descending)으로 정렬해서 출력합니다. 정렬 기준이 되는 필드는 _time입니다. asc(오름차순)로 지정하면 오래된 레코드를 상단에 출력합니다. desc(내림차순)를 지정하거나, 지정하지 않으면 최근 레코드를 상단에 출력합니다.

TABLE_1[, TABLE_2, ... ]

검색할 테이블 이름을 지정합니다. 여러 테이블을 지정하려면 구분자로 쉼표(,)를 사용합니다. 자세한 내용은 설명을 참조하세요

meta("KEY_VALUE_EXPR", "TABLE"[, "TABLE", ... ])

테이블 이름 대신 meta() 함수를 이용해 조회 대상 테이블을 지정할 수 있습니다. 자세한 내용은 설명을 참조하세요.

설명

테이블명 뒤에 물음표(?)를 붙이면 해당 테이블이 존재하지 않아도 에러가 발생하지 않습니다. 가령, test라는 테이블이 존재하지 않을때 table test 라는 쿼리를 실행하면 에러가 발생하지만, table test? 라는 쿼리를 실행하면 에러 없이 쿼리가 수행되며 결과 0건이 출력됩니다.

테이블 이름에 와일드카드(*)를 사용할 수 있습니다. 예를 들어, 쿼리문 table sys_*를 실행하면 sys_로 시작하는 모든 테이블을 모두 조회합니다. 읽기 권한이 없는 테이블은 검색에서 제외됩니다. 쿼리를 실행한 다음 _table 필드에서 테이블 이름을 확인할 수 있습니다.

테이블 이름 대신 meta() 함수 형태의 표현으로 테이블을 필터링하여 조회 대상을 지정할 수 있습니다.

KEY_VALUE_EXPR

"KEY == VALUE" 또는 "KEY != VALUE" 형태의 비교 표현식을 입력할 수 있습니다. and, or와 같은 논리 연산자나 not 단항 부정 연산자와 함께 사용할 수 있습니다.

KEY

테이블 메타데이터의 키 이름

VALUE

테이블 메타데이터의 값(와일드카드 패턴 사용 가능)

"TABLE"[, "TABLE", ... ]

특정한 패턴의 이름을 가진 테이블에 대해서만 조회하고자 할 경우 이용합니다. 아무것도 적지 않을 경우 모든 테이블에 메타데이터 조건식을 시도합니다.

ENT, STD는 테이블 관리 > (테이블 선택) [기본정보]에서 테이블 메타데이터를 지정할 수 있습니다. 파서 설정의 메타데이터 키는 'logparser'입니다.

사용 예

1) sys_cpu_logs 테이블에서 최근 100건의 로그를 조회

table limit=100 sys_cpu_logs

2) sys_cpu_logs 테이블에서 최근 10분 간의 로그를 조회

table duration=10m sys_cpu_logs

3) sys_cpu_logs 테이블에서 2013년 6월 5일의 전체 로그를 조회

table from=20130605 to=20130606 sys_cpu_logs

4) sys_cpu_logs 테이블과 sys_mem_logs 테이블의 모든 로그를 순서대로 조회

table sys_cpu_logs, sys_mem_logs

5) 테이블의 파서가 openssh인 테이블만을 조회

table meta("parser==openssh")

2.13textfile

텍스트 파일에서 데이터를 읽어와 line 필드에 출력합니다.

문법

textfile [brex="REGEX"] [cs=CHARSET] [df="TIME_FMT"] [dp="REGEX"] [erex="REGEX"] [limit=NUM] [offset=NUM] FILE_PATH
brex="REGEX"

하나의 레코드가 여러 행으로 구성된 경우, 레코드의 시작 행을 찾을 때 사용할 정규표현식을 입력합니다. 정규표현식이 일치하는 행이 나오기 전까지 하나의 레코드로 병합합니다. 지정하지 않으면 개행문자(CRLF 혹은 LF)를 기준으로 인식합니다. 레코드의 마지막 행을 찾으려면 erex 옵션을 이용합니다.

cs=CHARSET

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

df="TIME_FMT"

_time 필드 추출에 필요한 타임스탬프 포맷을 입력합니다. 예를 들어, yyyy-MM-dd HH:mm:ss.SSS와 같이 입력할 수 있습니다. dp 옵션과 함께 사용합니다. 지정하지 않으면 데이터 로딩 시점의 시각을 _time 필드에 기록합니다.

dp="REGEX"

날짜 추출 정규표현식을 입력합니다. 지정된 타임스탬프 포맷으로 파싱하여 _time 필드를 추출합니다. df 옵션과 함께 사용합니다. 지정하지 않으면 데이터를 읽어들인 시점의 시각을 _time 필드에 기록합니다.

erex="REGEX"

하나의 레코드가 여러 행으로 구성된 경우, 레코드의 마지막 행을 찾을 때 사용할 정규표현식을 입력합니다. 정규표현식이 일치하는 행이 나오기 전까지 하나의 레코드로 병합합니다. 지정하지 않으면 개행문자(CRLF 혹은 LF)를 기준으로 인식합니다. 레코드의 시작 행을 찾으려면 brex 옵션을 이용합니다.

limit=NUM

가져올 최대 로그 개수를 지정합니다.

offset=NUM

건너뛸 로그 개수를 지정합니다.

FILE_PATH

데이터를 읽어들일 파일의 절대 경로를 입력합니다. 파일 이름에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다. 파일을 읽어오려면 로그프레소 실행 계정에 접근권한이 부여되어 있어야 합니다.

읽을 파일의 확장자가 .gz이면 자동으로 gzip 파일로 인식하여 압축 해제 후 조회할 수 있습니다.
(ENT #2241 2019-04-23_17-20 일자 버전부터 지원)

사용 예

1) /var/log/secure 로그 파일 조회

textfile /var/log/secure

2) euc-kr로 인코딩 된 iis.txt 파일 조회

textfile cs=euc-kr iis.txt

3) 확장자가 .gztest.gz 파일 조회

textfile cs=euc-kr test.gz

2.14xmlfilexmlfile

XML 포맷의 파일에서 데이터를 조회합니다. UTF-8, UTF-16LE 등 BOM 유형별 XML 파일도 자동 인식되어 조회됩니다. 파일경로에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다.

문법

xmlfile [cs=CHARSET] [xpath=EXPR] FILE_PATH
cs=CHARSET

파일의 인코딩을 지정합니다(기본값: UTF-8). 지정하지 않으면 UTF-8, UTF-16LE 등 BOM 유형별 XML 파일을 자동으로 인식합니다. 인코딩 형식 이름은 IANA Charset Registry에 등록된 Preferred MIME Name 또는 Aliases에 등록된 이름을 사용합니다: http://www.iana.org/assignments/character-sets/character-sets.xhtml

xpath=EXPR

XML 노드를 선택하는데 사용할 XPath(XML Path Language) 표현식을 지정합니다.

FILE_PATH

데이터를 읽어들일 파일의 절대 경로를 입력합니다. 파일 이름에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다. 파일을 읽어오려면 로그프레소 실행 계정에 접근권한이 부여되어 있어야 합니다.

이 명령어는 ENT #2241 2019-04-23_17-20 일자 버전부터 지원합니다.

2.15zipfilezipfile

ZIP으로 압축된 텍스트 파일에서 데이터를 조회합니다. ZIP파일경로 및 ZIP엔트리경로에는 와일드카드를 사용할 수 있습니다.

문법

zipfile [limit=NUM] [offset=NUM] ZIP_PATH FILE_IN_ZIP
limit=NUM

가져올 최대 레코드 개수를 입력합니다.

offset=NUM

건너뛸 레코드 개수를 입력합니다.

ZIP_PATH

ZIP 파일의 절대 경로를 입력합니다. 파일 경로에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다. 파일을 읽어오려면 로그프레소 실행 계정에 접근권한이 부여되어 있어야 합니다.

FILE_IN_ZIP

ZIP 파일에 포함된 텍스트 파일 중에서 데이터를 읽어들일 파일 이름을 입력합니다. 파일 이름에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다.

사용 예

1) /home/logpresso/testdata.zip 파일에 압축된 텍스트 파일 중 iis.txt 파일 조회

zipfile /home/logpresso/testdata.zip iis.txt

2) /home/logpresso/testdata.zip 파일에 압축된 모든 텍스트 파일 조회

zipfile /home/logpresso/testdata.zip *.txt

3) /home/logpresso 경로의 모든 ZIP 파일에 압축된 모든 텍스트 파일 조회

zipfile /home/logpresso/*.zip *.txt
Count of comments [0]