SQL Server 모니터링
검색된 문서를 바탕으로 상세한 가이드를 작성해드립니다.
exemONE SQL Server 모니터링
지원 버전
| 항목 | 지원 범위 |
|---|---|
| SQL Server | SQL Server 2012 이상 |
1. 필수 권한
메뉴 경로: Settings > Database (인스턴스 등록 시 사용할 모니터링 계정에 권한 부여 필요)
1-1. 기본 모니터링 권한
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)
1-2. Session Kill 권한
GRANT KILL DATABASE CONNECTION TO exemone;
1-3. 모니터링 방식(sqlserver.mode)에 따른 추가 권한
| 모드 | 설명 | 필요 권한 |
|---|---|---|
| procedure (기본값) | 수집 쿼리를 프로시저로 생성 | create any database 권한 필요 (maxgauge DB 자동 생성 시) |
| query | 수집 쿼리를 프로시저로 생성하지 않음 (Azure 환경 등에 사용) | create database 권한 불필요 |
procedure 모드 - maxgauge DB 자동 생성 시
GRANT CREATE ANY DATABASE TO exemone;
procedure 모드 - maxgauge DB 수동 생성 시
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;
query 모드 - fn_cdc_hexstrtobin 함수 오류 발생 시
GRANT EXECUTE ON dbo.fn_cdc_hexstrtobin TO exemone;
2. 사전 설정
메뉴 경로: Settings > Database > Edit Instance > Custom Configuration
2-1. Custom Configuration 옵션
| 옵션 | 설명 |
|---|---|
sqlserver.mode | 수집 방식 설정 - procedure (기본값): 수집 쿼리를 프로시저로 생성- query: 수집 쿼리를 프로시저로 생성하지 않음 (Azure처럼 procedure 생성 불가한 환경에서 사용) |
sqlserver.active_session_procedure_arg | Active Session 수집 옵션 - 0 (기본값): sqltext 수집- 1: sqltext 미수집- 2: sqltext, inputbuffer 수집- 3: sqltext, inputbuffer, parameter list 수집 (SQL Server 2019 이상 지원) |
job_info_procedure_interval | job info 정보 수집 유무 - on (기본값): job_info 데이터를 인터벌 값 10으로 수집- off: 미수집 |
sqlserver.onpremise_process_port | 다중 인스턴스 CPU 수집 옵션 - false (기본값): 다중 인스턴스의 CPU 사용량을 모두 더해서 수집- true: 설정된 인스턴스의 CPU 사용량만 수집 |
sqlserver.activesessionmessage_azure_xadmin | Azure DB 연결의 admin 계정 여부 설정 - admin 계정이 아닐 경우 true 설정 |
3. 주요 모니터링 항목 (Instance Detail Slide)
메뉴 경로: Database > SQL Server > [인스턴스 선택] > 인스턴스명 클릭
Instance Detail Slide(SQL Server)에서 아래 탭을 통해 세부 정보를 확인할 수 있습니다.
3-1. Information
Agent, Machine, Environment 정보를 제공합니다.

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Agent | Instance Name, Instance Group Name, Agent Version, DB Version, Boot Time, Uptime |
| 2 | Machine | Host Name, Host IP, OS, Kernel Version |
| 3 | Environment | Environment 정보 (복사 아이콘 클릭 시 텍스트 복사) |
3-2. Metric
SQL Server 인스턴스의 주요 성능 지표를 확인합니다.

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Global Time | 실시간을 포함한 최근 데이터를 모니터링합니다. Default 최근 5분 데이터 표시 |
| 2 | Instance Stat | Active Sessions, Locks Waiting, Open Transactions, Page Lookups/Sec, Page Reads/Sec, Page Life Expectancy, Batch Requests/Sec, Transactions/Sec_Total, User Connections, Buffer Cache Hit Ratio, SQL Compilations/Sec |
3-3. Active Session
현재 실행 중인 Active Session 목록을 확인합니다.

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Help | Active Session List 우측 Help 아이콘. SQL Server: Session Data와 동일한 정보입니다. |
| 2 | Filter | Or 또는 And 조건으로 Active Session 목록 필터링 |
| 3 | Multi Kill | Grid에서 행 체크 후 버튼 활성화. 클릭 시 실행 중인 Session 종료 |
| 4 | Get | Active Session List 데이터 조회 |
| 5 | Option | Grid 옵션 설정 |
| 6 | Active Session List | Active Session 목록을 Grid 형태로 표시 |
Active Session Grid
| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Elapsed Time (sec) | 수행 시간 (초) |
| 2 | Session ID | 세션 ID |
| 3 | SQL ID | SQL을 식별하는 엑셈 ID 값 |
| 4 | SQL Text | 수행한 SQL |
| 5 | ECID | 하위 스레드를 고유하게 식별하는 실행 컨텍스트 ID |
| 6 | Blocking Session ID | 요청을 차단하고 있는 세션 ID |
| 7 | Command Type | 실행 중인 명령 |
| 8 | Status | 프로세스 ID 상태 |
| 9 | Database Name | 데이터베이스 이름 |
| 10 | Object Name | 프로시저 등 오브젝트 명 |
| 11 | SQL Hash | 쿼리를 식별하는 이진 해시 값 |
| 12 | SQL Handle | 일괄처리 또는 저장 프로시저를 고유하게 식별하는 토큰 |
| 13 | Statement Start Offset | 현재 실행 중인 구문의 시작 위치 (바이트 단위) |
| 14 | Statement End Offset | 현재 실행 중인 구문의 종료 위치 (바이트 단위) |
| 15 | SQL Last Wait Type | 마지막 또는 현재 대기 유형의 이름 |
| 16 | SQL Wait Time | 대기 시간 |
| 17 | CPU Time | 요청에 사용되는 CPU 시간 |
| 18 | Logical Reads/s | 초당 논리적 읽기 수 |
| 19 | Physical Reads/s | 초당 물리적 읽기 수 |
| 20 | Program Name | 애플리케이션 프로그램 명 |
| 21 | Login Name | 로그인 명 |
| 22 | Tempdb Alloc | 현재 작업에서 Tempdb에 할당된 페이지 수 |
| 23 | Tempdb Dealloc | 현재 작업에서 Tempdb에 할당이 취소된 페이지 수 |
| 24 | Open Tran | 프로세스에 대해 열려 있는 트랜잭션 수 |
3-4. SQL List
SQL Server 인스턴스의 SQL 목록을 확인합니다.

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Global Time | 실시간을 포함한 최근 데이터를 모니터링합니다. Default 최근 10분 데이터 표시 |
| 2 | Search | SQL ID, SQL Text, SQL Handle, SQL Hash 기준으로 검색 |
| 3 | Toggle | 합계/평균 전환 (Elapsed Time(sec), Worker Time(sec), Logical Reads, Physical Reads, Rows) |
| 4 | Option | Grid 옵션 설정 |
| 5 | SQL List | SQL List를 Grid 형태로 표시 |
3-5. Lock Info
현재 Lock 상태인 세션 목록을 확인합니다.

