Performance Monitor.
Now, Performance Monitor, like Event Viewer, has been
around since the Windows NT days, many, many years indeed.
Performance Monitor is the native Windows system monitoring tool.
I'm going to say it's a native tool, because it's not the only option.
The two main ways to use Performance Monitor are to gather
real‑time statistics, and that's directly analogous to the
Azure Monitor metrics explorer in Azure.
And then we have the data collector set, or DCS,
which is where you're aggregating metric and log values over time.
You can gather performance counters, that's primarily metric data,
time‑sampled numeric readings.
Event traces are, again, notifications of state changes. And you can also
include system configuration, so you could look at, for example,
registry keys and values and note when they change. Best practice with
Performance Monitor is the application is a Win32 app and it does have its
own overhead, so it's best to capture remotely.
You don't want to start a data collector set on the machine that you're
monitoring, because you don't want to artificially inflate or affect those
numbers with the overhead of perfmon itself.
Terms of the Performance Monitor terminology, this might show
up on your exam, so I want to go over it.
The rudimentary diagram you see here is of a four‑core central processing
unit, or a processor, and if we wanted to look at processor utilization on
that CPU, we would dial up the Object, that's the top level of the object
model, in this case it would be Processor.
The Counter is the specific measurement metric, % Processor Time in
this example. And then the most granular level of the Performance
Monitor object model is the Instance. _Total is going to take an
average of all four cores in this example,
but if you wanted to gather readings on just a single core,
you absolutely can index it out and do that.
That will go a long way I think in your troubleshooting, just having a
good grasp of this much of the perfmon terminology. No surprise,
Windows PowerShell has native support for working with Performance
Monitor programmatically. In this example, we're using the Get‑Counter
cmdlet to grab % Processor Time, we're doing a sample interval of every 2 seconds.