设为首页 收藏本站
查看: 1533|回复: 0

[经验分享] 使用SQLdiag合并数据采集----使用SQLdiag配置管理器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-18 10:09:24 | 显示全部楼层 |阅读模式
PSSDIAG/SQLdiag Manager使你能够通过GUI配置数据采集,而不是费力地去修改XML配置文件。该工具的先决条件是.NET Frmework 2.0和Windows 2003 Server/XP或以上版本。工具路径在http://diagmanager.codeplex.com/。Diag Manager是一个32位的工具,默认的安装路径是:
  • 64位-------C:\Program Files (x86)\Microsoft\Pssdiag
  • 32位-------C:\Program Files\Microsoft\Pssdiag
安装完成后,你可以在All Programs=>PSSDIAG=>PSSDIAG Configuration Manager看到该程序。
使用Diag Manager配置SQLdiag Data Collection
启动该工具后,GUI会提供不同的配置选项,如图11-5所示:
SouthEast.jpg
图11-5中的箭头显示了不同的配置选项,使你能够轻松地定制你的数据采集。当你使用SQL Server authentication时,##SQLDIAG.log中会包含如下信息:
Password:
User prompted for password at runtime
SQLDIAG Initialization starting...
把跟踪过滤加入SQLdiag Configuration中
通常,把Profiler跟踪过滤添加到数据采集中,可以减少诊断数据的采集量。如果你要使用SQLdiag XML配置文件来收集Profiler跟踪,那么你需要遵循如下步骤:
  • 在服务器上 启动SQLdiag。
  • 使用函数fn_trace_getinfo或视图sys.traces找出Profiler trace的Trace ID。
  • 使用sp_trace_setstatus停止跟踪,不会删除定义。
  • 使用第二步获取的Trace ID,并使用sp_trace_setfilter来设置过滤。可以参考SQL Server Books Online中的“SQL Profiler Data Columns”。
  • 使用函数fn_trace_filterinfo验证过滤是工作的。
  • 使用sp_trace_setstatus启动trace数据采集。
下面的T-SQL可用来设置过滤SPID=52,TraceID=2的信息:
  • select * from sys.traces — To get the trace id  
  • EXEC sp_trace_setstatus 2,0 — Stops the trace but doesn't delete the trace definition  
  • from the server  
  • EXEC sp_trace_setfilter 2, 12, 0, 0, 52 — Add a filter for SPID = 52  
  • EXEC sp_trace_setstatus 2,1 — Start the trace again  
  • select * from fn_trace_getfilterinfo(2) — Get information about the filters set for the  
  • trace  

