SQL Server 모니터링
exemONE SQL Server 모니터링 상세 가이드
1. 지원 버전
| 항목 | 내용 |
|---|---|
| 지원 버전 | SQL Server 2012 이상 |
2. 필수 권한
2.1 기본 모니터링 권한 (sysadmin 권한 또는 아래 권한 설정 필요)
master DB 권한
-- SQL Server 2022 이상 / Azure
alter server role ##MS_serverStateReader## ADD MEMBER exemone;
-- 참고: tablesizeinfomessage 수집을 위해선 아래 권한 추가 필요
GRANT VIEW DEFINITION TO exemone;
-- SQL Server 2012~2019
grant view server state to exemone;
각 DB 권한
grant execute on dbo.fn_cdc_hexstrtobin to exemone; -- 변경 데이터 캡처(cdc) 관련 함수 실행 권한 부여
grant view definition to exemone; -- SQL Server 시스템 카탈로그 뷰 접근 권한 부여 (sysindexes, sysobjects)
2.2 Session Kill 권한
grant kill database connection to exemone;
2.3 모니터링 방식(sqlserver.mode)에 따른 권한 차이
sqlserver.mode = procedure (기본 값)
create database권한 필요 (maxgauge DB가 없을 경우 자동 생성)- 사용자가 수동으로 maxgauge DB 생성 시, 아래 권한 필요:
-- 자동 생성 시 (권한 필요)
grant create any database to exemone;
-- 수동 생성 시
use maxgauge;
create user [exemone] for login [exemone]; -- maxgauge db내 사용자 생성
grant create procedure to exemone;
grant control on schema::dbo to exemone;
grant execute on dbo.fn_cdc_hexstrtobin to exemone;
sqlserver.mode = query (Azure 환경)
create database권한 불필요- 단,
fn_cdc_hexstrtobin함수 관련 오류 발생 시 수동 생성 필요:
grant execute on dbo.fn_cdc_hexstrtobin to exemone;
3. 사전 설정
3.1 모니터링 계정 생성 및 권한 부여
단계 1. SQL Server에 모니터링 전용 로그인 계정 생성 (예: exemone)
단계 2. master DB에 기본 모니터링 권한 부여
- SQL Server 2012~2019:
grant view server state to exemone; - SQL Server 2022 이상/Azure:
alter server role ##MS_serverStateReader## ADD MEMBER exemone;
단계 3. 각 모니터링 대상 DB에 카탈로그 뷰 접근 권한 및 CDC 함수 실행 권한 부여
단계 4. 모니터링 방식 선택
- procedure 모드 (기본): maxgauge DB 자동 생성을 위해
create any database권한 부여, 또는 수동으로 maxgauge DB 생성 후 관련 권한 설정 - query 모드 (Azure 환경): 별도의 DB 생성 권한 불필요
단계 5. Session Kill 기능이 필요한 경우 kill database connection 권한 추가 부여
3.2 DB Agent 설치
DB Agent를 설치하고, SQL Server 인스턴스를 exemONE에 등록해야 합니다.
4. 주요 모니터링 항목
4.1 Instance Detail Slide (인스턴스 상세)
8개 탭으로 구성됩니다:
| 탭 | 설명 |
|---|---|
| Information | Agent 정보, Machine 정보 (호스트, IP, OS, 커널 버전 등) |
| Metric | 인스턴스 성능 지표 차트 |
| Active Session | 실시간 Active Session 목록 및 관리 (Multi Kill 지원) |
| SQL List | SQL 목록 및 통계 |
| Lock Info | Lock 대기 세션 정보 및 관리 |
| Alert | 등록된 알람 정보 및 실시간 임계값 |
| Parameter | 현재 파라미터 설정 값 |
| Host Process List | 호스트 프로세스 목록 |

4.1.1 Metric (인스턴스 지표)

| 지표 | 설명 |
|---|---|
| Active Sessions | Active 세션 수 |
| Locks Waiting | Lock 대기 세션 수 |
| Open Transactions | 트랜잭션이 열려 있는 세션 수 |
| Page Lookups / Sec | 초당 Logical 읽기 수 |
| Page Reads / Sec | 초당 Physical 읽기 수 |
| Page Life Expectancy | 페이지가 버퍼풀에 남아있는 시간 |
| Batch Requests / Sec | 서버에 의해 수신된 일괄처리 요청 수 |
| Transactions / Sec_Total | 데이터베이스의 초당 트랜잭션 수 |
| User Connections | 시스템에 연결된 사용자 수 |
| Buffer Cache Hit Ratio | 버퍼캐시에서 찾은 페이지 비율 |
| SQL Compilations / Sec | SQL 컴파일 횟수 |
4.1.2 Active Session Grid
| 항목 | 설명 |
|---|---|
| Elapsed Time (sec) | 수행시간 |
| Session ID | 세션 ID |
| SQL ID / SQL Text | SQL 식별 및 쿼리 텍스트 |
| ECID | 실행 컨텍스트 ID |
| Blocking Session ID | 차단 세션 ID |
| Command Type / Status | 실행 명령 / 상태 |
| Database Name / Object Name | DB명 / 오브젝트명 |
| SQL Last Wait Type / SQL Wait Time | 대기 유형 / 대기 시간 |
| CPU Time | CPU 사용 시간 |
| Logical Reads/s / Physical Reads/s | 논리/물리 읽기 수 |
| Program Name / Login Name | 프로그램명 / 로그인명 |
| Tempdb Alloc / Tempdb Dealloc | Tempdb 할당/취소 페이지 수 |
| Open Tran | 열려 있는 트랜잭션 수 |
4.1.3 Lock Info Grid

