메 트릭스 로딩
MXQL 문법을 이용해 메트릭스를 불러오는 명령어에 대해서 알아봅니다.
| 명령어 | 기능 |
|---|---|
| TAGLOAD | 수집한 데이터를 tag-field 형식으로 저장하는 카테고리의 정보를 조회할 때 사용합니다. |
| FLEXLOAD | 수집한 데이터를 field 형식으로 저장하는 카테고리의 정보를 조회할 때 사용합니다. |
| LogSink | 로그 원본 데이터를 조회할 때 사용합니다. |
| LogSinkCount | 시간 단위로 로그 건수를 집계할 때 사용합니다. |
TAGLOAD
수집한 데이터를 tag-field 형식으로 저장하는 카테고리의 정보를 조회할 때 사용합니다.
| 옵션 | 기능 |
|---|---|
{backward : true} | 시간 역순으로 데이터를 로드합니다. |
{filter : {key:fieldName, value :fieldValue}} | fieldName 필드의 값이 fieldValue과 같은 데이터만 추출합니다. |
{filter : {key:fieldName, exclude :fieldValue}} | fieldName 필드의 값이 fieldValue과 같은 데이터를 제외하고 추출합니다. |
{filter : {key:fieldName, like :fieldValue}} | fieldName 필드의 값이 fieldValue을 부분 문자열로 가지는 데이터만 추출합니다. |
{filter : {key:fieldName, notlike :fieldValue}} | fieldName 필드의 값이 fieldValue을 부분 문자열로 데이 터를 제외하고 추출합니다. |
-
옵션을 설정하지 않은 경우
CATEGORY app_counter
TAGLOAD -
backward 옵션을 설정한 경우
CATEGORY app_counter
TAGLOAD {backward : true} -
value filter를 설정하는 경우
CATEGORY app_counter
TAGLOAD {filter : {key:pid, value:905}} -
exclude filter를 설정하는 경우
CATEGORY app_counter
TAGLOAD {filter : {key:pid, exclude:905}} -
like filter를 설정하는 경우
CATEGORY app_counter
TAGLOAD {filter : {key:okindName, like:keeper}} -
notlike filter를 설정하는 경우
CATEGORY app_counter
TAGLOAD {filter : {key:okindName, notlike:keeper}} -
복수의 filter를 설정하는 경우
CATEGORY app_counter
TAGLOAD { filter:[{key:'host_ip', exclude:'192.168.1.102'}, {key:'container', like:'gateway'}] }
TAGLOAD와FLEXLOAD는 각각 설정할 수 있는CATEGORY의 값이 정해져있습니다.fileter-like또는filter-notlike옵션을 사용할 때 값으로 숫자가 오는 경우 작은 따옴표('') 또는 큰 따옴표("")로 감싸주어야 동작합니다.CATEGORY app_counter
TAGLOAD { filter:[{key:'host_ip', exclude:'192.168.1.102'},{key:okindName, like:"1"}] }
FLEXLOAD
수집된 데이터를 field 형식으로 저장하는 카테고리의 정보를 조회할 때 사용합니다.
| 옵션 | 기능 |
|---|---|
{backward : true} | 시간 역순으로 데이터를 로드합니다. |
데이터 검색조건 단계에서 설정한 정보에 따라 데이터를 로드합니다.
CATEGORY event_cache
FLEXLOAD {backward : true}
대부분의 카테고리는 TAGLOAD를 사용합니다. 다음 문서에 포함한 카테고리의 데이터를 사용할 때에만 FLEXLOAD를 사용합니다.
FLEXLOAD를 사용해야하는 카테고리 목록
-
agent_list카테고리CATEGORY agent_list
FLEXLOAD
SELECT -
db_agent_list카테고리CATEGORY db_agent_list
FLEXLOAD
SELECT -
agent_count카테고리CATEGORY agent_count
FLEXLOAD
SELECT -
event_cache카테고리CATEGORY event_cache
FLEXLOAD
SELECT
LogSink
로그 원본 데이터를 조회할 때 사용합니다.
CATEGORY AppLog
LogSink
로그 필터링
특정 조건으로 로그를 필터링할 때 LogTag를 사용합니다.
CATEGORY AppLog
LogTag {key:city, value:"junju"}
LogTag {key:status, value:"200", exclude:true}
LogSink
LogTag 파라미터
- key: 검색할 인덱스 키
- value: 검색할 값 (와일드카드 사용 가능)
- exclude: 검색 제외 여부 (true/false)
중요사항
- LogTag는 LogSink나 LogSinkCount 앞에 기술되어야 합니다
- LogTag는 동일 키 혹은 다른 키에 대해서 다양하게 기술할 수 있습니다
- 검색 키워드 단위로 LogTag가 늘어나야 합니다
예제
특정 키워드가 포함된 로그의 건수를 조회하는 예제입니다.
CATEGORY AppLog
LogTag {key:content, value:"*DebugUtil*", exclude:false}
LogTag {key:content, value:"*HttpServletRequest*", exclude:true}
LogSink
SELECT
GROUP {timeunit:1d, pk:pcode, merge:[rows]}
RENAME {src:_rows_, dst:rows}
CREATE {key:_pk_, value:pcode}
UPDATE {key:rows, value:sum}
쿼리 설명
- 첫 번째 LogTag: content 필드에 "DebugUtil"이 포함된 로그 검색
- 두 번째 LogTag: content 필드에 "HttpServletRequest"가 포함된 로그 제외
- GROUP의 timeunit:1d로 일별 집계
- merge:[rows]로 로그 건수를 MetricValue 타입으로 변환
- UPDATE의 sum으로 일별 총 건수 계산
LogSinkCount
시간 단위로 로그 건수를 집계할 때 사용합니다.
기본 사용법
CATEGORY AppLog
LogSinkCount
시간대별로 로그 건수가 집계됩니다 (예: 1949, 1625, 1674... 건).
그룹별 집계
특정 필드를 기준으로 그룹화하여 로그를 집계할 수 있습니다.
단일 필드 그룹화
CATEGORY AppLog
LogSinkCount {group:oname}
여러 필드 그룹화
CATEGORY AppLog
LogSinkCount {group:"oname,oid"}
쉼표로 구분된 여러 개의 필드를 지정할 수 있습니다.
시간당 그룹별 집계
숫자 필드에 대한 집계 연산을 수행할 수 있습니다.
CATEGORY AppLog
LogSinkCount {group:oname, aggr:price.n}
Aggr에 저장할 수 있는 필드는 숫자(n) 필드에 한정됩니다.
여러 필드 집계
CATEGORY AppLog
LogSinkCount {group:oname, aggr:"price.n,age.n"}
aggr에는 쉼표로 구분된 여러 개의 필드를 입력할 수 있으나 계산은 각각 이루어집니다.
LogTag 와 함께 사용
LogTag를 사용하여 특정 조건의 로그만 집계할 수 있습니다.
CATEGORY AppLog
LogTag {key:level, value:"ERROR"}
LogSinkCount {group:oname}
위 예제는 ERROR 레벨의 로그만 필터링하여 oname별로 건수를 집계합니다.