mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-03-02 00:26:35 +00:00
mi: replace all WMI calls with MI calls (#1700)
This commit is contained in:
@@ -8,9 +8,9 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/alecthomas/kingpin/v2"
|
||||
"github.com/prometheus-community/windows_exporter/internal/mi"
|
||||
"github.com/prometheus-community/windows_exporter/internal/types"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/yusufpapurcu/wmi"
|
||||
)
|
||||
|
||||
const Name = "mscluster"
|
||||
@@ -32,7 +32,7 @@ var ConfigDefaults = Config{
|
||||
// A Collector is a Prometheus Collector for WMI MSCluster_Cluster metrics.
|
||||
type Collector struct {
|
||||
config Config
|
||||
wmiClient *wmi.Client
|
||||
miSession *mi.Session
|
||||
|
||||
// cluster
|
||||
clusterAddEvictDelay *prometheus.Desc
|
||||
@@ -221,16 +221,16 @@ func (c *Collector) Close(_ *slog.Logger) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Collector) Build(_ *slog.Logger, wmiClient *wmi.Client) error {
|
||||
func (c *Collector) Build(_ *slog.Logger, miSession *mi.Session) error {
|
||||
if len(c.config.CollectorsEnabled) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
if wmiClient == nil || wmiClient.SWbemServicesClient == nil {
|
||||
return errors.New("wmiClient or SWbemServicesClient is nil")
|
||||
if miSession == nil {
|
||||
return errors.New("miSession is nil")
|
||||
}
|
||||
|
||||
c.wmiClient = wmiClient
|
||||
c.miSession = miSession
|
||||
|
||||
if slices.Contains(c.config.CollectorsEnabled, "cluster") {
|
||||
c.buildCluster()
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,13 +14,13 @@ const nameNetwork = Name + "_network"
|
||||
// msClusterNetwork represents the MSCluster_Network WMI class
|
||||
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/cluswmi/mscluster-network
|
||||
type msClusterNetwork struct {
|
||||
Name string
|
||||
Name string `mi:"Name"`
|
||||
|
||||
Characteristics uint
|
||||
Flags uint
|
||||
Metric uint
|
||||
Role uint
|
||||
State uint
|
||||
Characteristics uint `mi:"Characteristics"`
|
||||
Flags uint `mi:"Flags"`
|
||||
Metric uint `mi:"Metric"`
|
||||
Role uint `mi:"Role"`
|
||||
State uint `mi:"State"`
|
||||
}
|
||||
|
||||
func (c *Collector) buildNetwork() {
|
||||
@@ -57,8 +61,8 @@ func (c *Collector) buildNetwork() {
|
||||
func (c *Collector) collectNetwork(ch chan<- prometheus.Metric) error {
|
||||
var dst []msClusterNetwork
|
||||
|
||||
if err := c.wmiClient.Query("SELECT * FROM MSCluster_Network", &dst, nil, "root/MSCluster"); err != nil {
|
||||
return err
|
||||
if err := c.miSession.Query(&dst, mi.NamespaceRootMSCluster, utils.Must(mi.NewQuery("SELECT * MSCluster_Node"))); err != nil {
|
||||
return fmt.Errorf("WMI query failed: %w", err)
|
||||
}
|
||||
|
||||
for _, v := range dst {
|
||||
|
||||
@@ -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,22 +14,22 @@ const nameNode = Name + "_node"
|
||||
// msClusterNode represents the MSCluster_Node WMI class
|
||||
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/cluswmi/mscluster-node
|
||||
type msClusterNode struct {
|
||||
Name string
|
||||
Name string `mi:"Name"`
|
||||
|
||||
BuildNumber uint
|
||||
Characteristics uint
|
||||
DetectedCloudPlatform uint
|
||||
DynamicWeight uint
|
||||
Flags uint
|
||||
MajorVersion uint
|
||||
MinorVersion uint
|
||||
NeedsPreventQuorum uint
|
||||
NodeDrainStatus uint
|
||||
NodeHighestVersion uint
|
||||
NodeLowestVersion uint
|
||||
NodeWeight uint
|
||||
State uint
|
||||
StatusInformation uint
|
||||
BuildNumber uint `mi:"BuildNumber"`
|
||||
Characteristics uint `mi:"Characteristics"`
|
||||
DetectedCloudPlatform uint `mi:"DetectedCloudPlatform"`
|
||||
DynamicWeight uint `mi:"DynamicWeight"`
|
||||
Flags uint `mi:"Flags"`
|
||||
MajorVersion uint `mi:"MajorVersion"`
|
||||
MinorVersion uint `mi:"MinorVersion"`
|
||||
NeedsPreventQuorum uint `mi:"NeedsPreventQuorum"`
|
||||
NodeDrainStatus uint `mi:"NodeDrainStatus"`
|
||||
NodeHighestVersion uint `mi:"NodeHighestVersion"`
|
||||
NodeLowestVersion uint `mi:"NodeLowestVersion"`
|
||||
NodeWeight uint `mi:"NodeWeight"`
|
||||
State uint `mi:"State"`
|
||||
StatusInformation uint `mi:"StatusInformation"`
|
||||
}
|
||||
|
||||
func (c *Collector) buildNode() {
|
||||
@@ -120,8 +124,8 @@ func (c *Collector) buildNode() {
|
||||
func (c *Collector) collectNode(ch chan<- prometheus.Metric) ([]string, error) {
|
||||
var dst []msClusterNode
|
||||
|
||||
if err := c.wmiClient.Query("SELECT * FROM MSCluster_Node", &dst, nil, "root/MSCluster"); err != nil {
|
||||
return nil, err
|
||||
if err := c.miSession.Query(&dst, mi.NamespaceRootMSCluster, utils.Must(mi.NewQuery("SELECT * FROM MSCluster_Node"))); err != nil {
|
||||
return nil, fmt.Errorf("WMI query failed: %w", err)
|
||||
}
|
||||
|
||||
nodeNames := make([]string, 0, len(dst))
|
||||
|
||||
@@ -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,27 +14,27 @@ const nameResource = Name + "_resource"
|
||||
// msClusterResource represents the MSCluster_Resource WMI class
|
||||
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/cluswmi/mscluster-resource
|
||||
type msClusterResource struct {
|
||||
Name string
|
||||
Type string
|
||||
OwnerGroup string
|
||||
OwnerNode string
|
||||
Name string `mi:"Name"`
|
||||
Type string `mi:"Type"`
|
||||
OwnerGroup string `mi:"OwnerGroup"`
|
||||
OwnerNode string `mi:"OwnerNode"`
|
||||
|
||||
Characteristics uint
|
||||
DeadlockTimeout uint
|
||||
EmbeddedFailureAction uint
|
||||
Flags uint
|
||||
IsAlivePollInterval uint
|
||||
LooksAlivePollInterval uint
|
||||
MonitorProcessId uint
|
||||
PendingTimeout uint
|
||||
ResourceClass uint
|
||||
RestartAction uint
|
||||
RestartDelay uint
|
||||
RestartPeriod uint
|
||||
RestartThreshold uint
|
||||
RetryPeriodOnFailure uint
|
||||
State uint
|
||||
Subclass uint
|
||||
Characteristics uint `mi:"Characteristics"`
|
||||
DeadlockTimeout uint `mi:"DeadlockTimeout"`
|
||||
EmbeddedFailureAction uint `mi:"EmbeddedFailureAction"`
|
||||
Flags uint `mi:"Flags"`
|
||||
IsAlivePollInterval uint `mi:"IsAlivePollInterval"`
|
||||
LooksAlivePollInterval uint `mi:"LooksAlivePollInterval"`
|
||||
MonitorProcessId uint `mi:"MonitorProcessId"`
|
||||
PendingTimeout uint `mi:"PendingTimeout"`
|
||||
ResourceClass uint `mi:"ResourceClass"`
|
||||
RestartAction uint `mi:"RestartAction"`
|
||||
RestartDelay uint `mi:"RestartDelay"`
|
||||
RestartPeriod uint `mi:"RestartPeriod"`
|
||||
RestartThreshold uint `mi:"RestartThreshold"`
|
||||
RetryPeriodOnFailure uint `mi:"RetryPeriodOnFailure"`
|
||||
State uint `mi:"State"`
|
||||
Subclass uint `mi:"Subclass"`
|
||||
}
|
||||
|
||||
func (c *Collector) buildResource() {
|
||||
@@ -149,8 +153,8 @@ func (c *Collector) buildResource() {
|
||||
func (c *Collector) collectResource(ch chan<- prometheus.Metric, nodeNames []string) error {
|
||||
var dst []msClusterResource
|
||||
|
||||
if err := c.wmiClient.Query("SELECT * FROM MSCluster_Resource", &dst, nil, "root/MSCluster"); err != nil {
|
||||
return err
|
||||
if err := c.miSession.Query(&dst, mi.NamespaceRootMSCluster, utils.Must(mi.NewQuery("SELECT * FROM MSCluster_Resource"))); err != nil {
|
||||
return fmt.Errorf("WMI query failed: %w", err)
|
||||
}
|
||||
|
||||
for _, v := range dst {
|
||||
|
||||
@@ -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,22 +14,22 @@ const nameResourceGroup = Name + "_resourcegroup"
|
||||
// msClusterResourceGroup represents the MSCluster_ResourceGroup WMI class
|
||||
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/cluswmi/mscluster-resourcegroup
|
||||
type msClusterResourceGroup struct {
|
||||
Name string
|
||||
Name string `mi:"Name"`
|
||||
|
||||
AutoFailbackType uint
|
||||
Characteristics uint
|
||||
ColdStartSetting uint
|
||||
DefaultOwner uint
|
||||
FailbackWindowEnd int
|
||||
FailbackWindowStart int
|
||||
FailoverPeriod uint
|
||||
FailoverThreshold uint
|
||||
Flags uint
|
||||
GroupType uint
|
||||
OwnerNode string
|
||||
Priority uint
|
||||
ResiliencyPeriod uint
|
||||
State uint
|
||||
AutoFailbackType uint `mi:"AutoFailbackType"`
|
||||
Characteristics uint `mi:"Characteristics"`
|
||||
ColdStartSetting uint `mi:"ColdStartSetting"`
|
||||
DefaultOwner uint `mi:"DefaultOwner"`
|
||||
FailbackWindowEnd int `mi:"FailbackWindowEnd"`
|
||||
FailbackWindowStart int `mi:"FailbackWindowStart"`
|
||||
FailoverPeriod uint `mi:"FailoverPeriod"`
|
||||
FailoverThreshold uint `mi:"FailoverThreshold"`
|
||||
Flags uint `mi:"Flags"`
|
||||
GroupType uint `mi:"GroupType"`
|
||||
OwnerNode string `mi:"OwnerNode"`
|
||||
Priority uint `mi:"Priority"`
|
||||
ResiliencyPeriod uint `mi:"ResiliencyPeriod"`
|
||||
State uint `mi:"State"`
|
||||
}
|
||||
|
||||
func (c *Collector) buildResourceGroup() {
|
||||
@@ -126,8 +130,8 @@ func (c *Collector) buildResourceGroup() {
|
||||
func (c *Collector) collectResourceGroup(ch chan<- prometheus.Metric, nodeNames []string) error {
|
||||
var dst []msClusterResourceGroup
|
||||
|
||||
if err := c.wmiClient.Query("SELECT * FROM MSCluster_ResourceGroup", &dst, nil, "root/MSCluster"); err != nil {
|
||||
return err
|
||||
if err := c.miSession.Query(&dst, mi.NamespaceRootMSCluster, utils.Must(mi.NewQuery("SELECT * FROM MSCluster_ResourceGroup"))); err != nil {
|
||||
return fmt.Errorf("WMI query failed: %w", err)
|
||||
}
|
||||
|
||||
for _, v := range dst {
|
||||
|
||||
Reference in New Issue
Block a user