Session ID, Blocking Session ID, Elapsed Time, ECID, KPID, Command Type, Status, Database Name, Object Name, SQL Last Wait Type, SQL Wait Time, CPU Time, Logical Reads/s, Physical Reads/s, Program Name, Login Name, Open Tran 등의 정보를 제공합니다.
4.2 Single View (싱글 뷰)
특정 하나의 SQL Server 인스턴스에 대해 다양한 관점에서 실시간 성능 상태를 확인할 수 있습니다.

| 구성 요소 | 설명 |
|---|---|
| 24 Trend | 24시간 성능 지표 운용 추이, 다른 날짜와 비교 가능 |
| TempDB Usage | TempDB 사용량과 여유 공간 비율 |
| Alert Logs | 현재 발생 중인 알람 카운트 |
| Overview | CPU Usage (전체/SQL Server), Session Count, Active Session Elapsed Time (Scatter), SQL Elapsed Time (Scatter) |
| Session Elapsed Time | 수행 시간 별 세션 수 및 최대 수행 시간 |
| DB Metric | 5개 주요 성능 지표 차트 (변경/확장 가능) |
| Session Tab | Session (실행중 세션), Blocked (Lock 세션) 목록 + Session Detail Slide 연계 |
Session Detail Slide에서는 다음 정보를 확인할 수 있습니다:
- 세션 연계 정보 (Instance Name, Database Name, Session ID, Plan Hash)
- 성능 지표 차트 (CPU Time, Reads, Writes, Logical Reads)
- 세션 정보 (Login Time, Host Name, Program Name, Status, Temp Usage, CPU Time, Memory Usage, Total Schedule Time, Total Elapsed Time)
- Full Text, Plan, Event Info
4.7 SQL Detail Slide / Session Detail Slide
SQL Detail Slide
SQL 상세 정보를 4개 탭으로 제공합니다:
| 탭 | 설명 |
|---|---|
| Full Text | SQL 전체 텍스트 (Formatting, Copy 기능) |
| Trend | SQL 성능 추이 |
| History | 시간별 Elapsed Time, Logical/Physical Reads, Executions |
| Plan | 실행 계획 (Stmt Text, Physical OP, Logical OP, Estimate Rows, Estimate IO, Estimate CPU 등) |
Session Detail Slide
세션 상세 정보를 제공합니다:
- Session Information: Instance Name, Database Name, Session ID, Login Time, Login Name, Host Name, Program Name, Status, Temp Usage, CPU Time, Memory Usage, Total Scheduled Time, Total Elapsed Time
- Active Session History: 과거 이력 (24개 항목)
- SQL Performance Details: Full Text, Plan, Last Statement
6. 주의사항 및 참고 정보
- 모니터링 방식 선택: 기본
procedure모드는 maxgauge DB를 생성하며, Azure 환경에서는query모드를 사용하여 별도의 DB 생성 없이 모니터링이 가능합니다. - 버전별 권한 차이: SQL Server 2022 이상/Azure에서는
##MS_serverStateReader##역할을 사용하고, 2012~2019에서는view server state권한을 직접 부여해야 합니다. - Session Kill 기능: Active Session 및 Lock Info 탭에서 Multi Kill 기능을 사용하려면
kill database connection권한이 별도로 필요합니다. - Table Size 수집:
tablesizeinfomessage데이터 수집을 위해서는VIEW DEFINITION권한이 추가로 필요합니다. - Plan Diff 기능: Plan Analysis에서 서로 다른 Plan Hash Value 간의 차이를 비교할 수 있어, 실행 계획 변경으로 인한 성능 저하 원인 분석에 유용합니다.
- SRS (Session Response Score): Search Session과 Trend Analysis의 Session 탭에서 과거 수행 이력 대비 수행 시간 지연 여부를 SRS 값으로 확인할 수 있습니다.
참고 문서: SQL Server 지원 버전 참고 문서: Session Detail Slide - SQL Server 참고 문서: SQL Detail Slide - SQL Server 참고 문서: DB Info 참고 문서: Search Session 참고 문서: Plan Analysis 참고 문서: Search SQL 참고 문서: Top-N Analysis 참고 문서: Alert History 참고 문서: Parameter History 참고 문서: Trend Analysis 참고 문서: Single View - SQL Server 참고 문서: Instance Detail Slide - SQL Server 참고 문서: DB Agent 지원 환경 참고 문서: SQL Server 권한