mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-10-20 03:29:05 +02:00
hyperv: add virtual_hard_disk sub-collector (#2693)
Signed-off-by: EisenbergD <dominik.eisenberg@beiersdorf.com> Co-authored-by: EisenbergD <dominik.eisenberg@beiersdorf.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
EisenbergD
Claude Opus 5.5
parent
89c5df9d8b
commit
ec7dcdc259
@@ -47,6 +47,7 @@ const (
|
||||
subCollectorHypervisorVirtualProcessor = "hypervisor_virtual_processor"
|
||||
subCollectorLegacyNetworkAdapter = "legacy_network_adapter"
|
||||
subCollectorReplicaVM = "replica_vm"
|
||||
subCollectorVirtualHardDisk = "virtual_hard_disk"
|
||||
subCollectorVirtualMachineHealthSummary = "virtual_machine_health_summary"
|
||||
subCollectorVirtualMachineVidPartition = "virtual_machine_vid_partition"
|
||||
subCollectorVirtualNetworkAdapter = "virtual_network_adapter"
|
||||
@@ -58,7 +59,14 @@ const (
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
CollectorsEnabled []string `yaml:"enabled"`
|
||||
CollectorsEnabled []string `yaml:"enabled"`
|
||||
VirtualHardDisk VirtualHardDiskConfig `yaml:"virtual-hard-disk"`
|
||||
}
|
||||
|
||||
// VirtualHardDiskConfig configures the virtual_hard_disk sub-collector.
|
||||
type VirtualHardDiskConfig struct {
|
||||
// RefreshInterval is the interval at which the disks are read in the background.
|
||||
RefreshInterval time.Duration `yaml:"refresh-interval"`
|
||||
}
|
||||
|
||||
//nolint:gochecknoglobals
|
||||
@@ -74,6 +82,7 @@ var ConfigDefaults = Config{
|
||||
subCollectorHypervisorVirtualProcessor,
|
||||
subCollectorLegacyNetworkAdapter,
|
||||
subCollectorReplicaVM,
|
||||
subCollectorVirtualHardDisk,
|
||||
subCollectorVirtualMachineHealthSummary,
|
||||
subCollectorVirtualMachineVidPartition,
|
||||
subCollectorVirtualNetworkAdapter,
|
||||
@@ -83,6 +92,9 @@ var ConfigDefaults = Config{
|
||||
subCollectorVirtualSwitch,
|
||||
subCollectorWMIHealth,
|
||||
},
|
||||
VirtualHardDisk: VirtualHardDiskConfig{
|
||||
RefreshInterval: 5 * time.Minute,
|
||||
},
|
||||
}
|
||||
|
||||
// Collector is a Prometheus Collector for hyper-v.
|
||||
@@ -97,6 +109,7 @@ type Collector struct {
|
||||
collectorHypervisorVirtualProcessor
|
||||
collectorLegacyNetworkAdapter
|
||||
collectorReplicaVM
|
||||
collectorVirtualHardDisk
|
||||
collectorVirtualMachineHealthSummary
|
||||
collectorVirtualMachineVidPartition
|
||||
collectorVirtualNetworkAdapter
|
||||
@@ -129,6 +142,10 @@ func New(config *Config) *Collector {
|
||||
config.CollectorsEnabled = ConfigDefaults.CollectorsEnabled
|
||||
}
|
||||
|
||||
if config.VirtualHardDisk.RefreshInterval == 0 {
|
||||
config.VirtualHardDisk.RefreshInterval = ConfigDefaults.VirtualHardDisk.RefreshInterval
|
||||
}
|
||||
|
||||
c := &Collector{
|
||||
config: *config,
|
||||
}
|
||||
@@ -149,6 +166,11 @@ func NewWithFlags(app *kingpin.Application) *Collector {
|
||||
"Comma-separated list of collectors to use.",
|
||||
).Default(strings.Join(ConfigDefaults.CollectorsEnabled, ",")).StringVar(&collectorsEnabled)
|
||||
|
||||
app.Flag(
|
||||
"collector.hyperv.virtual-hard-disk.refresh-interval",
|
||||
"Interval at which the virtual_hard_disk sub-collector reads the disks in the background. Scrapes publish the values of the last refresh.",
|
||||
).Default(ConfigDefaults.VirtualHardDisk.RefreshInterval.String()).DurationVar(&c.config.VirtualHardDisk.RefreshInterval)
|
||||
|
||||
app.Action(func(*kingpin.ParseContext) error {
|
||||
c.config.CollectorsEnabled = strings.Split(collectorsEnabled, ",")
|
||||
|
||||
@@ -245,6 +267,11 @@ func (c *Collector) Build(logger *slog.Logger, miSession *mi.Session) error {
|
||||
// Close the collector created by build, not the nil one bound at this point.
|
||||
close: func() { c.perfDataCollectorReplicaVM.Close() },
|
||||
},
|
||||
subCollectorVirtualHardDisk: {
|
||||
build: c.buildVirtualHardDisk,
|
||||
collect: c.collectVirtualHardDisk,
|
||||
close: c.closeVirtualHardDisk,
|
||||
},
|
||||
subCollectorVirtualMachineHealthSummary: {
|
||||
build: c.buildVirtualMachineHealthSummary,
|
||||
collect: c.collectVirtualMachineHealthSummary,
|
||||
|
||||
Reference in New Issue
Block a user