Windows/윈도우 공통

[스크랩] 퍼프몬을 자동으로, logman

99iberty 2015. 1. 5. 17:10

 

http://technet.microsoft.com/en-us/library/bb490956.aspx

logman 에 대한 테크넷 자료

 

http://www.sqler.com/320850

(해당 게시글에 첨부파일 있음. 첨부파일은 옮기지 않음.)

 

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”로 되어있는데 이는 각 환경에 맞게 변경해주셔야 합니다.

172022254CEA24EA0DD28B

 

"\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”라는 파일에 아래와 같이 설정하였습니다.

*폴더 이동은 네트워크를 통해 원격지 저장소로 설정할 수도 있습니다.

202297254CEA24EB08F3D5



 

 

logman stop SQLServerPerf

sleep 1

move d:\PerfLog\Data\*.blg d:\perflog\backup\

sleep 1

logman start SQLServerPerf

이제 OS Scheduler에 방금 만든 배치파일을 등록하여 매일 설정 시간에 수집을 중단, 수집된 파일을 다른 장소로 옮기고 새롭게 성능 수집을 시작합니다.

명령 프롬프트에 아래 스크립트 중 경로, 시간 등을 환경에 맞추어 설정한 뒤 입력하면 자동화 스캐쥴 등록이 완료됩니다.

1917A4254CEA24EB178568


 

 

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

--------------------------------------------------------------------------

 

http://tempdb.tistory.com/11