Lock Info Grid
| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Session ID | 세션 ID (클릭 시 Session Detail Slide 오픈) |
| 2 | Blocking Session ID | 요청을 차단하고 있는 세션 ID |
| 3 | Elapsed Time (sec) | 수행 시간 |
| 4 | ECID | 하위 스레드를 고유하게 식별하는 실행 컨텍스트 ID |
| 5 | KPID | Windows 스레드 ID |
| 6 | Command Type | 현재 실행 중인 명령 |
| 7 | Status | 프로세스 ID 상태 |
| 8 | Database Name | 프로세스가 사용하고 있는 데이터베이스 명 |
| 9 | Object Name | 프로시저 등 오브젝트 명 |
| 10 | SQL Last Wait Type | 마지막 또는 현재 대기 유형의 이름 |
| 11 | SQL Wait Time (ms) | 현재 대기 시간 |
| 12 | CPU Time (ms/s) | 요청에 사용되는 CPU 시간 |
| 13 | Logical Reads/s | 초당 논리적 읽기 수 |
| 14 | Physical Reads/s | 초당 물리적 읽기 수 |
| 15 | Program Name | 애플리케이션 프로그램 명 |
| 16 | Login Name | 로그인 명 |
| 17 | Open Tran | 프로세스에 대해 열려 있는 트랜잭션 수 |
3-6. Alert
사용자가 설정한 Alert의 발생 이력을 확인합니다.

