SQL ServerでOS ServerのTask Management情報を監視する
SQL ServerでOS ServerのTask Management情報を監視する
--原文はhttp://www.databasejournal.com/features/mssql/article.php/3562586/Monitor-CPU-Usage-of-All-Running-Processes---Part-II.htmから
一:モニタ部分
1.Cディスクにフォルダを作成する:C:Monitorprocessなど
2.C:monitorprocessServersを作成する.txtは、監視するサーバを記録するために使用されます.内容は次のとおりです.
Server1
Server2
DB_Server1
DB_Server2
….
3.メモ帳でC:monitorprocessListremoteprocess 2を書く.vbsプログラム、内容は以下の通りです
'Objective: To Find the CPU usage of each process that are running on a remote machine
'Created by : MAK
'Created Date: Nov 2, 2005
'Syntax: cscript Listremoteprocess2.vbs machinename
'Example: cscript Listremoteprocess2.vbs MyMachine
Set objArgs = WScript.Arguments
strComputer =objArgs(0)
Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_PerfProc_Process",,48)
' wscript.echo "Computer Name"& ","& "Process Name"& ","& "CPU Usage"
For Each objItem in colProcesses
if objItem.Name <> "Idle"and objItem.Name <> "_Total"then
wscript.echo strcomputer & ","& objItem.Name & ","& objItem.PercentProcessorTime
end if
Next
4.C:monitorprocessListaprocessremoteを作成する.bat、内容は以下の通りです
REM Objective: To execute the Listremoteprocess2.vbsfor every server listed in servers.txt
REM Created by: MAK
REM Created by"Nov 2, 2005
REM Usage: Listaprocessremote.bat Allservers.csv
dir %1
if %errorlevel% == 0 goto process
goto delfile
:delfile
del %1
goto process
:process
for/f "tokens=1 delims=&"%%i in (c:\Monitorprocess\Servers.txt) do cscript/nologo c:\Monitorprocess\Listremoteprocess2.vbs %%i >>%1
goto end
:end
5.作成したモニタをテストし、cmdはdosに入り、
cd c:\Monitorprocess
二:正常にテストに合格したことを確認して、私は後でデータベースの設定部分に入ります
1.データベース、ユーザー及び監視データを保管するテーブルの作成
2.ジョブを作成してモニタを実行し、モニタデータを収集する
1)モニタプログラムの設定
Type: Operation System Command(CmdExec)
Command:
cd C:\Monitorprocess
Listaprocessremote.bat myserverprocess.csv
2.監視データをデータベース表にインポートする
Type:Transact-SQL Script(TSQL)
Command:
use MonitorProcesses
go
BULK INSERT MonitorProcesses.dbo.Processes_view
FROM 'c:\Monitorprocess\myserverprocess.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = ''
)
3.ジョブのScheduleを設定し、タイミングを決めて監視収集データを実行する.
4.収集した監視データの照会
--原文はhttp://www.databasejournal.com/features/mssql/article.php/3562586/Monitor-CPU-Usage-of-All-Running-Processes---Part-II.htmから
一:モニタ部分
1.Cディスクにフォルダを作成する:C:Monitorprocessなど
2.C:monitorprocessServersを作成する.txtは、監視するサーバを記録するために使用されます.内容は次のとおりです.
Server1
Server2
DB_Server1
DB_Server2
….
3.メモ帳でC:monitorprocessListremoteprocess 2を書く.vbsプログラム、内容は以下の通りです
'Objective: To Find the CPU usage of each process that are running on a remote machine
'Created by : MAK
'Created Date: Nov 2, 2005
'Syntax: cscript Listremoteprocess2.vbs machinename
'Example: cscript Listremoteprocess2.vbs MyMachine
Set objArgs = WScript.Arguments
strComputer =objArgs(0)
Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_PerfProc_Process",,48)
' wscript.echo "Computer Name"& ","& "Process Name"& ","& "CPU Usage"
For Each objItem in colProcesses
if objItem.Name <> "Idle"and objItem.Name <> "_Total"then
wscript.echo strcomputer & ","& objItem.Name & ","& objItem.PercentProcessorTime
end if
Next
4.C:monitorprocessListaprocessremoteを作成する.bat、内容は以下の通りです
REM Objective: To execute the Listremoteprocess2.vbsfor every server listed in servers.txt
REM Created by: MAK
REM Created by"Nov 2, 2005
REM Usage: Listaprocessremote.bat Allservers.csv
dir %1
if %errorlevel% == 0 goto process
goto delfile
:delfile
del %1
goto process
:process
for/f "tokens=1 delims=&"%%i in (c:\Monitorprocess\Servers.txt) do cscript/nologo c:\Monitorprocess\Listremoteprocess2.vbs %%i >>%1
goto end
:end
5.作成したモニタをテストし、cmdはdosに入り、
cd c:\Monitorprocess
Listaprocessremote.bat myserverprocess.csv
二:正常にテストに合格したことを確認して、私は後でデータベースの設定部分に入ります
1.データベース、ユーザー及び監視データを保管するテーブルの作成
create database MonitorProcesses
go
use MonitorProcesses
go
Create table Processes (
id int identity (1,1) not null,
ServerName varchar(128),
ProcessName varchar(256),
CPU_Usage int not null,
Time datetime constraint currentdate default getdate())
go
Create view Processes_view as
select ServerName,ProcessName, CPU_Usage from Processes
go
use master
go
sp_addlogin 'procuser','your_password','MonitorProcesses'
go
use MonitorProcesses
go
sp_adduser 'procuser'
go
sp_addrolemember 'db_datareader','procuser'
go
sp_addrolemember 'db_datawriter','procuser'
go
2.ジョブを作成してモニタを実行し、モニタデータを収集する
1)モニタプログラムの設定
Type: Operation System Command(CmdExec)
Command:
cd C:\Monitorprocess
Listaprocessremote.bat myserverprocess.csv
2.監視データをデータベース表にインポートする
Type:Transact-SQL Script(TSQL)
Command:
use MonitorProcesses
go
BULK INSERT MonitorProcesses.dbo.Processes_view
FROM 'c:\Monitorprocess\myserverprocess.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = ''
)
3.ジョブのScheduleを設定し、タイミングを決めて監視収集データを実行する.
4.収集した監視データの照会
select * from Processes
select * from Processes where processname like '%SQLServr'
Select * from Processes where servername ='ATDBQA'