본문으로 건너뛰기

설정하기

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_query가 true인 경우: Setting > Database > Edit Instance > Custom Configuration에서 use_plan_procedure 값을 true로 변경합니다.
  • common._use_query가 false인 경우: 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가 설정되어 있어야 파일 방식 모니터링이 동작합니다.