mirror of
https://github.com/prometheus-community/windows_exporter
synced 2025-02-17 20:47:31 +00:00
Add Avg logical disk RW Queue metrics
Signed-off-by: Tehseen Shahab <tehseen.shahab@gmail.com>
This commit is contained in:
parent
015b7c0666
commit
66a1e18c32
@ -30,6 +30,8 @@ var (
|
|||||||
// A LogicalDiskCollector is a Prometheus collector for perflib logicalDisk metrics
|
// A LogicalDiskCollector is a Prometheus collector for perflib logicalDisk metrics
|
||||||
type LogicalDiskCollector struct {
|
type LogicalDiskCollector struct {
|
||||||
RequestsQueued *prometheus.Desc
|
RequestsQueued *prometheus.Desc
|
||||||
|
AvgReadQueue *prometheus.Desc
|
||||||
|
AvgWriteQueue *prometheus.Desc
|
||||||
ReadBytesTotal *prometheus.Desc
|
ReadBytesTotal *prometheus.Desc
|
||||||
ReadsTotal *prometheus.Desc
|
ReadsTotal *prometheus.Desc
|
||||||
WriteBytesTotal *prometheus.Desc
|
WriteBytesTotal *prometheus.Desc
|
||||||
@ -60,6 +62,20 @@ func NewLogicalDiskCollector() (Collector, error) {
|
|||||||
nil,
|
nil,
|
||||||
),
|
),
|
||||||
|
|
||||||
|
AvgReadQueue: prometheus.NewDesc(
|
||||||
|
prometheus.BuildFQName(Namespace, subsystem, "avg_read_requests_queued"),
|
||||||
|
"Average number of read requests that were queued for the selected disk during the sample interval (LogicalDisk.AvgDiskReadQueueLength)",
|
||||||
|
[]string{"volume"},
|
||||||
|
nil,
|
||||||
|
),
|
||||||
|
|
||||||
|
AvgWriteQueue: prometheus.NewDesc(
|
||||||
|
prometheus.BuildFQName(Namespace, subsystem, "avg_write_requests_queued"),
|
||||||
|
"Average number of write requests that were queued for the selected disk during the sample interval (LogicalDisk.AvgDiskWriteQueueLength)",
|
||||||
|
[]string{"volume"},
|
||||||
|
nil,
|
||||||
|
),
|
||||||
|
|
||||||
ReadBytesTotal: prometheus.NewDesc(
|
ReadBytesTotal: prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(Namespace, subsystem, "read_bytes_total"),
|
prometheus.BuildFQName(Namespace, subsystem, "read_bytes_total"),
|
||||||
"The number of bytes transferred from the disk during read operations (LogicalDisk.DiskReadBytesPerSec)",
|
"The number of bytes transferred from the disk during read operations (LogicalDisk.DiskReadBytesPerSec)",
|
||||||
@ -170,21 +186,23 @@ func (c *LogicalDiskCollector) Collect(ctx *ScrapeContext, ch chan<- prometheus.
|
|||||||
// - https://msdn.microsoft.com/en-us/windows/hardware/aa394307(v=vs.71) - Win32_PerfRawData_PerfDisk_LogicalDisk class
|
// - https://msdn.microsoft.com/en-us/windows/hardware/aa394307(v=vs.71) - Win32_PerfRawData_PerfDisk_LogicalDisk class
|
||||||
// - https://msdn.microsoft.com/en-us/library/ms803973.aspx - LogicalDisk object reference
|
// - https://msdn.microsoft.com/en-us/library/ms803973.aspx - LogicalDisk object reference
|
||||||
type logicalDisk struct {
|
type logicalDisk struct {
|
||||||
Name string
|
Name string
|
||||||
CurrentDiskQueueLength float64 `perflib:"Current Disk Queue Length"`
|
CurrentDiskQueueLength float64 `perflib:"Current Disk Queue Length"`
|
||||||
DiskReadBytesPerSec float64 `perflib:"Disk Read Bytes/sec"`
|
AvgDiskReadQueueLength float64 `perflib:"Avg. Disk Read Queue Length"`
|
||||||
DiskReadsPerSec float64 `perflib:"Disk Reads/sec"`
|
AvgDiskWriteQueueLength float64 `perflib:"Avg. Disk Write Queue Length"`
|
||||||
DiskWriteBytesPerSec float64 `perflib:"Disk Write Bytes/sec"`
|
DiskReadBytesPerSec float64 `perflib:"Disk Read Bytes/sec"`
|
||||||
DiskWritesPerSec float64 `perflib:"Disk Writes/sec"`
|
DiskReadsPerSec float64 `perflib:"Disk Reads/sec"`
|
||||||
PercentDiskReadTime float64 `perflib:"% Disk Read Time"`
|
DiskWriteBytesPerSec float64 `perflib:"Disk Write Bytes/sec"`
|
||||||
PercentDiskWriteTime float64 `perflib:"% Disk Write Time"`
|
DiskWritesPerSec float64 `perflib:"Disk Writes/sec"`
|
||||||
PercentFreeSpace float64 `perflib:"% Free Space_Base"`
|
PercentDiskReadTime float64 `perflib:"% Disk Read Time"`
|
||||||
PercentFreeSpace_Base float64 `perflib:"Free Megabytes"`
|
PercentDiskWriteTime float64 `perflib:"% Disk Write Time"`
|
||||||
PercentIdleTime float64 `perflib:"% Idle Time"`
|
PercentFreeSpace float64 `perflib:"% Free Space_Base"`
|
||||||
SplitIOPerSec float64 `perflib:"Split IO/Sec"`
|
PercentFreeSpace_Base float64 `perflib:"Free Megabytes"`
|
||||||
AvgDiskSecPerRead float64 `perflib:"Avg. Disk sec/Read"`
|
PercentIdleTime float64 `perflib:"% Idle Time"`
|
||||||
AvgDiskSecPerWrite float64 `perflib:"Avg. Disk sec/Write"`
|
SplitIOPerSec float64 `perflib:"Split IO/Sec"`
|
||||||
AvgDiskSecPerTransfer float64 `perflib:"Avg. Disk sec/Transfer"`
|
AvgDiskSecPerRead float64 `perflib:"Avg. Disk sec/Read"`
|
||||||
|
AvgDiskSecPerWrite float64 `perflib:"Avg. Disk sec/Write"`
|
||||||
|
AvgDiskSecPerTransfer float64 `perflib:"Avg. Disk sec/Transfer"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *LogicalDiskCollector) collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
func (c *LogicalDiskCollector) collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) (*prometheus.Desc, error) {
|
||||||
@ -207,6 +225,20 @@ func (c *LogicalDiskCollector) collect(ctx *ScrapeContext, ch chan<- prometheus.
|
|||||||
volume.Name,
|
volume.Name,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
c.AvgReadQueue,
|
||||||
|
prometheus.CounterValue,
|
||||||
|
volume.AvgDiskReadQueueLength*ticksToSecondsScaleFactor,
|
||||||
|
volume.Name,
|
||||||
|
)
|
||||||
|
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
c.AvgWriteQueue,
|
||||||
|
prometheus.CounterValue,
|
||||||
|
volume.AvgDiskWriteQueueLength*ticksToSecondsScaleFactor,
|
||||||
|
volume.Name,
|
||||||
|
)
|
||||||
|
|
||||||
ch <- prometheus.MustNewConstMetric(
|
ch <- prometheus.MustNewConstMetric(
|
||||||
c.ReadBytesTotal,
|
c.ReadBytesTotal,
|
||||||
prometheus.CounterValue,
|
prometheus.CounterValue,
|
||||||
|
@ -24,6 +24,8 @@ If given, a disk needs to *not* match the blacklist regexp in order for the corr
|
|||||||
Name | Description | Type | Labels
|
Name | Description | Type | Labels
|
||||||
-----|-------------|------|-------
|
-----|-------------|------|-------
|
||||||
`requests_queued` | Number of requests outstanding on the disk at the time the performance data is collected | gauge | `volume`
|
`requests_queued` | Number of requests outstanding on the disk at the time the performance data is collected | gauge | `volume`
|
||||||
|
`avg_read_requests_queued` | Average number of read requests that were queued for the selected disk during the sample interval | counter | `volume`
|
||||||
|
`avg_write_requests_queued` | Average number of write requests that were queued for the selected disk during the sample interval | counter | `volume`
|
||||||
`read_bytes_total` | Rate at which bytes are transferred from the disk during read operations | counter | `volume`
|
`read_bytes_total` | Rate at which bytes are transferred from the disk during read operations | counter | `volume`
|
||||||
`reads_total` | Rate of read operations on the disk | counter | `volume`
|
`reads_total` | Rate of read operations on the disk | counter | `volume`
|
||||||
`write_bytes_total` | Rate at which bytes are transferred to the disk during write operations | counter | `volume`
|
`write_bytes_total` | Rate at which bytes are transferred to the disk during write operations | counter | `volume`
|
||||||
|
Loading…
Reference in New Issue
Block a user