理解SQLdiag中的定制诊断(Understanding the Custom Diagnostics in SQLdiag)
定制诊断配置所使用的T-SQL、VBScript和DOS命令可在C:\Program Files\Microsoft\Pssdiag\CustomDiagnostics获取,如果是64位,就把Program Files换成Program Files (x86)。
一般的定制诊断
SQL Base定制采集器用于添加任务,这些任务用于每种类型的SQL Server数据采集。这种定制采集器运行优先于任何其他定制采集器任务。这种采集器也会收集注册表的基本配置信息、系统配置信息、PAE状态、及目标实例上活动的跟踪标记。所有输出文件都有前缀“SERVER_SQL_Base_*.”。
MSINFO定制采集器收集目标机器的msinfo32的输出。其输出文件都有前缀“SERVER_SQL_Best_Practices_*.”。
SQL 2008 Perf Stats
最常见的定制是收集SQL Server阻塞诊断,这种信息可以使用SQL 2008 Perf Stats定制诊断选项来收集。如果你想手动抓取SQL Perf Stats脚本,那么你需要得到最新的Perf Stats脚本,可以从http://sqlnexus.codeplex.com/wikipage?title=Sql2005PerfStatsScript&ProjectName=sqlnexus下载。下载后,解压缩PerfStatsScript2008R2.zip,你可以看到如图11-7所示的文件:
SouthEast.jpg
脚本SQL_2008_Perf_Stats_Snapshot.sql收集SQL Server实例最耗资源的查询、缺失索引的信息等。脚本SQL_2008_Perf_Stats.sql定期(WAITFOR DELAY 10秒)收集不同的DMV输出和阻塞信息。这两个脚本可以使用SQL Nexus工具导入到SQL Server数据库用于数据分析。这种定制诊断也会收集System Health Session Extended Event session的输出。
备份已经可用的诊断数据
SQL 2008 Backup MDW 定制采集器执行Management Data Warehouse数据库的备份。当你保存SQLdiag配置时,会弹出提示窗口,如图11-8所示:
SouthEast.jpg
SQL Dumps定制采集器收集所有mini-dump(SQLDumpXXXX.mdmp)文件,症状dump文本文件(SQLDump*.txt)和执行日志文件。采集器跳过任何大于10MB的dump文件,并将收集的dump限制在70MB。
分析服务定制采集器
Diag Manager为分析服务提供了4种不同类型的采集器,包括Analysis Services 2000、2005、2008和Shared。气筒2008和Shared可用于SQL Server 2012分析服务。如果你想查看这些采集器收集什么信息,可以右击采集器并选择Details选项,如图11-9所示:
SouthEast.jpg
特定功能的定制诊断(Feature-Specific Custom Diagnostics)
Diag Manager还提供了一些特定功能的定制采集器,它非常有助于排除SQL Server特定的场景或功能方面的故障。Database Mirroring定制采集器从不同的系统DMV和目录中收集数据库镜像配置和镜像数据库状态相关的信息。另外,数据库镜像采集器连接数据库镜像partner 和witness来收集运行SQLdiag的目标实例的配置数据。注意,还没有可用的新的定制采集器,来收集Alailability Groups的特定数据。然而,你可以在选项_MyCollectors下面编写自己的采集器。Full Text Search定制采集器收集启用全文检索的数据库的全文检索配置和全文目录细节。Linked Server Configuration定制采集器收集可用的链接服务器相关的信息。前面介绍的这些采集器要用到xp_cmdshell。
SQL 2005 tempdb Space和Latching定制采集器可用于解决tempdb竞争相关的问题。这个采集器在整个SQLdiag数据采集期间,使用T-SQL脚本收集tempdb使用和统计相关信息。该采集器使用如下DMV和系统目录来收集诊断信息:sys.dm_db_file_space_used、sys.dm_db_session_file_usage、sys.dm_db_task_space_usage、sys.sysprocesses、sys.dm_os_waiting_tasks。
SQL Blocking定制采集器在SQLdiag的初始化阶段启用跟踪标记1222,这确保死锁信息被写入SQL Server错误日志。这个采集器不会收集目标SQL Server实例上的阻塞信息。阻塞信息需要通过SQL 2008 Perf Stats定制采集器抓取。
SQL Memory Error定制采集器收集目标SQL Server实例上内存使用的诊断信息,它有助于解决SQL内存不足问题。
SQL Agent定制采集器收集目标SQL Server实例上所有SQL Server代理日志和MSDB数据库的备份。这会引起输出文件夹变得非常大,显著增加SQLdiag关闭阶段所要花费的时间,这与MSDB数据库的大小直接成比例。如果MSDB数据库很大,从MSDB数据库的表中收集相关的数据,或许是一个好主意。
捕捉扩展事件(Capturing Extended Events)
XEvents Waits定制采集器使你能够在目标SQL Server实例上配置扩展事件(XEvents)数据采集。默认情况下,该采集器有3个XEvent对话用于捕捉目标实例上页Latch等待相关的信息。你可以通过右击XEvent Waits定制采集器并点击Details来查看配置细节,如图11-10所示:
SouthEast.jpg
例如,假设你需要捕捉所有PAGEIOLATCH等待信息。SQL Server数据库引擎经历I/O子系统相关的等待时会遇到PAGEIOLATCH_*等待。通常这些等待类型的高等待时间意味着存储子系统相关的延迟。图11-11显示了最终配置的样子。这需要额外的两个定制事件:
  • 执行T-SQL脚本的启动事件,用于创建和开启XEvent对话,来捕捉所有PAGEIOLATCH等待信息;
  • 执行T-SQL脚本的工具类型的采集器,在SQLdiag工具关闭时将XEvent会话捕捉的数据收集到一个XML文件中。
    SouthEast.jpg
