본문으로 건너뛰기

설정하기

1. 지원 버전

DB 유형지원 버전
MySQL5.7 이상
MariaDB10 이상

Cloud 환경 MySQL/MariaDB 지원 현황

Cloud 환경MySQLMariaDB
AWS✅ 지원✅ 지원
Azure✅ 지원✅ 지원
OCI⚠️ Cloud 지원, exemONE 미지원❌ 미지원
NCP✅ 지원❌ 미지원
GCP✅ 지원❌ 미지원
SCP✅ 지원✅ 지원

2. 필수 권한

2-1. 기본 모니터링 권한

모니터링 계정(예: exemone)에 다음 권한을 부여합니다.

GRANT PROCESS ON *.* TO exemone;
GRANT SELECT ON performance_schema.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT SHOW DATABASES ON *.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON dbname.* TO exemone@'{db-agent 설치 서버 IP}'; -- 또는 GRANT SELECT ON *.*
GRANT REPLICATION CLIENT ON *.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT REPLICATION SLAVE ON *.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT SUPER ON *.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON information_schema.processlist TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON information_schema.innodb_session_temp_tablespaces TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON information_schema.tables TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON information_schema.innodb_tablespaces TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON information_schema.files TO exemone@'{db-agent 설치 서버 IP}';

-- MySQL/MariaDB 10.5.2 이상 (Top Sort/Transaction)
GRANT SELECT ON sys.statements_with_sorting TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON performance_schema.events_statements_summary_by_digest TO exemone@'{db-agent 설치 서버 IP}';
GRANT EXECUTE ON FUNCTION sys.format_statement TO exemone@'{db-agent 설치 서버 IP}';
GRANT EXECUTE ON FUNCTION sys.format_pico_time TO exemone@'{db-agent 설치 서버 IP}';

-- MySQL 8 이상 / MariaDB 10.0.15 ~ 10.5.1
GRANT SELECT ON information_schema.innodb_trx TO exemone@'{db-agent 설치 서버 IP}';

2-2. Session Kill 권한

-- MySQL 8.0, MariaDB 10.5.2 이상
GRANT CONNECTION_ADMIN ON *.* TO exemone@'{db-agent 설치 서버 IP}';

-- MySQL 5.7 이하, MariaDB 10.5.2 미만
GRANT SUPER ON *.* TO exemone@'{db-agent 설치 서버 IP}';

-- AWS RDS
GRANT EXECUTE ON PROCEDURE mysql.rds_kill TO exemone@'{db-agent 설치 서버 IP}';

-- NCP
-- DDL 권한 user 계정으로 CALL sys.ncp_kill_session({세션ID}) 이용

2-3. Replication 권한

-- MySQL 8.0 이상: 추가 권한 불필요 (기본 모니터링 권한만으로 클러스터 관계 파악 가능)

-- MySQL 8.0 미만
GRANT REPLICATION CLIENT ON *.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT REPLICATION SLAVE ON *.* TO exemone@'{db-agent 설치 서버 IP}';

-- MariaDB 10.4 이하
GRANT REPLICATION CLIENT ON *.* TO exemone@'{db-agent 설치 서버 IP}';

-- MariaDB 10.5 이상
GRANT SLAVE MONITOR ON *.* TO exemone@'{db-agent 설치 서버 IP}';

-- MariaDB 10.6 이상
GRANT EXECUTE ON FUNCTION sys.format_statement TO exemone@'{db-agent 설치 서버 IP}';
GRANT EXECUTE ON FUNCTION sys.format_time TO exemone@'{db-agent 설치 서버 IP}';
GRANT EXECUTE ON FUNCTION sys.format_bytes TO exemone@'{db-agent 설치 서버 IP}';
GRANT EXECUTE ON FUNCTION sys.sys_get_config TO exemone@'{db-agent 설치 서버 IP}';
GRANT SELECT ON sys.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT SLAVE MONITOR ON *.* TO exemone@'{db-agent 설치 서버 IP}';
GRANT BINLOG MONITOR, REPLICATION MASTER ADMIN ON *.* TO exemone@'{db-agent 설치 서버 IP}';

