由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况。若打开计数器填写,比较麻烦,现在统计用 powershell 来读取计数器的值。
第一阶段:powershell 读取计数器文件并统计其中一个计数器的值
$startdate = (get-date).adddays(-1).date $enddate = (get-date).date $perfpath = "d:\datafiles\perfmon\mssql_perfmon_08240904.blg" #读取文件中的计数器名称 $counterlist = import-counter -path $perfpath $countersnamelist = $counterlist[0].countersamples | % {$_.path} #筛选指定计数器和时间重新导入ps $counter = $countersnamelist -like '*processor time*' $counterdata = import-counter -path $perfpath -counter $counter | where-object -filterscript {($_.timestamp -ge $startdate) -and ($_.timestamp -lt $enddate)} #计算日期范围内的数值统计 $counterinfo = $counterdata | foreach-object {$_.countersamples} | measure-object -property cookedvalue -average -maximum #哈希表存储结果数据 $resulttable=@{} $resulttable."cpu 利用率——平均" = $counterinfo.average $resulttable."cpu 利用率——最大" = $counterinfo.maximum $resulttable
第二阶段:批量统计文件中的所有计数器并导出到文件中
$startdate = (get-date).adddays(-1).date $enddate = (get-date).date $perfpath = "d:\360downloads\*.blg" #哈希表存储结果数据 $resulttable=@{} #导入指定时间的所有计数器信息 $counterdata = import-counter -path $perfpath | where-object -filterscript {($_.timestamp -ge $startdate) -and ($_.timestamp -lt $enddate)} #所有的计数器名字 $countersnamelist = $counterdata[0].countersamples | % {$_.path} #遍历每个计数器,将计算结果存储到哈希表中 foreach($countername in $countersnamelist) { #$countername = "\\hzc\system\threads" $counterdataone = $counterdata | foreach-object {$_.countersamples} | where {$_.path -like $countername} $counterinfo = $counterdataone | measure-object cookedvalue -average -minimum -maximum $resulttable.$($countername+" :平均值") = $counterinfo.average $resulttable.$($countername+" :最小值") = $counterinfo.minimum $resulttable.$($countername+" :最大值") = $counterinfo.maximum } #$resulttable.getenumerator() | sort name | format-table -auto #几种方法导出到文件 $resulttable.getenumerator() | sort name | format-table -auto | out-file "d:\360downloads\perfmoncounter.txt" $resulttable.getenumerator() | sort name | export-csv -path "d:\360downloads\perfmoncounter.txt" -encoding "unicode" -force $resulttable.getenumerator() | sort name | format-list | export-csv -path "d:\360downloads\perfmoncounter.xlsx" -encoding "unicode" -force
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论