mi: Revert "replace all WMI calls with MI calls" (#1713)

This commit is contained in:
Jan-Otto Kröpke
2024-11-03 11:20:46 +01:00
committed by GitHub
parent c4f5d58a3e
commit 45d3eabab9
82 changed files with 738 additions and 2767 deletions

View File

@@ -4,15 +4,14 @@ package msmq
import (
"errors"
"fmt"
"log/slog"
"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-community/windows_exporter/internal/utils"
"github.com/prometheus/client_golang/prometheus"
"github.com/yusufpapurcu/wmi"
)
const Name = "msmq"
@@ -28,7 +27,7 @@ var ConfigDefaults = Config{
// A Collector is a Prometheus Collector for WMI Win32_PerfRawData_MSMQ_MSMQQueue metrics.
type Collector struct {
config Config
miSession *mi.Session
wmiClient *wmi.Client
bytesInJournalQueue *prometheus.Desc
bytesInQueue *prometheus.Desc
@@ -76,14 +75,14 @@ func (c *Collector) Close(_ *slog.Logger) error {
return nil
}
func (c *Collector) Build(logger *slog.Logger, miSession *mi.Session) error {
func (c *Collector) Build(logger *slog.Logger, wmiClient *wmi.Client) error {
logger = logger.With(slog.String("collector", Name))
if miSession == nil {
return errors.New("miSession is nil")
if wmiClient == nil || wmiClient.SWbemServicesClient == nil {
return errors.New("wmiClient or SWbemServicesClient is nil")
}
c.miSession = miSession
c.wmiClient = wmiClient
if *c.config.QueryWhereClause == "" {
logger.Warn("No where-clause specified for msmq collector. This will generate a very large number of metrics!")
@@ -133,12 +132,12 @@ func (c *Collector) Collect(_ *types.ScrapeContext, logger *slog.Logger, ch chan
}
type msmqQueue struct {
Name string `mi:"Name"`
Name string
BytesInJournalQueue uint64 `mi:"BytesInJournalQueue"`
BytesInQueue uint64 `mi:"BytesInQueue"`
MessagesInJournalQueue uint64 `mi:"MessagesInJournalQueue"`
MessagesInQueue uint64 `mi:"MessagesInQueue"`
BytesInJournalQueue uint64
BytesInQueue uint64
MessagesInJournalQueue uint64
MessagesInQueue uint64
}
func (c *Collector) collect(ch chan<- prometheus.Metric) error {
@@ -149,13 +148,8 @@ func (c *Collector) collect(ch chan<- prometheus.Metric) error {
query += " WHERE " + *c.config.QueryWhereClause
}
queryExpression, err := mi.NewQuery(query)
if err != nil {
return fmt.Errorf("failed to create WMI query: %w", err)
}
if err := c.miSession.Query(&dst, mi.NamespaceRootCIMv2, queryExpression); err != nil {
return fmt.Errorf("WMI query failed: %w", err)
if err := c.wmiClient.Query(query, &dst); err != nil {
return err
}
for _, msmq := range dst {