-
Notifications
You must be signed in to change notification settings - Fork 27
System Metrics
PerfCounterMonitor.exe (Graphite.System)
Besides profiling and instrumenting your code manually you can report various system parameters to StatsD and Graphite, too. This can be accomplished with the Graphite.System
block, respectively PerfCounterMonitor.exe
.
Graphite.System
enables reporting values from the following sources:
- Performance counters
- Event log
- IIS Application Pools
All settings for Graphite.System
can be changed and configured in the PerfCounterMonitor.exe.config
file.
PerfCounterMonitor.exe
can be run as a standalone console application or installed as a Windows service.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe PerfCounterMonitor.exe
net start GraphiteSystemMonitoring
For some Performance Counters it might be required to run
PerfCounterMonitor.exe
with administrator rights.
Performance counters are classified by the following three properties: category, counter and instance.
To explore all available performance counters in your system you can call PerfCounterMonitor.exe
with the -e
parameter.
Additional to the -e
paramater a category and instance name can be specified to show more details:
PerfCounterMonitor.exe -e [category [instance]]
Show all performance counters for category "Processor" and instance "_Total":
Command:
PerfCounterMonitor.exe -e Processor "_Total"
Result:
Category: Processor
Instance: _Total
Counters:
% Processor Time (Timer100NsInverse)
% User Time (Timer100Ns)
% Privileged Time (Timer100Ns)
Interrupts/sec (RateOfCountsPerSecond32)
% DPC Time (Timer100Ns)
% Interrupt Time (Timer100Ns)
DPCs Queued/sec (RateOfCountsPerSecond32)
DPC Rate (NumberOfItems32)
% Idle Time (Timer100Ns)
% C1 Time (Timer100Ns)
% C2 Time (Timer100Ns)
% C3 Time (Timer100Ns)
C1 Transitions/sec (RateOfCountsPerSecond64)
C2 Transitions/sec (RateOfCountsPerSecond64)
C3 Transitions/sec (RateOfCountsPerSecond64)
PerfCounterMonitor.exe
can be configured to periodically report values of any Performance Counter through the PerfCounterMonitor.exe.config
file:
<graphite.system>
<counters>
<clear />
<add
key="processor.time"
category="Processor" instance="_Total" counter="% Processor Time"
type="gauge" target="statsd" interval="30" />
<add
key="processor.dpc"
category="Processor" instance="_Total" counter="DPC Rate"
type="gauge" target="statsd" interval="5" />
</counters>
</graphite.system>
Required
-
key
- the metric key. -
category
- the performance counter category name. -
instance
- the performance counter instance name. For counters without an instance this attribute must be set to "" (e.g.Memory\Available MBytes
). -
counter
- the performance counter name. -
type
- the metric type (counter
,timing
orgauge
). -
target
- the monitoring target (statsd
orgraphite
).
Optional
-
interval
- the interval in seconds this metric should be read/reported (defaults to 30 seconds). -
sampling
- for StatsD counter types to sample values before submission (reduces number of submitted packets, see http://github.com/etsy/statsd for more details)
With PerfCounterMonitor.exe
it is possible to listen for new entries in the event log.
For each new entry matching the configured properties, a metric with specified value is reported.
<eventlog>
<clear />
<add
key="admin.errors"
protocol="Application" entrytypes="Error"
type="gauge" target="graphite" />
<add
key="admin.dotnet.exceptions"
protocol="Application" source=".NET Runtime" entrytypes="Error"
type="gauge" target="graphite" />
<add
key="admin.dotnet.warnings"
protocol="Application" source=".NET Runtime" entrytypes="Warning"
type="gauge" target="graphite" />
</eventlog>
Required
-
key
- the metric key. -
protocol
- the event log protocol (e.g. "Application", "System", "Security", etc.). -
source
- the log source value. -
entrytypes
- type of event log entries to listen for (Error
,Warning
,Information
,SuccessAudit
andFailureAudit
). Multiple types can be seperated by ";
" or ",
". -
type
- the metric type (counter
,timing
orgauge
). -
target
- the monitoring target (statsd
orgraphite
).
Optional
-
category
- the category of the messages. -
value
- the reported value (defaults to1
). -
sampling
- for StatsD counter types to sample values before submission (reduces number of submitted packets, see http://github.com/etsy/statsd for more details).
The "working set" (i.e. used memory) of IIS Application Pools can be reported by PerfCounterMonitor.exe
.
The application pool names must be specified in PerfCounterMonitor.exe.config
:
<appPool>
<add key="admin.appPool.default" appPoolName="DefaultApplicationPool" workingSet="true"
type="gauge" target="statsd" />
<add key="admin.appPool.asp4" appPoolName="ASP.NET v4.0" workingSet="true"
type="gauge" target="statsd" />
</appPool>
Optional
-
key
- the metric key. -
appPoolName
- the application pool name. -
workingSet
- must betrue
. -
type
- the metric type (counter
,timing
orgauge
). -
target
- the monitoring target (statsd
orgraphite
).
Optional
-
interval
- the interval in seconds this metric should be read/reported (defaults to30
seconds).