3-7. Parameter
SQL Server 인스턴스의 파라미터 목록을 확인합니다. Parameter Name 클릭 시 Parameter Detail Slide로 상세 이력(변경 전/후 값)을 확인할 수 있습니다.

4. Single View
메뉴 경로: Database > SQL Server > [인스턴스 선택]
Single View는 실시간으로 특정 하나의 데이터베이스에 대해 다양한 관점에서 성능 상태를 확인할 수 있는 화면입니다.
- CPU 및 세션 정보를 확인합니다.
- 데이터베이스 성능 지표의 Trend를 확인합니다.
- TempDB 사용률을 확인합니다.
- 실시간 수행 중인 Active Session 및 Lock 세션 정보를 확인합니다.
기본 뷰 화면 설명

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | 24 Trend | 데이터베이스 성능 지표들에 대한 24시간 운용 추이를 제공합니다. 다른 날짜의 성능 추이 비교를 통해 운영 추이를 확인할 수 있습니다. |
| 2 | TempDB Usage | TempDB 사용량과 여유 공간을 비율로 제공합니다. |
| 3 | Alert Logs | 현재 Alert이 발생하고 있는 알람 발생 카운트를 표시합니다. 클릭 시 Alert List 화면으로 연계됩니다. |
| 4 | Overview | 세션 상태 정보, CPU, Memory 사용률을 제공합니다. |
| 5 | Session Elapsed Time | 세션 수행 시간 별 카운트를 표시합니다. 클릭 시 세션 발생 정보를 확인할 수 있는 Session List 팝업창으로 연계됩니다. |
| 6 | DB Metric | 데이터베이스의 활동성 및 지연에 관한 지표들을 Chart 형식으로 모니터링합니다. 기본 5개의 주요 성능 지표에 대해 모니터링 가능하며, 원하는 성능 지표로 변경 및 확장이 가능합니다. |
4-1. 24 Trend
데이터베이스 성능 지표들에 대한 24시간 운용 추이를 제공합니다. 지표의 추이가 고르게 분포되어 있는지, 평소와는 다른 패턴으로 사용된 지표가 있는지 등을 판단하여 전반적인 서버 상태를 확인할 수 있습니다.

Compare Date를 클릭하여 성능 추이를 비교할 날짜를 선택합니다.

지표 변경 아이콘 클릭 시 원하는 지표로 변경할 수 있습니다.

4-2. TempDB Usage
TempDB 파일에서 사용되는 디스크 공간을 확인할 수 있습니다.

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Temp | 현재 사용 중인 크기와 여유 공간의 크기를 제공합니다. 마우스 오버 시 Used, Free 크기 및 비율을 확인할 수 있습니다. |
| 2 | Temp Size | 사용량을 차트로 제공합니다. |
4-3. Alert Logs
현재 Alert이 발생하고 있는 알람 발생 카운트를 표시합니다. 클릭 시 Alert 발생 정보를 확인할 수 있는 'Alert Detail' 창으로 연계됩니다.

4-4. Overview
OS 및 데이터베이스의 CPU 사용률과 Session 상태 및 수행 시간에 따른 상태를 확인할 수 있습니다.

1) CPU Usage
전체 CPU 및 SQL Server CPU 사용률을 확인할 수 있습니다.

2) Session Count
수행 중인 세션 상태를 확인할 수 있습니다. 각 카드 클릭 시 세션 목록과 연계되어 세션 상세 정보를 확인할 수 있습니다.

3) Active Session Elapsed Time
세션 수행 시간을 Scatter 차트로 확인할 수 있습니다.
- 주황색: 세션별 수행시간 기준으로 '최소 수행시간 ~ 평균 수행시간' 범위에 있는 경우
- 빨간색: '평균 수행시간 ~ 최대 수행시간' 범위에 있는 경우

차트 드래그 시 드래그한 시간대에 수행된 세션을 확인할 수 있습니다.
4) SQL Elapsed Time
SQL 수행 시간을 Scatter 차트로 확인할 수 있습니다.
- 주황색: SQL의 총 수행시간이 이전에 수집된 값 대비 1초 이상 차이가 발생한 경우
- 빨간색: 수행시간이 이전에 수행된 시간보다 긴 경우

