Pessoal!
Este é o décimo terceiro vídeo da série de Powershell para DBAs SQL Server onde falo como coletar dados dos contadores do Performance Monitor do Windows.
É importante lembrar que com o Powershell podemos coletar os dados do perfmom de diversos servidores ao mesmo tempo e colocando um loop e utilizando a criatividade até mesmo gerar bons gráficos em tempo real da coleta.
Veja o vídeo, deixe seus comentários, curta e compartilhe.
Link do canal: SQLCrespi no Youtube
Abaixo segue os scripts utilizados nas demos.
Enter-PSSession win2016 -Credential administrator@sqlcrespi.local Import-Module sqlps -DisableNameChecking #traz dados em tempo real dos contadores. #sem parametros traz dados do conjunto de contadores de sistema Get-Counter #pega a lista de contadores do computador Get-Counter -ListSet * | Sort-Object CounterSetName | Format-Table CounterSetName #retorna 3 samples no intervalo de 2 segundos Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3 #coleta de dois servidores Exit-PSSession $DiskReads = "\LogicalDisk(C:)\Disk Reads/sec" $DiskReads | Get-Counter -Computer win2016, winad -MaxSamples 2 #estas informacoes estão em https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.diagnostics/get-counter #outros exemplos Enter-PSSession win2016 -Credential administrator@sqlcrespi.local #lista os contadores com o nome de Processor Information ;) (Get-Counter -ListSet 'processor information').paths | get-counter #retorna a memória disponível Get-Counter -Counter "\Memory\Available MBytes" #contadores do SQL Server Get-Counter -ListSet *sql* | Select-Object -ExpandProperty Counter Get-Counter -Counter "\SQLServer:Wait Statistics(*)\Lock waits", "\SQLServer:Plan Cache(*)\Cache Hit Ratio" #continuous este parametro faz com que o command let execute a cada 1 seg (por padrao) e só para quando for pressionado crtl + c Get-Counter -Counter "\SQLServer:Databases(_Total)\Log Bytes Flushed/sec" -SampleInterval 1 -Continuous Get-Counter -Counter "\SQLServer:Databases(_Total)\Log Bytes Flushed/sec" -SampleInterval 1 -MaxSamples 10 Exit-PSSession $contadores = @("\SQLServer:Wait Statistics(*)\Lock waits", "\Processor(_Total)\% Processor Time", "\LogicalDisk(_Total)\Disk Reads/sec", "\LogicalDisk(_Total)\Disk Writes/sec") Get-Counter -Counter $contadores -ComputerName win2016, winad -SampleInterval 1 -MaxSamples 10 |Export-Counter -FileFormat blg -Path "c:\perf\contadores_sql.blg" -Force #neste caso nao coloquei contadores do sql server pq o winad nao tem, se tivesse colocado daria ERRO
Abraço, Rodrigo