2012-11-19 82 views
1

是否有人使用Cacti監視SQL服務器計數器(磁盤隊列長度,I/O請求等)。 如果你是,你是如何去完成這個?基本上我在我的SQL Server上收集了很多性能計數器。我需要一種方法來創建圖形並切片並將我收集的數據切塊?如果你知道任何其他圖形解決方案讓我知道?使用Cacti監視Microsoft SQL服務器

回答

5

是的,這做了幾次:

http://docs.cacti.net/usertemplate:host:microsoft:sqlserver

它的作品真的很好。您需要訪問才能創建登錄。這是你運行它是非侵入性的腳本:

/* SQL 2005/2008 */ 
USE [master] 
GO 
CREATE LOGIN [cactistats] WITH PASSWORD=SomePassword, DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 
EXEC sys.sp_addsrvrolemember @loginame = N'cactistats', @rolename = N'processadmin' 
GO 
CREATE USER [cactistats] FOR LOGIN [cactistats] WITH DEFAULT_SCHEMA=[dbo] 
GO 
GRANT SELECT ON [sys].[dm_os_performance_counters] TO [cactistats] 
GO 
/* END */ 

一旦它運行,您添加腳本按照安裝文檔,你就可以繪製SQL指標。

Mike

+0

Thanks!這看起來不錯。將開始玩它。 – sharadov

+0

使用「GRANT VIEW SERVER STATE TO [CactiStats]」查看進程而不是ProcessAdmin的成員並殺死它們會不會更好? – AndrewD

0

此答案是對正確標記的答案的補充。

如果你需要監視特定SQL Server實例,那麼你需要編輯這個腳本文件

/usr/share/cacti/site/scripts/ss_win_mssql.php 

並更改行:

if (! $link = mssql_connect($host.':'.$port, $username, $password)) 

$host = ($port == '1433' ? $host : $host.':'.$port); 
if (! $link = mssql_connect($host, $username, $password)) 
    return; 

當創建圖形設置主機名和insta nce像這樣:

setting the sql instance name