http://technet.microsoft.com/en-us/library/bb490956.aspx
logman 에 대한 테크넷 자료
(해당 게시글에 첨부파일 있음. 첨부파일은 옮기지 않음.)
Automating Performance Monitor Statistics Collection for SQL Server and Windows
성능 모니터링을 위해 흔히 성능 모니터를(Perfmon) 사용합니다.
허나 머신이 재부팅되거나 잊어버리고 수집을 꺼 놓은 경우 계~~속 꺼진 상태로 수집이 안 되는 경우가 있는데요, 이를 완전 자동화하여 편하게 수집할 수 있습니다.
성능 수집을 위해 사용하는 것은 logman이라는 프로세스입니다.
아래는 logman의 사용 방법 설명입니다. (cmd -> logman /?)
Microsoft ® Logman.exe (6.1.7600.16385)
사용법: logman [create|query|start|stop|delete|update|import|export] [옵션]
동사: create 새 데이터 수집기를 만듭니다. query 쿼리 데이터 수집기 속성. 이름을 지정하지 않으 면 모든 데이터 수집기가 나열됩니다. start 기존 데이터 수집기를 시작하고 시작 시간을 수동 으로 설정합니다. stop 기존 데이터 수집기를 중지하고 끝 시간을 수동으 로 설정합니다. delete 기존 데이터 수집기를 삭제합니다. update 기존 데이터 수집기 속성 업데이트 import XML 파일에서 데이터 수집기 집합 가져오기 export XML 파일로 데이터 수집기 집합 내보내기
부사: counter 카운터 데이터 수집기 만들기 trace 추적 데이터 수집기 만들기 alert 경고 데이터 수집기를 만듭니다. cfg 구성 데이터 수집기를 만듭니다. providers 등록된 공급자 표시
옵션(counter): -c <path [path [...]]> 수집할 성능 카운터 -cf <파일 이름> 수집할 성능 카운터를 나열하는 파일, 줄 당 하나 -f <bin|bincirc|csv|tsv|sql> 데이터 수집기에 대한 로그 형식을 지정합니다. SQL 데이터베이스 형식의 경우 명령줄에 DNS!log 옵션과 함께 -o 옵션을 사용해야 합니다. 기본값 은 이진수입니다. -sc <값> 성능 카운터 데이터 수집기를 사용하여 수집할 샘 플의 최대 개수 -si <[[hh:]mm:]ss> 성능 카운터 데이터를 수집할 샘플 간격
옵션(trace): -f <bin|bincirc|csv|tsv|sql> 데이터 수집기에 대한 로그 형식을 지정합니다. SQL 데이터베이스 형식의 경우 명령줄에 DNS!log 옵션과 함께 -o 옵션을 사용해야 합니다. 기본값 은 이진수입니다. -mode <trace_mode> 이벤트 추적 세션 로거 모드. 자세한 내용을 보려 면 http://go.microsoft.com/fwlink/?LinkID=136464를 방문하십시오. -ct <perf|system|cycle> 각 이벤트에 대한 타임스탬프를 기록할 때 사용할 시계 해상도를 지정합니다. 쿼리 성능 카운터, 시 스템 시간 또는 CPU 주기를 사용할 수 있습니다. -ln <logger_name> 이벤트 추적 세션에 대한 로거 이름 -ft <[[hh:]mm:]ss> 이벤트 추적 세션 플러시 타이머 -[-]p <provider [flags [level]]> 사용 가능한 단일 이벤트 추적 공급자. 이 컨텍 스트에서 용어 'Flags'와 'Keywords'는 동의어입 니다. -pf <파일 이름> 사용 가능한 다중 이벤트 추적 공급자를 나열하는 파일 -[-]rt 실시간 모드에서 이벤트 추적 세션 실행 -[-]ul 사용자 모드로 이벤트 추적 세션 실행 -bs <값> 이벤트 추적 세션 버퍼 크기(KB) -nb <min max> 이벤트 추적 세션 버퍼 수
옵션(alert): -[-]el 이벤트 로그 보고를 사용하거나 사용하지 않습니 다. -th <threshold [threshold [...]]> 경고에 대한 카운터와 해당 임계값을 지정합니 다. -[-]rdcs <name> 경고 발생 시 시작하도록 설정된 데이터 수집기 -[-]tn <task> 경고 발생 시 실행할 작업 -[-]targ <argument> 작업 인수 -si <[[hh:]mm:]ss> 성능 카운터 데이터를 수집할 샘플 간격
옵션(cfg): -[-]ni 네트워크 인터페이스 쿼리를 사용하거나 사용하지 않습니다. -reg <path [path [...]]> 수집할 레지스트리 값 -mgt <query [query [...]]> 수집할 WMI 개체 -ftc <path [path [...]]> 수집할 파일의 전제 경로
옵션: -? 상황에 맞는 도움말 표시 -s <computer> 지정된 원격 시스템에서 명령을 수행합니다. -config <파일 이름> 명령 옵션을 포함하는 설정 파일 [-n] <name> 대상 개체의 이름. -pid <pid> 프로세스 식별자 -xml <파일 이름> 가져오거나 내보낼 XML 파일의 이름 -as 요청한 작업을 비동기적으로 수행합니다. -[-]u <user [password]> 실행하는 데 사용할 사용자. 암호에 *를 입력하면 암호를 물어보는 프롬프트가 나타납니다. 암호 프 롬프트에 입력할 때는 암호가 표시되지 않습니다. -m <[start] [stop]> 예약된 시작 또는 끝 시간 대신 수동 시작 또는 중지로 변경합니다. -rf <[[hh:]mm:]ss> 지정한 기간 동안 데이터 수집기 실행 -b <yyyy-MM-dd tt[오전|오후]> 지정된 시간에 데이터 수집기를 시작합니다. -e <yyyy-MM-dd tt[오전|오후]> 지정된 시간에 데이터 수집기를 끝냅니다. -o <path|dsn!log> SQL 데이터베이스 내의 출력 로그 파일 또는 DSN 및 로그 세트 이름. 기본 경로는 '%systemdrive%\PerfLogs\Admin'입니다. -[-]r 지정한 시작 및 끝 시간에 매일 데이터 수집기를 반복합니다. -[-]a 기존 로그 파일에 추가 -[-]ow 기존 로그 파일 덮어쓰기 -[-]v <nnnnnn|mmddhhmm> 로그의 끝에 파일 버전 포맷 추가 -[-]rc <task> 로그를 닫을 때마다 지정된 명령 실행 -[-]max <값> 최대 로그 파일 크기(MB)(SQL 로그 레코드) -[-]cnf <[[hh:]mm:]ss> 지정한 시간이 지나거나 최대 크기가 초과되면 새 파일 만들기 -y 모든 질문에 대해 확인 절차 없이 yes로 답합니다. -fd 이벤트 추적 세션 버퍼 플러시 강요 -ets 활성 이벤트 추적 세션 사용
참고: [-]가 사용되는 경우 추가된 -는 옵션을 무효화합니다. 예를 들어, --u은(는) -u 옵션을 끕니다.
추가 정보: Microsoft TechNet - http://go.microsoft.com/fwlink/?LinkID=136332
예: logman start perf_log logman update perf_log -si 10 -f csv -v mmddhhmm logman create counter perf_log -c "\Processor(_Total)\% Processor Time" logman create counter perf_log -c "\Processor(_Total)\% Processor Time" -max 10 -rf 01:00 logman create trace trace_log -nb 16 256 -bs 64 -o c:\logfile logman create alert new_alert -th "\Processor(_Total)\% Processor Time>50" logman create cfg cfg_log -reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\" logman create cfg cfg_log -mgt "root\cimv2:SELECT * FROM Win32_OperatingSystem" logman query providers logman query providers Microsoft-Windows-Diagnostics-Networking logman start process_trace -p Microsoft-Windows-Kernel-Process 0x10 win:Informational -ets logman start usermode_trace -p "Service Control Manager Trace" -ul -ets logman query usermode_trace -p "Service Control Manager Trace" -ul -ets logman stop usermode_trace -p "Service Control Manager Trace" -ul -ets logman start process_trace -p Microsoft-Windows-Kernel-Process -mode newfile -max 1 -o output%d.etl -ets logman start "NT Kernel Logger" -o log.etl -ets logman start "NT Kernel Logger" -p "Windows Kernel Trace" (process,thread) -ets |
일단 아래 내용을 메모장에 붙여 넣고 저장합니다. 저는 “SQLServer_Perfmon_Automation.config” 라는 이름으로 저장하도록 하겠습니다.
내용을 보시면 SQL Server의 서비스 이름이 “MSSQL$SQL2k8R2#1”로 되어있는데 이는 각 환경에 맞게 변경해주셔야 합니다.
"\Memory\Available MBytes" "\Memory\Free System Page Table Entries" "\Memory\Pages Input/sec" "\Memory\Pages/sec" "\MSSQL$SQL2K8R2#1:Access Methods\Full Scans/sec" "\MSSQL$SQL2K8R2#1:Access Methods\Page Splits/sec" "\MSSQL$SQL2K8R2#1:Access Methods\Workfiles Created/sec" "\MSSQL$SQL2K8R2#1:Access Methods\Worktables Created/sec" "\MSSQL$SQL2K8R2#1:Buffer Manager\Buffer cache hit ratio" "\MSSQL$SQL2K8R2#1:Buffer Manager\Checkpoint pages/sec" "\MSSQL$SQL2K8R2#1:Buffer Manager\Free pages" "\MSSQL$SQL2K8R2#1:Buffer Manager\Lazy writes/sec" "\MSSQL$SQL2K8R2#1:Buffer Manager\Page life expectancy" "\MSSQL$SQL2K8R2#1:Buffer Manager\Page reads/sec" "\MSSQL$SQL2K8R2#1:Buffer Manager\Page writes/sec" "\MSSQL$SQL2K8R2#1:Buffer Manager\Stolen pages" "\MSSQL$SQL2K8R2#1:General Statistics\Logins/sec" "\MSSQL$SQL2K8R2#1:General Statistics\Logouts/sec" "\MSSQL$SQL2K8R2#1:General Statistics\User Connections" "\MSSQL$SQL2K8R2#1:Latches\Average Latch Wait Time (ms)" "\MSSQL$SQL2K8R2#1:Locks(_Total)\Average Wait Time (ms)" "\MSSQL$SQL2K8R2#1:Locks(_Total)\Lock Requests/sec" "\MSSQL$SQL2K8R2#1:Locks(_Total)\Number of Deadlocks/sec" "\MSSQL$SQL2K8R2#1:Memory Manager\Target Server Memory (KB)" "\MSSQL$SQL2K8R2#1:Memory Manager\Total Server Memory (KB)" "\MSSQL$SQL2K8R2#1:SQL Statistics\Batch Requests/sec" "\MSSQL$SQL2K8R2#1:SQL Statistics\SQL Compilations/sec" "\MSSQL$SQL2K8R2#1:SQL Statistics\SQL Re-Compilations/sec" "\Paging File(_Total)\% Usage" "\Paging File(_Total)\% Usage Peak" "\PhysicalDisk(_Total)\Avg. Disk Read Queue Length" "\PhysicalDisk(_Total)\Avg. Disk sec/Read" "\PhysicalDisk(_Total)\Avg. Disk sec/Transfer" "\PhysicalDisk(_Total)\Avg. Disk sec/Write" "\PhysicalDisk(_Total)\Avg. Disk Write Queue Length" "\PhysicalDisk(_Total)\Disk Read Bytes/sec" "\PhysicalDisk(_Total)\Disk Reads/sec" "\PhysicalDisk(_Total)\Disk sec/Transfer" "\PhysicalDisk(_Total)\Disk Write Bytes/sec" "\PhysicalDisk(_Total)\Disk Writes/sec" "\Process(sqlservr)\% Privileged Time" "\Process(sqlservr)\% Processor Time" "\Processor(_Total)\% Privileged Time" "\Processor(_Total)\% Processor Time" "\System\Context Switches/sec" "\System\Processor Queue Length" |
위 파일을 생성하시고 아래 스크립트에 수집 데이터의 저장 경로와 스크립트 위치, 수집 시간 등의 옵션을 설정하고 명령 프롬프트에 입력합니다.
저는 “D:\PerfLog\Data\” 라는 폴더에 성능 자료를 수집할 것이며 해당 설정파일은 “D:\PerfLog\”폴더에 있습니다.
수집 시간은 5초 간격으로 정의하였으며 (-si 05), 수집 계정은 로컬 시스템 계정인 alucard로 되어있습니다. (계정 정보는 –u ID PW로 입력하면 됩니다. )
logman create counter SQLServerPerf -f bin -b 2010/01/01 00:00:01 -E 2010/01/01 23:59:00 -si 05 -v mmddhhmm -o "d:\PerfLog\Data\SQLServerPerf" -cf "d:\PerfLog\SQLServer_Baseline_Perfmon.config" -u alucard *** |
여기까지 등록이 되었으면 이제 윈도우 스캐줄에 등록할 배치 파일을 만들어야 합니다.
저는 “SQLServer_Perfmon_Automation.bat”라는 파일에 아래와 같이 설정하였습니다.
*폴더 이동은 네트워크를 통해 원격지 저장소로 설정할 수도 있습니다.
logman stop SQLServerPerf sleep 1 move d:\PerfLog\Data\*.blg d:\perflog\backup\ sleep 1 logman start SQLServerPerf |
이제 OS Scheduler에 방금 만든 배치파일을 등록하여 매일 설정 시간에 수집을 중단, 수집된 파일을 다른 장소로 옮기고 새롭게 성능 수집을 시작합니다.
명령 프롬프트에 아래 스크립트 중 경로, 시간 등을 환경에 맞추어 설정한 뒤 입력하면 자동화 스캐쥴 등록이 완료됩니다.
schtasks /create /tn "SQLServerPerfmon_Automation" /tr D:\perflog\SQLServerPerfmon_Automation.bat /sc daily /st 23:59:58 /ed 2099/01/01 /ru system |
참고 링크: http://www.mssqltips.com/tip.asp?tip=1776
--------------------------------------------------------------------------
'Windows > 윈도우 공통' 카테고리의 다른 글
[스크랩] 장치관리자에서 숨김장치 확인하기 - OS 재설치시 확인 (0) | 2015.01.05 |
---|---|
[스크랩] 윈도우 드라이버 파일 알아내기 (0) | 2015.01.05 |
[스크랩] No buffer space available / 큐 공간 또는 버퍼가 부족 현상 (0) | 2014.12.24 |
commit charge 관련 스크랩 (0) | 2014.12.16 |
[스크랩] TCP/IP 관련 STATE 내용 (넘넘 중요행!) (0) | 2014.11.18 |