본문으로 건너뛰기

SQL Server 모니터링

이제 모든 관련 문서를 확인했습니다. 상세한 답변을 드리겠습니다.


exemONE SQL Server 모니터링 상세 가이드


1. 지원 버전

참고 문서: SQL Server 지원 버전

항목내용
지원 버전SQL Server 2012 이상

2. 필수 권한

참고 문서: SQL Server 권한

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. 사전 설정

참고 문서에서 SQL Server에 대한 별도의 사전 설정(Pre-Configuration) 전용 문서는 없으나, 권한 문서를 기반으로 정리하면 다음과 같습니다:

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 지원 환경

DB Agent를 설치하고, SQL Server 인스턴스를 exemONE에 등록해야 합니다.


4. 주요 모니터링 항목

4.1 Instance Detail Slide (인스턴스 상세)

참고 문서: Instance Detail Slide - SQL Server

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 (싱글 뷰)

참고 문서: Single View - SQL Server

특정 하나의 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.3 Performance Analysis (성능 분석)

4.3.1 Trend Analysis

참고 문서: Trend Analysis

날짜별, 시간별 성능 추이를 확인하며, 하단 Grid에서 다음 5가지 탭의 상세 정보를 분석할 수 있습니다:

설명
Session클릭 시점의 세션 정보 (41개 항목: Elapsed Time, Wait Type, CPU Time, Logical/Physical Reads, Tempdb, DOP, SRS 등)
BlockedLock 세션 정보 (상위/하위 Grid 계층 구조, Lock Resource Type, Request Mode 등)
SQL StatSQL 통계 (Execution Count, Elapsed Time, Worker Time, Logical/Physical Reads, Rows - Last/Min/Max/Avg 포함)
Top SQLOrder By 기준 상위 100 SQL (Elapsed Time, Worker Time, Logical Reads, Physical Reads 등)
WaitWait 정보 (Pie Chart + Grid, Waiting Tasks Count, Wait Time, Signal Wait Time - Delta 값 포함)


4.3.2 Parameter History

참고 문서: Parameter History

기준 날짜와 비교 날짜의 파라미터를 비교하여 변경 이력을 확인합니다. 변경된 파라미터는 파란색(True)으로 표시됩니다.


4.3.3 Alert History

참고 문서: Alert History

히트맵 또는 Stack Bar Chart 형태로 알람 발생 이력을 확인하며, Top Alert 및 Alert List를 분석할 수 있습니다.


4.4 SQL Analysis (SQL 분석)

4.4.1 Top-N Analysis

참고 문서: Top-N Analysis

Stacked Area Chart로 특정 기간의 Top SQL을 조회합니다.

  • Group By: SQL / Procedure
  • Order By: Elapsed Time, Worker Time, Logical Reads, Physical Reads
  • Top Procedure: 상위 5건 (최대 200개)
  • Top SQL: 상위 20건 (최대 200개)


4.4.2 Search SQL

참고 문서: Search SQL

특정 SQL의 통계 정보, 과거 수행 이력, Trend, History, Full Text, Plan을 확인합니다.

  • Filter: Database, Object, SQL Hash
  • 수집 항목: Execution Count, Elapsed Time, Worker Time, Logical Reads, Physical Reads, Rows (각 비율(%) 포함)

4.4.3 Plan Analysis

참고 문서: Plan Analysis

SQL 쿼리의 실행 계획을 시각적으로 분석합니다.

  • Plan Hash Value 변화가 있는 SQL ID를 조회
  • Plan Diff 기능으로 실행 계획 비교 가능
  • Plan Grid: Stmt Text, Physical OP, Logical OP, Estimate Rows, Estimate IO, Estimate CPU, Total SubTree Cost 등


4.5 Session Analysis (세션 분석)

Search Session

참고 문서: Search Session

조건 입력으로 5초 단위 세션 정보를 필터링하여 분석합니다.

  • Filter: Elapsed Time(s), Session ID, Database Name, Object Name, Blocking Session ID, SQL Hash, Host Name, Program Name, Login Name
  • 수집 항목: 43개 항목 (Wait Type, Wait Resource, DOP, Parallel Worker Count, Percent Complete, Deadlock Priority, Tempdb, SRS 등)

4.6 DataSpace Analysis (데이터 공간 분석)

DB Info

참고 문서: DB Info

데이터베이스의 정보, 데이터 파일, 로그 파일 크기 및 사용량을 분석합니다.

구성 요소설명
Database Size InfoData Size, Data Used Size, Log Size, Log Used Size, Last Backup Time, VLF Count, Increment(24h)
Database InfoOwner, Create Date, Status, User Access, Compatibility Level, Collation Name, Recovery Model, Updateability
Database File InfoFile ID, File Name, File Path, File Group, File Size, Max Size, Growth, Usage
File Trend (Day)일 단위 데이터/로그 파일 Total 및 Used 추이
File Trend (Time)시간별 데이터/로그 파일 Total 및 Used 추이
Top 30 TableTotal 내림차순 Top 30 테이블 (Table Name, Total, Used, Increment, Usage%, Rows)

4.7 SQL Detail Slide / Session Detail Slide

SQL Detail Slide

참고 문서: SQL Detail Slide - SQL Server

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 Detail Slide - SQL Server

세션 상세 정보를 제공합니다:

  • 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

5. 모니터링 항목 종합 정리

카테고리주요 수집 지표
인스턴스 성능Active Sessions, Locks Waiting, Open Transactions, Page Lookups/Reads/sec, Page Life Expectancy, Batch Requests/sec, Transactions/sec, User Connections, Buffer Cache Hit Ratio, SQL Compilations/sec
세션 모니터링Elapsed Time, Blocking Session ID, Command Type, Status, SQL Wait Type/Time, CPU Time, Logical/Physical Reads, Tempdb Alloc/Dealloc, DOP, SRS
SQL 분석Execution Count, Elapsed Time, Worker Time, Logical/Physical Reads, Rows (Last/Min/Max/Avg), Plan Hash, Creation Time
Wait 분석Waiting Tasks Count, Wait Time, Signal Wait Time (각 Delta/Delta per sec 포함)
데이터 공간Database/File Size, Used Size, VLF Count, Increment(24h), Top 30 Table, Recovery Model
Lock 분석Lock Resource Type, Request Type/Status/Mode, Wait Resource
파라미터전체 파라미터 현재값, 변경 이력 비교 (Base Date vs Compare Date)
알람Metric/System Alert, Warning/Critical 레벨, 히트맵 이력

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 값으로 확인할 수 있습니다.