PowerShell 讀取性能計數(shù)器二進制文件(.blg)記錄并匯總計算
發(fā)布日期:2022-01-24 08:02 | 文章來源:源碼之家
由于監(jiān)控及報告需要,要統(tǒng)計性能計數(shù)器每天數(shù)值情況,確認數(shù)據(jù)庫服務器的運行狀況。若打開計數(shù)器填寫,比較麻煩,現(xiàn)在統(tǒng)計用 powershell 來讀取計數(shù)器的值。
第一階段:Powershell 讀取計數(shù)器文件并統(tǒng)計其中一個計數(shù)器的值
$startDate = (Get-Date).AddDays(-1).Date
$endDate = (Get-Date).Date
$perfPath = "D:\DataFiles\PERFMON\MSSQL_PERFMON_08240904.blg"
#讀取文件中的計數(shù)器名稱
$counterList = Import-Counter -Path $perfPath
$countersNameList = $counterList[0].countersamples | % {$_.path}
#篩選指定計數(shù)器和時間重新導入PS
$counter = $countersNameList -like '*Processor Time*'
$counterData = Import-Counter -Path $perfPath -Counter $counter | Where-Object -FilterScript {($_.Timestamp -ge $startDate) -and ($_.Timestamp -lt $endDate)}
#計算日期范圍內(nèi)的數(shù)值統(tǒng)計
$counterInfo = $counterData | Foreach-Object {$_.CounterSamples} | Measure-Object -property CookedValue -Average -Maximum
#哈希表存儲結果數(shù)據(jù)
$resultTable=@{}
$resultTable."CPU 利用率——平均" = $counterInfo.Average
$resultTable."CPU 利用率——最大" = $counterInfo.Maximum
$resultTable

第二階段:批量統(tǒng)計文件中的所有計數(shù)器并導出到文件中
$startDate = (Get-Date).AddDays(-1).Date
$endDate = (Get-Date).Date
$perfPath = "D:\360Downloads\*.blg"
#哈希表存儲結果數(shù)據(jù)
$resultTable=@{}
#導入指定時間的所有計數(shù)器信息
$counterData = Import-Counter -Path $perfPath | Where-Object -FilterScript {($_.Timestamp -ge $startDate) -and ($_.Timestamp -lt $endDate)}
#所有的計數(shù)器名字
$countersNameList = $counterData[0].countersamples | % {$_.Path}
#遍歷每個計數(shù)器,將計算結果存儲到哈希表中
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

版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
相關文章
關注官方微信