- Adam Bertram
@adbertram
- 6 April 2020, 11:18 EDT
ett av de mer förbisedda verktygen i Windows är Perfmon, annars känd som performance monitor. Detta verktyg har många förbisedda förmågor, en av dem är förmågan att varna på olika metriska förhållanden. I den här artikeln utforskar vi hur man korrekt använder perfmons varningsförmåga med hög CPU-användning.
Vad är Perfmon?
tillgänglig sedan de tidiga dagarna av Windows i olika iterationer, är Performance Monitor tillgänglig som en MMC snap-in till Windows avsedd att hjälpa till att övervaka systemanvändning och olika prestandamått. Standardvyn vid lansering belyser några olika områden och realtidsmått.
- Prestandamonitor-realtidsvisning av mätvärden
- Datainsamlaruppsättningar-definierad insamling av data över ett givet tidsintervall
- rapporter-Hur man visar data som samlats in i Datainsamlaruppsättningarna
om Performance Monitor inte startas som administratör kommer dess verktyg att vara begränsat och du kanske inte ser Datainsamlaruppsättningarna eller rapporterna.
visa mätvärden
när du först klickar på Performance Monitor visas en rörlig linjediagram som är standard %Processor Time
. Detta är i sig inte särskilt användbart eftersom data är ett rullande värde och vi vill verkligen veta om det finns negativa förhållanden.
du kan lägga till ytterligare mätvärden i den här grafen genom att klicka på det gröna pluset och lägga till fler mätvärden. Tänk på att värdeskalan kanske inte matchar mellan olika datapunkter och därför kan vara mindre användbar när den kombineras i en enda graf.
Datainsamlaruppsättningar
realtidsdata är användbara, men inte vad vi i slutändan letar efter. Hur varnar vi då på vissa villkor, i det här fallet, hög CPU-användning som upprätthålls över tiden?
det är här Datainsamlaruppsättningar kommer in. När du har expanderat Datainsamlaruppsättningar högerklickar du på användardefinierad nya Datauppsamlaruppsättning.
du får möjlighet att namnge uppsättningen och om du vill skapa uppsättningen från en mall eller skapa uppsättningen manuellt. I det här fallet måste vi manuellt skapa vår konfiguration.
i det här fallet ställer vi in en prestandaräknare. Detta kommer att övervaka en viss räknare och då kan vi berätta för varningen att vidta vissa åtgärder.
eftersom vi vill övervaka den totala CPU-procentsatsen är det viktigast att välja rätt mått att övervaka. Här väljer vi Processoruspi _total genom att klicka på ”Lägg till >>” bredvid den valda instansen.
ett problem är att du får alla Processor _total mätvärden. I slutändan vill vi bara ha \Processor(_Total)\% Processor Time
metriska. För att ta bort de andra, Välj var och en och klicka på knappen Ta bort.
tyvärr, hur borttagningen fungerar, kan du inte bara klicka på knappen Ta bort flera gånger eftersom den flyttar det valda objektet tillbaka till toppen varje gång. Välj varje mått individuellt och klicka på Ta bort.
vi måste nu berätta för prestationsräknaren vid vilken tidpunkt varningen ska börja och i det här fallet vill vi bara ha den varning när ovan 95
.
slutligen spara och stäng Datainsamlaruppsättningen.
konfigurera varningar
med vår standardkonfiguration ur vägen måste vi nu konfigurera vilken Varningsåtgärd som ska äga rum. Det finns två sätt att ställa in varningar, Varningsåtgärd och Varningsuppgift. Välj din användardefinierade Datasamlaruppsättning för hög CPU-användning, högerklicka på standardinmatningen DataCollector01
och välj Egenskaper.
det enklaste sättet att börja övervaka poster är att navigera till fliken Varningsåtgärd och klicka på kryssrutan för ”Logga in en post i programhändelseloggen”. Du har också det praktiska alternativet att starta en annan datainsamlaruppsättning när kriterierna för en varning är uppfyllda. På så sätt kan du samla in ytterligare loggning efter behov. Men här kommer vi bara att logga in en post.
konfigurera en Varningsuppgift
det här är allt bra och bra, men i slutändan får vi inte en verklig varning i det här fallet, bara en ny händelseloggpost. På fliken Varningsuppgift kan vi berätta för den här datainsamlaren att starta en schemalagd uppgift och skicka några parametrar, som sedan kan utföra vilka varningsåtgärder vi vill ha. För att detta ska fungera måste vi göra två saker. Skapa skriptet som ska köras och den schemalagda uppgiften själv.
Loggningsskript
nedan är ett mycket enkelt loggningsskript. Vi läser i varningsmått matas ut av Varningsuppgiften och skicka dessa resultat till en loggfil.
HighCPUAlert.ps1
$Date = $args $Threshold = $args $Counter = $args $Value = " {1} {2} | {3}" -F $Date, 'High CPU', $Threshold, $Counter Add-Content -Value $Value -Path 'C:\HighCPUAlert.log'
schemalagd aktivitet
här måste vi skapa den schemalagda aktiviteten som faktiskt kommer att köra skriptet vid anrop av datainsamlaren. Vi använder PowerShell för att skapa den schemalagda uppgiften och använder PowerShell 7 som körtid, som betecknas med körbar pwsh.exe
.
$Params = @{ "Action" = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoProfile -File C:\HighCPUAlert.ps1 $(Arg0)" "Principal" = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount "Settings" = New-ScheduledTaskSettingsSet } New-ScheduledTask @Params | Register-ScheduledTask 'HighCPUAlert'
tills PowerShell 7 formellt släpps kan den körbara filen vara pwsh-preview.exe
.
konfigurera Varningsuppgift
Slutligen måste vi konfigurera Varningsuppgiften på datainsamlaren. För att göra detta navigera till egenskaperna igen för DataCollector01
och ange i följande detaljer.
vi citerar uppgiftsargumenten eftersom de kommer in som strängar till PowerShell. Därför, genom att citera dem, gör vi det enkelt att skilja argumenten från index, dvs
$arg
eller$arg
.
när du klickar på Spara kan du bli ombedd att ange en referens, detta bör vara en användare med administratörsbehörighet.
kör datainsamlaren
genom att högerklicka på Datainsamlaruppsättningen, hög CPU-användning och välja Start, börjar du insamlingsprocessen. Om du övervakar de schemalagda aktiviteterna visas den nyskapade schemalagda aktiviteten med jämna mellanrum beroende på övervakningsintervall och tröskelvärde.
slutsats
genom att använda de inbyggda övervakningsverktygen i Windows kan du strukturera några användbara och kraftfulla övervakningslösningar kring kärnverktyg och PowerShell. Med denna flexibilitet kommer du att kunna komma till botten med nästan alla problem som kan diagnostiseras via metrisk datainsamling!
Adam Bertram är en 20+ år veteran av IT och en erfaren online-verksamhet professionell. Han är konsult, Microsoft MVP, bloggare, tränare, publicerad författare och innehållsmarknadsförare för flera teknikföretag. Fånga upp Adams artiklar på adamtheautomator.com, anslut på LinkedIn eller följ honom på Twitter på @adbertram.Läs Hela Bio ”