用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:/monitorprocess/ Servers.txt 用來記錄要監控的服務器:內容如下

Server1

Server2

DB_Server1

DB_Server2

….

 

3.       在用記事本寫一個C:/monitorprocess/Listremoteprocess2.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:/monitorprocess/ Listaprocessremote.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. 創建Job 來執行監控程序,並收集監控數據

 

 

 

1)設置Monitor 程序

 

 

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 = '/n'

      )

 

3. 設定Job Schedule 來定時執行監控收集數據。

 

4. 查詢收集的監控數據

select * from Processes
select * from Processes where processname like '%SQLServr'
Select * from Processes where servername ='ATDBQA'

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章