참고: server_id가 0인 경우 단독 서버로 Replication 권한 설정이 불필요합니다. MySQL 8.0 미만 클러스터 환경에서는 REPLICATION CLIENT, REPLICATION SLAVE 권한이 없으면 클러스터 관계 파악이 되지 않습니다.


3. 사전 설정

Thread, SQL Text 수집을 위한 파라미터 설정 (DB 재기동 필요)

performance_schema = ON                          -- Performance Schema 활성화 (Default: ON)
max_digest_length = 4096 -- SQL digest 저장 최대 길이 확대 (Default: 1024)
performance_schema_max_digest_length = 4096 -- Performance Schema가 저장하는 digest 텍스트 최대 길이 (Default: 1024)
performance_schema_max_sql_text_length = 4096 -- Performance Schema가 저장하는 SQL 텍스트 최대 길이 (Default: 1024)

Slow Query 수집 설정

SET GLOBAL slow_query_log = ON;
SET GLOBAL slow_query_log_file = '{slow query 로그 파일 경로}';
SET GLOBAL long_query_time = {초};

CPU Time / Event Wait 등 수집 설정

  • MySQL 8.0.28 이상 버전부터 지원하며, MariaDB는 DB에서 미지원합니다.
  • performance_schema.setup_consumers 테이블의 events_transactions%, events_statements_%performance_schema.setup_instruments 테이블의 events_waits%, wait/% 값이 YES일 경우 DB에서 수집합니다.
  • 위 값들은 DB 재기동 없이 적용할 수 있습니다 (기본값: NO).

meta lock 수집 설정

  • performance_schema.setup_instruments 테이블의 wait/lock/metadata/sql/mdl 값이 YES일 경우 DB에서 수집합니다.
  • 위 값들은 DB 재기동 없이 적용할 수 있습니다 (기본값: NO).

Plan 조회 Procedure 설정 (선택 사항)

DML이나 Function이 사용된 쿼리의 Plan 조회 시, exemone 계정에 추가 권한이 없는 환경에서는 권한 문제로 Plan 조회가 불가할 수 있습니다. 이를 해결하려면 Plan 조회 프로시저를 생성합니다.

Step 1) Plan 조회 프로시저 생성 (관리자 권한 계정으로 접속, Plan 수집이 필요한 모든 스키마에서 생성)

DELIMITER $$

CREATE PROCEDURE <스키마명>.exem_get_explain(IN query TEXT)
SQL SECURITY DEFINER
BEGIN
SET @explain := CONCAT('EXPLAIN ', query);
PREPARE stmt FROM @explain;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$

DELIMITER ;

Step 2) 프로시저 실행 권한 부여

GRANT EXECUTE ON PROCEDURE <스키마명>.exem_get_explain TO exemone@'%';

Step 3) use_plan_procedure 옵션 활성화

  • common._use_querytrue인 경우: Setting > Database > Edit Instance > Custom Configuration에서 use_plan_procedure 값을 true로 변경합니다.
  • common._use_queryfalse인 경우: Database Metric Collection Setting > Metric Setting에서 plan_procedure 토글을 ON으로 변경합니다.

참고: MySQL 8.0.2x 이상 버전에서 SELECT 문은 EXPLAIN ANALYZE 구문이 적용되며, 오래 걸릴 경우 KILL QUERY로 중단할 수 있습니다.

exemONE 모니터링 옵션 설정

MySQL/MariaDB 인스턴스는 Setting > Database의 Instance 등록/편집 화면에서 Custom Configuration에 아래 키 값을 설정해 지표 수집 방식을 세부적으로 조정할 수 있습니다.

경로: Setting > Database > Custom Configuration

옵션명설명
mysql.onpremise_slowquerylog_pathSlow Query를 파일 방식으로 모니터링할 때 사용할 slow query 로그 파일 경로를 입력합니다. 이 옵션과 함께 OS Resource에 모니터링 서버에 설치된 db-agent가 설정되어 있어야 파일 방식 모니터링이 동작합니다.