mi: replace all WMI calls with MI calls (#1714)

This commit is contained in:
Jan-Otto Kröpke
2024-11-03 17:23:26 +01:00
committed by GitHub
parent 45d3eabab9
commit bf233ad3e3
82 changed files with 2771 additions and 738 deletions

View File

@@ -1,7 +1,11 @@
package mscluster
import (
"fmt"
"github.com/prometheus-community/windows_exporter/internal/mi"
"github.com/prometheus-community/windows_exporter/internal/types"
"github.com/prometheus-community/windows_exporter/internal/utils"
"github.com/prometheus/client_golang/prometheus"
)
@@ -10,85 +14,85 @@ const nameCluster = Name + "_cluster"
// msClusterCluster represents the MSCluster_Cluster WMI class
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/cluswmi/mscluster-cluster
type msClusterCluster struct {
Name string
Name string `mi:"Name"`
AddEvictDelay uint
AdminAccessPoint uint
AutoAssignNodeSite uint
AutoBalancerLevel uint
AutoBalancerMode uint
BackupInProgress uint
BlockCacheSize uint
ClusSvcHangTimeout uint
ClusSvcRegroupOpeningTimeout uint
ClusSvcRegroupPruningTimeout uint
ClusSvcRegroupStageTimeout uint
ClusSvcRegroupTickInMilliseconds uint
ClusterEnforcedAntiAffinity uint
ClusterFunctionalLevel uint
ClusterGroupWaitDelay uint
ClusterLogLevel uint
ClusterLogSize uint
ClusterUpgradeVersion uint
CrossSiteDelay uint
CrossSiteThreshold uint
CrossSubnetDelay uint
CrossSubnetThreshold uint
CsvBalancer uint
DatabaseReadWriteMode uint
DefaultNetworkRole uint
DetectedCloudPlatform uint
DetectManagedEvents uint
DetectManagedEventsThreshold uint
DisableGroupPreferredOwnerRandomization uint
DrainOnShutdown uint
DynamicQuorumEnabled uint
EnableSharedVolumes uint
FixQuorum uint
GracePeriodEnabled uint
GracePeriodTimeout uint
GroupDependencyTimeout uint
HangRecoveryAction uint
IgnorePersistentStateOnStartup uint
LogResourceControls uint
LowerQuorumPriorityNodeId uint
MaxNumberOfNodes uint
MessageBufferLength uint
MinimumNeverPreemptPriority uint
MinimumPreemptorPriority uint
NetftIPSecEnabled uint
PlacementOptions uint
PlumbAllCrossSubnetRoutes uint
PreventQuorum uint
QuarantineDuration uint
QuarantineThreshold uint
QuorumArbitrationTimeMax uint
QuorumArbitrationTimeMin uint
QuorumLogFileSize uint
QuorumTypeValue uint
RequestReplyTimeout uint
ResiliencyDefaultPeriod uint
ResiliencyLevel uint
ResourceDllDeadlockPeriod uint
RootMemoryReserved uint
RouteHistoryLength uint
S2DBusTypes uint
S2DCacheDesiredState uint
S2DCacheFlashReservePercent uint
S2DCachePageSizeKBytes uint
S2DEnabled uint
S2DIOLatencyThreshold uint
S2DOptimizations uint
SameSubnetDelay uint
SameSubnetThreshold uint
SecurityLevel uint
SecurityLevelForStorage uint
SharedVolumeVssWriterOperationTimeout uint
ShutdownTimeoutInMinutes uint
UseClientAccessNetworksForSharedVolumes uint
WitnessDatabaseWriteTimeout uint
WitnessDynamicWeight uint
WitnessRestartInterval uint
AddEvictDelay uint `mi:"AddEvictDelay"`
AdminAccessPoint uint `mi:"AdminAccessPoint"`
AutoAssignNodeSite uint `mi:"AutoAssignNodeSite"`
AutoBalancerLevel uint `mi:"AutoBalancerLevel"`
AutoBalancerMode uint `mi:"AutoBalancerMode"`
BackupInProgress uint `mi:"BackupInProgress"`
BlockCacheSize uint `mi:"BlockCacheSize"`
ClusSvcHangTimeout uint `mi:"ClusSvcHangTimeout"`
ClusSvcRegroupOpeningTimeout uint `mi:"ClusSvcRegroupOpeningTimeout"`
ClusSvcRegroupPruningTimeout uint `mi:"ClusSvcRegroupPruningTimeout"`
ClusSvcRegroupStageTimeout uint `mi:"ClusSvcRegroupStageTimeout"`
ClusSvcRegroupTickInMilliseconds uint `mi:"ClusSvcRegroupTickInMilliseconds"`
ClusterEnforcedAntiAffinity uint `mi:"ClusterEnforcedAntiAffinity"`
ClusterFunctionalLevel uint `mi:"ClusterFunctionalLevel"`
ClusterGroupWaitDelay uint `mi:"ClusterGroupWaitDelay"`
ClusterLogLevel uint `mi:"ClusterLogLevel"`
ClusterLogSize uint `mi:"ClusterLogSize"`
ClusterUpgradeVersion uint `mi:"ClusterUpgradeVersion"`
CrossSiteDelay uint `mi:"CrossSiteDelay"`
CrossSiteThreshold uint `mi:"CrossSiteThreshold"`
CrossSubnetDelay uint `mi:"CrossSubnetDelay"`
CrossSubnetThreshold uint `mi:"CrossSubnetThreshold"`
CsvBalancer uint `mi:"CsvBalancer"`
DatabaseReadWriteMode uint `mi:"DatabaseReadWriteMode"`
DefaultNetworkRole uint `mi:"DefaultNetworkRole"`
DetectedCloudPlatform uint `mi:"DetectedCloudPlatform"`
DetectManagedEvents uint `mi:"DetectManagedEvents"`
DetectManagedEventsThreshold uint `mi:"DetectManagedEventsThreshold"`
DisableGroupPreferredOwnerRandomization uint `mi:"DisableGroupPreferredOwnerRandomization"`
DrainOnShutdown uint `mi:"DrainOnShutdown"`
DynamicQuorumEnabled uint `mi:"DynamicQuorumEnabled"`
EnableSharedVolumes uint `mi:"EnableSharedVolumes"`
FixQuorum uint `mi:"FixQuorum"`
GracePeriodEnabled uint `mi:"GracePeriodEnabled"`
GracePeriodTimeout uint `mi:"GracePeriodTimeout"`
GroupDependencyTimeout uint `mi:"GroupDependencyTimeout"`
HangRecoveryAction uint `mi:"HangRecoveryAction"`
IgnorePersistentStateOnStartup uint `mi:"IgnorePersistentStateOnStartup"`
LogResourceControls uint `mi:"LogResourceControls"`
LowerQuorumPriorityNodeId uint `mi:"LowerQuorumPriorityNodeId"`
MaxNumberOfNodes uint `mi:"MaxNumberOfNodes"`
MessageBufferLength uint `mi:"MessageBufferLength"`
MinimumNeverPreemptPriority uint `mi:"MinimumNeverPreemptPriority"`
MinimumPreemptorPriority uint `mi:"MinimumPreemptorPriority"`
NetftIPSecEnabled uint `mi:"NetftIPSecEnabled"`
PlacementOptions uint `mi:"PlacementOptions"`
PlumbAllCrossSubnetRoutes uint `mi:"PlumbAllCrossSubnetRoutes"`
PreventQuorum uint `mi:"PreventQuorum"`
QuarantineDuration uint `mi:"QuarantineDuration"`
QuarantineThreshold uint `mi:"QuarantineThreshold"`
QuorumArbitrationTimeMax uint `mi:"QuorumArbitrationTimeMax"`
QuorumArbitrationTimeMin uint `mi:"QuorumArbitrationTimeMin"`
QuorumLogFileSize uint `mi:"QuorumLogFileSize"`
QuorumTypeValue uint `mi:"QuorumTypeValue"`
RequestReplyTimeout uint `mi:"RequestReplyTimeout"`
ResiliencyDefaultPeriod uint `mi:"ResiliencyDefaultPeriod"`
ResiliencyLevel uint `mi:"ResiliencyLevel"`
ResourceDllDeadlockPeriod uint `mi:"ResourceDllDeadlockPeriod"`
RootMemoryReserved uint `mi:"RootMemoryReserved"`
RouteHistoryLength uint `mi:"RouteHistoryLength"`
S2DBusTypes uint `mi:"S2DBusTypes"`
S2DCacheDesiredState uint `mi:"S2DCacheDesiredState"`
S2DCacheFlashReservePercent uint `mi:"S2DCacheFlashReservePercent"`
S2DCachePageSizeKBytes uint `mi:"S2DCachePageSizeKBytes"`
S2DEnabled uint `mi:"S2DEnabled"`
S2DIOLatencyThreshold uint `mi:"S2DIOLatencyThreshold"`
S2DOptimizations uint `mi:"S2DOptimizations"`
SameSubnetDelay uint `mi:"SameSubnetDelay"`
SameSubnetThreshold uint `mi:"SameSubnetThreshold"`
SecurityLevel uint `mi:"SecurityLevel"`
SecurityLevelForStorage uint `mi:"SecurityLevelForStorage"`
SharedVolumeVssWriterOperationTimeout uint `mi:"SharedVolumeVssWriterOperationTimeout"`
ShutdownTimeoutInMinutes uint `mi:"ShutdownTimeoutInMinutes"`
UseClientAccessNetworksForSharedVolumes uint `mi:"UseClientAccessNetworksForSharedVolumes"`
WitnessDatabaseWriteTimeout uint `mi:"WitnessDatabaseWriteTimeout"`
WitnessDynamicWeight uint `mi:"WitnessDynamicWeight"`
WitnessRestartInterval uint `mi:"WitnessRestartInterval"`
}
func (c *Collector) buildCluster() {
@@ -558,8 +562,8 @@ func (c *Collector) buildCluster() {
func (c *Collector) collectCluster(ch chan<- prometheus.Metric) error {
var dst []msClusterCluster
if err := c.wmiClient.Query("SELECT * FROM MSCluster_Cluster", &dst, nil, "root/MSCluster"); err != nil {
return err
if err := c.miSession.Query(&dst, mi.NamespaceRootMSCluster, utils.Must(mi.NewQuery("SELECT * MSCluster_Cluster"))); err != nil {
return fmt.Errorf("WMI query failed: %w", err)
}
for _, v := range dst {