一、计数器部署项目介绍
SQL Server每个服务器,日常需要监控的计数器指标高达上百,若一个个手动添加非常麻烦。此项目通过命令行工具针对指定计数器集成部署,提高部署效率。此包括开发数据库互联(ODBC)配置,通过ODBC访问监控服务器的数据库,将计数器信息传送到数据库中。同时还会详细讲解选取了哪些计数器,这些数据库的作用;以及如何利用相关的命令来实现批量部署。
二、计数器部署
计数器部署基本包括以下几个步骤:
- 筛选指定计数器名称输出到指定txt文件中:TypePerf.exe使用命令查找计数器
- 部署ODBC配置:本文通过系统任务调用vb脚本启动计数器。停止并删除原有计数器
- 新建最新的计数器(新建过程调用已有的txt文件):若是域环境新建计数器的时候要执行启动账户为域账户;需要确保当前服务器账户在目标服务器中存在,且密码相同。
- 启动性能计数器
- 创建系统任务(五分钟执行一次,每次调用vb脚本,自动启动计数器)
例:部署服务器名称为117-27-139-236的计数器
步骤一、计数器初始化(若只是添加计数器,则不需要执行此步骤)
EXEC [dbo].[spb_PerfConfigure_New] '117-27-139-236'
得出以下结果:
1 ALTER proc [dbo].[spb_PerfConfigure_New] 2 @machinename sysname 3 as 4 SET NOCOUNT ON 5 DECLARE @MSG VARCHAR(MAX) 6 SET @MSG='' 7 IF NOT EXISTS(SELECT TOP 1 1 FROM SQLPerfData.dbo.CounterDetails WITH(NOLOCK) WHERE MachineName='\\'+@machinename) 8 BEGIN 9 SELECT @MSG=@MSG+'结果01:'+@machinename+'服务器未收集任何计数器'+char(10) 10 GOTO RES 11 END 12 13 BEGIN TRY 14 BEGIN TRAN 15 --删除SQLPerfData.dbo.CounterDetails 16 DELETE FROM SQLPerfData.dbo.CounterDetails 17 WHERE MachineName='\\'+@machinename 18 19 INSERT INTO SQLPerfDataStat.dbo.CounterDetails_Collect_bak 20 SELECT * FROM SQLPerfDataStat.dbo.CounterDetails_Collect 21 WHERE MachineName=@machinename 22 23 DELETE FROM SQLPerfDataStat.dbo.CounterDetails_Collect 24 WHERE MachineName=@machinename 25 26 DELETE FROM SQLPerfDataStat.[dbo].[CounterDetails_Dts] 27 WHERE MachineName=@machinename 28 COMMIT 29 SELECT @MSG=@MSG+'结果01:'+@machinename+'原计数器已经删除完成'+char(10) 30 END TRY 31 BEGIN CATCH 32 SELECT @MSG='数据删除失败'+ERROR_MESSAGE() 33 IF @@TRANCOUNT>0 34 ROLLBACK; 35 THROW 50000,@MSG,1 36 END CATCH 37 38 RES: 39 SELECT @MSG=@MSG+'结果02:'+'在服务器['+@machinename+']上执行以下脚本,后按步骤操作'+CHAR(10) 40 +'USE CONFIGDB 41 GO 42 EXEC [DBO].[spb_PerfConfigure]' ; 43 44 THROW 50000,@MSG,1