4-5. Session Elapsed Time
세션 수행 시간 별 수행 중인 세션 수와 최대 수행 시간을 확인할 수 있습니다.

각 카드 클릭 시 클릭한 수행 시간 범위에 있는 세션 목록을 확인할 수 있습니다.

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | Elapsed Time | 수행 시간 범위를 보여줍니다. 수행 시간을 다중 선택하여 해당 범위에 있는 세션을 조회할 수 있습니다. |
| 2 | Background | 체크 시 Background 세션을 포함하여 조회합니다. |
| 3 | Auto Refresh | 체크 시 설정된 조회 주기(초)마다 세션 목록을 조회합니다. 조회 주기는 5초 이상부터 설정 가능합니다. |
| 4 | Refresh | 클릭 시 조회 조건에 맞는 세션 목록을 조회합니다. |
| 5 | Session List | 조회 조건에 해당하는 세션 목록을 표시합니다. 옵션을 통해 조회한 세션 목록을 엑셀로 다운로드할 수 있습니다. |
4-6. DB Metric
데이터베이스의 활동성 및 지연에 관한 지표들을 Chart 형식의 모니터링 화면으로 제공합니다. 기본적으로 5개의 주요 성능 지표에 대한 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능 지표로 변경 및 확장이 가능합니다.

4-7. Session Tab
Single View 화면 하단 Session Tab 버튼을 클릭하면 슬라이드 아웃 형태로 세션 목록을 확인할 수 있습니다. Overview나 Trend Chart를 통해 비정상적인 상태를 인지했을 때, Session Tab에서 원인이 되는 세션을 찾고 필요하다면 강제로 종료할 수 있습니다.
1) Session
현재 실행 중인 세션 목록을 확인할 수 있습니다.

더블 클릭 시 Session Detail Slide로 연계됩니다.
2) Blocked
현재 Lock 상태인 세션 목록을 확인할 수 있습니다.

더블 클릭 시 Session Detail Slide로 연계됩니다.
3) Session Detail Slide

| 순번 | 항목 | 설명 |
|---|---|---|
| 1 | 세션 연계 정보 | Instance Name, Database Name, Session ID, Plan Hash |
| 2 | 세션 상태 | Active(실행) / Killed(종료) |
| 3 | Kill Session | 현재 실행 중인 세션을 종료하는 기능 |
| 4 | Stop Refresh | 5초 주기로 세션 정보를 조회합니다. 클릭 시 조회를 중지합니다. |
| 5 | 성능 지표 | cpu time, reads, writes, logical reads를 차트로 제공 |
| 6 | 세션 정보 | Session ID, Login Time, Host Name, Program Name, Host Process ID, Login Name, Status, Temp Usage, CPU Time, Memory Usage, Total Schedule Time, Total Elapsed Time |
| 7 | Full Text | 세션에서 수행된 SQL 전체 텍스트 표시 |
| 8 | Plan | 세션에서 수행된 SQL의 Plan 정보 표시 |
| 9 | Event Info | 입력 버퍼의 쿼리 텍스트 표시 |
5. 주의사항 / 참고
| 항목 | 내용 |
|---|---|
| Azure 환경 모니터링 모드 | Azure는 procedure 생성이 불가하므로 sqlserver.mode = query 설정 사용 |
| Azure TableSizeInfoMessage 미수집 | GRANT VIEW DEFINITION TO exemone; 권한 부여 필요 |
| parameter list 수집 | sqlserver.active_session_procedure_arg = 3 설정 시 SQL Server 2019 버전부터 지원 |
| maxgauge DB | procedure 모드에서 exemONE이 자동으로 maxgauge DB를 생성합니다. 수동 생성 시 별도 권한 설정 필요 |
6. 참고 문서
참고 문서 목록
- Database_SQL Server_SQL Server 지원 버전
- Database_SQL Server_SQL Server 권한
- Database_SQL Server_SQL Server Custom Configuration
- Database_Instance_Single View_SQL Server
- Database_Instance_Instance Detail Slide_SQL Server
- Database_Instance_Session Detail Slide_SQL Server
- Database_Instance_Parameter Detail Slide_SQL Server
- Database_Azure SQL Server TableSizeInfoMessage 데이터 미 수집