SQL Server 2012 Management Studio提供了UI用于扩展事件。你可以使用UI来配置你的定制扩展事件对话。一旦对话配置了,就会出现在Sessions文件夹中,如图11-12所示。一旦你配置了需要的事件集,你就可以导出扩展事件会话的脚本,并使用所获得的的T-SQL脚本来建立你自己的XEvent采集。
SouthEast.jpg
添加你自己的定制采集器
如果前面讲的定制采集器不能满足你数据收集的需求,那么你可以使用_MyCollectors配置你自己的定制采集器。例如,你需要收集SQL Server默认数据文件夹的空间使用状况。下面的PowerShell脚本将会捕捉指定文件夹的磁盘空间使用情况:
  • $startFolder = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA'  
  • $colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)  
  • '$startFolder -- ' + '{0:N2}' -f ($colItems.sum / 1MB) + ' MB'  
  • $colItems = (Get-ChildItem $startFolder -recurse | Where-Object  
  • {$_.PSIsContainer -eq $True} | Sort-Object)  
  • foreach ($i in $colItems)  
  • {  
  • $subFolderItems = (Get-ChildItem $i.FullName |  
  • Measure-Object -property length -sum)  
  • $i.FullName + ' -- ' + '{0:N2}' -f ($subFolderItems.sum / 1MB) + ' MB'  
  • }  

假设上面的代码保存为space.ps1。那么你右击_MyCollectors,并添加一个Utility任务,如图11-13所示:
SouthEast.jpg
当数据收集完成后,一个命名为<Machine Name>__MyCollectors_Get_Disk_Space_Shutdown_DiskSpace.OUT的文件会出现在输出文件夹。如果你使用Diag Manager保存设置之后查看配置文件,你会发现XML节点,该节点有定制采集器配置,如下面的代码所示:
  • <CustomDiagnostics>  
  • <CustomGroup name='_MyCollectors' enabled='true' />  
  • <CustomTask enabled='true' groupname='_MyCollectors' taskname='Get Disk Space' type='Utility' point='Shutdown' wait='OnlyOnShutdown' cmd='powershell.exe -File  
  • ".\space.ps1" -NoLogo -NonInteractive > "PShell_DiskSpace.OUT" '  
  • pollinginterval='0' />  
  • </CustomDiagnostics>  

注意,保存包配置之前,你必须把定制脚本(space.ps1)放到C:\Program Files\Microsoft\Pssdiag\CustomDiagnostics\_MyCollectors文件夹下面。
保存和使用SQLdiag配置
当你点击Save按钮时,会出现图如11-14所示的对话框,你可以改变路径。
SouthEast.jpg
当你点击“OK”时,会出现如图11-15所示的对话框:
SouthEast.jpg
默认情况下,产生的文件位于C:\Program Files\Microsoft\Pssdiag\Customer下面,文件名为pssd.cab。该文件为你配置的数据采集器存储了所有必要的支持文件,你可以把它复制到目标机器上。当你提取cabinet文件,你会发现一个pssdiag.cmd文件,它使用PSSDIAG.XML文件并调用SQLdiag可执行文件来收集数据。在你开始数据收集之前,你需要修改PSSDIAG.XML文件,把ssver值抽过10.50改为11,如下面的例子所示。这会指示SQLdiag工具收集SQL Server 2012实例的诊断数据:
<Instance name='MSSQLSERVER' windowsauth='true' ssver=”11” user=''>
现在,你就准备好了使用SQLdiag通过执行pssdiag.cmd来收集诊断数据。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22285-1-1.html 上篇帖子: 使用SQLdiag合并数据采集----初识SQLdiag 下篇帖子: 使用SQLdiag合并数据采集----最佳实践 数据采集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表