본문으로 건너뛰기

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개 탭으로 구성됩니다:

설명
InformationAgent 정보, Machine 정보 (호스트, IP, OS, 커널 버전 등)
Metric인스턴스 성능 지표 차트
Active Session실시간 Active Session 목록 및 관리 (Multi Kill 지원)
SQL ListSQL 목록 및 통계
Lock InfoLock 대기 세션 정보 및 관리
Alert등록된 알람 정보 및 실시간 임계값
Parameter현재 파라미터 설정 값
Host Process List호스트 프로세스 목록


4.1.1 Metric (인스턴스 지표)

지표설명
Active SessionsActive 세션 수
Locks WaitingLock 대기 세션 수
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 / SecSQL 컴파일 횟수

4.1.2 Active Session Grid

항목설명
Elapsed Time (sec)수행시간
Session ID세션 ID
SQL ID / SQL TextSQL 식별 및 쿼리 텍스트
ECID실행 컨텍스트 ID
Blocking Session ID차단 세션 ID
Command Type / Status실행 명령 / 상태
Database Name / Object NameDB명 / 오브젝트명
SQL Last Wait Type / SQL Wait Time대기 유형 / 대기 시간
CPU TimeCPU 사용 시간
Logical Reads/s / Physical Reads/s논리/물리 읽기 수
Program Name / Login Name프로그램명 / 로그인명
Tempdb Alloc / Tempdb DeallocTempdb 할당/취소 페이지 수
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 Trend24시간 성능 지표 운용 추이, 다른 날짜와 비교 가능
TempDB UsageTempDB 사용량과 여유 공간 비율
Alert Logs현재 발생 중인 알람 카운트
OverviewCPU Usage (전체/SQL Server), Session Count, Active Session Elapsed Time (Scatter), SQL Elapsed Time (Scatter)
Session Elapsed Time수행 시간 별 세션 수 및 최대 수행 시간
DB Metric5개 주요 성능 지표 차트 (변경/확장 가능)
Session TabSession (실행중 세션), 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 TextSQL 전체 텍스트 (Formatting, Copy 기능)
TrendSQL 성능 추이
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. 주의사항 및 참고 정보

  1. 모니터링 방식 선택: 기본 procedure 모드는 maxgauge DB를 생성하며, Azure 환경에서는 query 모드를 사용하여 별도의 DB 생성 없이 모니터링이 가능합니다.
  2. 버전별 권한 차이: SQL Server 2022 이상/Azure에서는 ##MS_serverStateReader## 역할을 사용하고, 2012~2019에서는 view server state 권한을 직접 부여해야 합니다.
  3. Session Kill 기능: Active Session 및 Lock Info 탭에서 Multi Kill 기능을 사용하려면 kill database connection 권한이 별도로 필요합니다.
  4. Table Size 수집: tablesizeinfomessage 데이터 수집을 위해서는 VIEW DEFINITION 권한이 추가로 필요합니다.
  5. Plan Diff 기능: Plan Analysis에서 서로 다른 Plan Hash Value 간의 차이를 비교할 수 있어, 실행 계획 변경으로 인한 성능 저하 원인 분석에 유용합니다.
  6. 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 권한