MXQL이란?

필요한 배경 지식

개요

MXQL은 와탭의 성능 데이터(메트릭스)를 유연하게 조회하기 위한 쿼리 언어입니다. 하나의 프로젝트에 포함된 여러 에이전트에서 수집된 메트릭스들을 종합적으로 조회하고 활용하기 위해서 사용합니다.

MXQL과 SQL 비교

MXQL의 개념을 간단하게 익히기 위해 많이 알려진 SQL과 비교를 해보겠습니다.

용어

먼저 SQL에서 사용하는 용어를 짚어보겠습니다.

mxql 6
Figure 1. SQL의 데이터 저장구조

위 사진을 보면 whatap Database에 product Table이 포함되어 있고, product Table에는 두 개의 Column(id, description)이 존재합니다. SQL의 database, table, column에 대응되는 MXQL의 개념이 각각 database, category, field입니다.

Table 1. mxql과 SQL의 용어 비교

저장방식

MXQL

SQL

대분류

Database

Database

중분류

Category

Table

소분류

Field

Column

쿼리

MXQL과 SQL의 샘플 쿼리입니다. 각 라인의 오른쪽에는 설명이 포함되어 있습니다.

간단한 SQL 쿼리
SELECT time, pcode  -- Column 선택(time, pcode 컬럼만 조회하도록 설정합니다.)
FROM app_counter    -- Table 선택(app_counter 테이블에서 데이터를 조회합니다.)
WHERE tx_count = 1  -- 데이터 필터링(tx_count column의 값이 1인 데이터만 조회하도록 설정합니다.)
간단한 mxql 쿼리
CATEGORY app_counter                 -- app_counter 카테고리에서 데이터를 조회하도록 설정합니다.
TAGLOAD                              -- 데이터를 조회합니다.
SELECT [ time, pcode ]               -- 조회된 전체 컬럼 중에서 time, pcode 필드만 선택합니다.
FILTER { key : tx_count, value : 5}  -- tx_count 필드의 값이 5인 데이터만 남깁니다.

실행 결과

MXQL 쿼리가 수행되면 선택한 카테고리에서 선택한 필드의 메트릭스가 조회됩니다.

app_counter 카테고리에서 tx_count, tx_error 지표를 조회하는 쿼리는 아래와 같습니다.

CATEGORY app_counter                   -- app_counter 카테고리에서 데이터를 조회하도록 설정합니다.
TAGLOAD                                -- 데이터를 조회합니다.
SELECT [time, oid, tx_count, tx_error] -- 조회하고 싶은 필드의 이름을 설정합니다.

이 쿼리를 수행하면 아래와 같이 메트릭스가 조회됩니다.

mxql overview
Figure 2. MXQL 실행 결과 예시

메트릭스에는 항상 time, oid 값이 포함되기 때문에 MXQL 쿼리에서도 time, oid 필드를 항상 포함해서 조회하는 것을 권장합니다. 최종적으로 조회된 데이터가 언제(time) 어떤 에이전트에서(oid) 수집된 메트릭스인지 알기 위함입니다.