본문으로 건너뛰기

메트릭스 로딩

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'}] }
주의
  • TAGLOADFLEXLOAD는 각각 설정할 수 있는 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별로 건수를 집계합니다.