This receiver, for Windows only, captures the configured system, application, or custom performance counter data from the Windows registry using the PDH interface. It is based on the Telegraf Windows Performance Counters Input Plugin.
Metrics will be generated with names and labels that match the performance counter path, i.e.
Memory\Committed Bytes
Processor\% Processor Time
, with a datapoint for eachInstance
label = (_Total
,1
,2
,3
, ... )
If one of the specified performance counters cannot be loaded on startup, a warning will be printed, but the application will not fail fast. It is expected that some performance counters may not exist on some systems due to different OS configuration.
The collection interval and the list of performance counters to be scraped can be configured:
windowsperfcounters:
collection_interval: <duration> # default = "1m"
counters:
- object: <object name>
instances: [<instance name>]*
counters:
- <counter name>
*Note instances
can have several special values depending on the type of
counter:
Value | Interpretation |
---|---|
Not specified | This is the only valid value if the counter has no instances |
"*" |
All instances |
"_Total" |
The "total" instance |
"instance1" |
A single instance |
["instance1", "instance2", ...] |
A set of instances |
["_Total", "instance1", "instance2", ...] |
A set of instances including the "total" instance |
If you would like to scrape some counters at a different frequency than others,
you can configure multiple windowsperfcounters
receivers with different
collection_interval
values. For example:
receivers:
windowsperfcounters/memory:
collection_interval: 30s
counters:
- object: Memory
counters:
- Committed Bytes
windowsperfcounters/processor:
collection_interval: 1m
counters:
- object: "Processor"
instances: "*"
counters:
- "% Processor Time"
- object: "Processor"
instances: [1, 2]
counters:
- "% Idle Time"
service:
pipelines:
metrics:
receivers: [windowsperfcounters/memory, windowsperfcounters/processor]
To report metrics in the desired output format, it's recommended you use this receiver with the metrics transform processor.
e.g. To output the Memory/Committed Bytes
counter as a metric with the name
system.memory.usage
:
receivers:
windowsperfcounters:
collection_interval: 30s
counters:
- object: Memory
counters:
- Committed Bytes
processors:
metricstransformprocessor:
transforms:
- metric_name: "Memory/Committed Bytes"
action: update
new_name: system.memory.usage
service:
pipelines:
metrics:
receivers: [windowsperfcounters]
processors: [metricstransformprocessor]
TODO
TODO