table
로그프레소 테이블에 저장된 데이터를 조회합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 테이블 읽기 권한 (raw=t 사용 시 관리자 권한 추가 필요) |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
과거 데이터를 조회하려면
실시간 데이터를 수신하려면
옵션
order={desc|asc}- 테이블 조회 순서 (기본값:
desc).
desc: 최신 데이터부터 조회asc: 오래된 데이터부터 조회
offset=LONG- 건너뛸 레코드 수. 0 이상의 값을 지정합니다.
limit=LONG- 가져올 최대 레코드 수
duration=INT{s|m|h|d|mon}- 현재 시각으로부터 일정 시간 범위 이내의 데이터로 한정합니다.
s(초),m(분),h(시),d(일),mon(월) 단위를 사용합니다. 예:10m은 현재 시각으로부터 10분 이전까지의 범위입니다.window과 함께 사용할 수 없습니다. from=DATE- 조회 범위의 시작 시각.
yyyyMMddHHmmss형식으로 입력합니다. 뒷자리를 생략하면 0으로 채워집니다.window과 함께 사용할 수 없습니다. to=DATE- 조회 범위의 끝 시각.
yyyyMMddHHmmss형식으로 입력합니다. 뒷자리를 생략하면 0으로 채워집니다.window과 함께 사용할 수 없습니다. window=INT{s|m|h|d|mon}- 쿼리 시작 시점부터 지정한 시간 동안 테이블에 새로 입력되는 데이터를 실시간으로 수신합니다.
s(초),m(분),h(시),d(일),mon(월) 단위를 사용합니다.from,to,duration과 함께 사용할 수 없습니다. parser=STR- 레코드 파싱에 사용할 로그 파서 이름
parallel=BOOLt지정 시 병렬 스캔을 활성화합니다.limit을 지정하지 않은 경우 자동으로 오름차순 조회로 전환됩니다.eachtable=BOOLt지정 시offset,limit을 전체 결과가 아닌 테이블 단위로 적용합니다.raw=BOOLt지정 시 로그 파서를 적용하지 않고 원본 데이터를 조회합니다. 관리자 권한이 필요합니다.
대상
TABLE- 조회할 테이블 이름.
[NODE:][[NAMESPACE\]]TABLE[?]형식으로 지정합니다. 공백으로 구분하여 여러 테이블을 지정할 수 있으며,*와일드카드를 사용할 수 있습니다.
NODE:— 수집 노드 이름. 생략하면 쿼리를 실행하는 로컬 노드를 대상으로 합니다. 모든 노드를 검색하려면*:를 지정하세요.NAMESPACE\— 테이블 네임스페이스 (생략 가능)TABLE— 테이블명?— 이름 끝에 붙이면 테이블이 존재하지 않아도 오류 없이 건너뜁니다.
테이블 이름 대신 메타데이터 조건으로 대상을 고를 수도 있습니다.
테이블 메타데이터의 KEY 값이 VALUE와 일치하는 테이블을 조회합니다. and, or, not으로 조건을 조합할 수 있고 !=로 부정할 수 있습니다. 조건 뒤에 테이블 패턴을 지정하면 그 패턴에 해당하는 테이블만 검사하며, 생략하면 전체 테이블(*)을 검사합니다. 예를 들어 table meta("logparser==iis")는 iis 파서를 쓰는 테이블을 모두 조회하고, table meta("logparser==iis", "WEB_*")는 이름이 WEB_으로 시작하는 테이블만 대상으로 같은 조건을 적용합니다. 값에는 와일드카드(*, ?)를 쓸 수 있습니다.
메타데이터는 테이블마다 붙는 키/값이며, 제품이 자동으로 기록하는 키와 관리자가 직접 지정하는 키가 함께 쓰입니다. 제품이 사용하는 대표적인 키는 다음과 같습니다.
| 키 | 설명 |
|---|---|
parser | 테이블에 지정된 파서 이름 |
logparser | 테이블에 지정된 파서 팩토리 이름 |
lifecycle | 테이블에 적용된 생명주기 프로파일 |
app_id | 테이블을 생성한 앱의 식별자 |
alt_table_path | 테이블 데이터를 저장하는 대체 경로 |
created_from | 테이블을 만든 명령(import, insert 등) |
_filetype | 무결성 검사에서 사용하는 파일 유형 |
키 목록은 고정되어 있지 않습니다. 위 키 외에도 앱이나 관리자가 임의의 키를 설정할 수 있으므로, 조건에 쓸 키와 값은 대상 환경에서 확인하세요. 와일드카드가 없는 리터럴 값의 대소문자 구분은 계열에 따라 다릅니다. 4.0.2609.0 버전부터는 대소문자를 구분해 정확히 일치시킵니다. 5.0 계열(5.0.2605.2까지)은 구분하지 않습니다.
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| _table | 문자열 | 테이블 이름. 원격 노드 테이블은 NODE:TABLE 형식 |
| _time | 날짜 | 레코드 기록 시각 |
| _sk | 64비트 정수 | 스토리지 키 |
| _era | 32비트 정수 | 에포크 번호 |
| _id | 64비트 정수 | 파티션 내 레코드 일련번호 |
테이블에 로그 파서가 설정되어 있으면 파서가 반환하는 필드가 추가됩니다.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 10600 | 저장소가 닫혀 있습니다. | 저장소가 닫혀 있는 경우 |
| 10601 | offset 값은 0보다 크거나 같아야 합니다: 입력값=[offset]. | offset 값이 0보다 작은 경우 |
| 10602 | 입력값이 허용 범위를 벗어났습니다: limit=[offset]. | limit 값이 허용 범위를 벗어난 경우 |
| 10603 | [options]에서 [exp] 잘못된 옵션입니다. | 잘못된 테이블 지정자가 사용된 경우 |
| 10604 | 테이블이 없습니다. | 테이블이 지정되지 않은 경우 |
| 10605 | 테이블 [table]이(가) 존재하지 않습니다. | 지정된 로컬 테이블이 존재하지 않는 경우 |
| 10606 | 테이블 [table] 읽기 권한이 없습니다. | 로컬 테이블 읽기 권한이 없는 경우 |
| 10607 | 테이블 [table]이(가) 존재하지 않습니다. | 지정된 원격 테이블이 존재하지 않는 경우 |
| 10608 | 테이블 [table] 읽기 권한이 없습니다. | 원격 테이블 읽기 권한이 없는 경우 |
| no-raw-permission | — | raw=t 사용 시 관리자 권한이 없는 경우 |
런타임 오류
해당 사항 없음
설명
table 명령어는 로그프레소 테이블에 저장된 데이터를 조회합니다. 드라이버 쿼리이므로 쿼리 파이프라인에서 첫 번째 명령어로만 사용합니다.
window 옵션을 지정하면 과거 데이터 스캔 대신 실시간 수신 모드로 동작합니다. 쿼리 시작 시점부터 지정한 시간이 경과하거나 쿼리가 취소될 때까지 테이블에 새로 입력되는 데이터를 수신합니다. from, to, duration 옵션과 함께 사용할 수 없습니다.
분산 환경에서는 테이블이 저장된 각 수집 노드에서 스캔이 실행됩니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
웹 접근 로그의 최근 10건 조회
table limit=10 WEB_APACHE_SAMPLEWEB_APACHE_SAMPLE테이블에서 가장 최근에 기록된 웹 접근 로그 10건을 조회합니다. -
특정 기간의 웹 접근 로그 조회
set _from = "20241118" _to = "20241119" | table from=$("_from") to=$("_to") WEB_APACHE_SAMPLE2024년 11월 18일 하루치 웹 접근 로그를 조회합니다.
_from,_to값을 수정하여 조회 기간을 변경할 수 있습니다. -
최근 1시간의 웹 접근 로그 상위 100건 조회
table duration=1h order=desc limit=100 WEB_APACHE_SAMPLE최근 1시간 이내의 웹 접근 로그 중 최신 100건을 시간 역순으로 조회합니다.
-
오래된 순서로 조회
table order=asc limit=100 WEB_APACHE_SAMPLEWEB_APACHE_SAMPLE테이블에서 가장 오래된 100건을 시간 오름차순으로 조회합니다. -
앞의 일부를 건너뛰고 조회
table offset=1000 limit=100 WEB_APACHE_SAMPLE처음 1,000건을 건너뛰고 이후 100건을 조회합니다.
-
실시간 웹 접근 로그 모니터링
table window=60s WEB_APACHE_SAMPLE쿼리 시작 시점부터 60초 동안
WEB_APACHE_SAMPLE테이블에 새로 입력되는 웹 접근 로그를 실시간으로 수신합니다. -
매개변수를 사용한 기간 조회
set _from = "20241118" _to = "20241119" | table from=$("_from") to=$("_to") WEB_APACHE_SAMPLE | stats count() as total_count, sum(bytes) as total_bytesset 명령어로 기간 범위를 매개변수로 지정하고
$()함수로 참조합니다._from,_to값을 수정하거나,string(dateadd(now(), "day", -7), "yyyyMMdd")처럼 동적으로 계산한 값을 할당하여 조회 기간을 유연하게 변경할 수 있습니다.
변경 이력
| 대상 | 도입 릴리스 |
|---|---|
table 명령어 | 소나 4.0 이전 버전 |