mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-02-17 02:06:35 +00:00
chore(deps): update golangci/golangci-lint-action action to v7 (#1976)
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
@@ -40,7 +40,7 @@ const (
|
||||
subCollectorAutoDiscover = "Autodiscover"
|
||||
subCollectorWorkloadManagement = "WorkloadManagement"
|
||||
subCollectorRpcClientAccess = "RpcClientAccess"
|
||||
subCollectorMapiHttpEmsmdb = "MapiHttpEmsmdb"
|
||||
subCollectorMapiHTTPEmsmdb = "MapiHttpEmsmdb"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
@@ -59,7 +59,7 @@ var ConfigDefaults = Config{
|
||||
subCollectorAutoDiscover,
|
||||
subCollectorWorkloadManagement,
|
||||
subCollectorRpcClientAccess,
|
||||
subCollectorMapiHttpEmsmdb,
|
||||
subCollectorMapiHTTPEmsmdb,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ type Collector struct {
|
||||
collectorAutoDiscover
|
||||
collectorAvailabilityService
|
||||
collectorHTTPProxy
|
||||
collectorMapiHttpEmsmdb
|
||||
collectorMapiHTTPEmsMDB
|
||||
collectorOWA
|
||||
collectorRpcClientAccess
|
||||
collectorTransportQueues
|
||||
@@ -129,7 +129,7 @@ func NewWithFlags(app *kingpin.Application) *Collector {
|
||||
subCollectorAutoDiscover: "[29240] MSExchange Autodiscover",
|
||||
subCollectorWorkloadManagement: "[19430] MSExchange WorkloadManagement Workloads",
|
||||
subCollectorRpcClientAccess: "[29336] MSExchange RpcClientAccess",
|
||||
subCollectorMapiHttpEmsmdb: "[26463] MSExchange MapiHttp Emsmdb",
|
||||
subCollectorMapiHTTPEmsmdb: "[26463] MSExchange MapiHttp Emsmdb",
|
||||
}
|
||||
|
||||
sb := strings.Builder{}
|
||||
@@ -219,10 +219,10 @@ func (c *Collector) Build(_ *slog.Logger, _ *mi.Session) error {
|
||||
collect: c.collectRpcClientAccess,
|
||||
close: c.perfDataCollectorRpcClientAccess.Close,
|
||||
},
|
||||
subCollectorMapiHttpEmsmdb: {
|
||||
build: c.buildMapiHttpEmsmdb,
|
||||
collect: c.collectMapiHttpEmsmdb,
|
||||
close: c.perfDataCollectorMapiHttpEmsmdb.Close,
|
||||
subCollectorMapiHTTPEmsmdb: {
|
||||
build: c.buildMapiHTTPEmsMDB,
|
||||
collect: c.collectMapiHTTPEmsMDB,
|
||||
close: c.perfDataCollectorMapiHTTPEmsMDB.Close,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -23,26 +23,26 @@ import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
type collectorMapiHttpEmsmdb struct {
|
||||
perfDataCollectorMapiHttpEmsmdb *pdh.Collector
|
||||
perfDataObjectMapiHttpEmsmdb []perfDataCounterValuesMapiHttpEmsmdb
|
||||
type collectorMapiHTTPEmsMDB struct {
|
||||
perfDataCollectorMapiHTTPEmsMDB *pdh.Collector
|
||||
perfDataObjectMapiHTTPEmsMDB []perfDataCounterValuesMapiHTTPEmsMDB
|
||||
|
||||
activeUserCountMapiHttpEmsMDB *prometheus.Desc
|
||||
activeUserCountMapiHTTPEmsMDB *prometheus.Desc
|
||||
}
|
||||
|
||||
type perfDataCounterValuesMapiHttpEmsmdb struct {
|
||||
type perfDataCounterValuesMapiHTTPEmsMDB struct {
|
||||
ActiveUserCount float64 `perfdata:"Active User Count"`
|
||||
}
|
||||
|
||||
func (c *Collector) buildMapiHttpEmsmdb() error {
|
||||
func (c *Collector) buildMapiHTTPEmsMDB() error {
|
||||
var err error
|
||||
|
||||
c.perfDataCollectorMapiHttpEmsmdb, err = pdh.NewCollector[perfDataCounterValuesMapiHttpEmsmdb](pdh.CounterTypeRaw, "MSExchange MapiHttp Emsmdb", pdh.InstancesAll)
|
||||
c.perfDataCollectorMapiHTTPEmsMDB, err = pdh.NewCollector[perfDataCounterValuesMapiHTTPEmsMDB](pdh.CounterTypeRaw, "MSExchange MapiHttp Emsmdb", pdh.InstancesAll)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create MSExchange MapiHttp Emsmdb: %w", err)
|
||||
}
|
||||
|
||||
c.activeUserCountMapiHttpEmsMDB = prometheus.NewDesc(
|
||||
c.activeUserCountMapiHTTPEmsMDB = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "mapihttp_emsmdb_active_user_count"),
|
||||
"Number of unique outlook users that have shown some kind of activity in the last 2 minutes",
|
||||
nil,
|
||||
@@ -52,15 +52,15 @@ func (c *Collector) buildMapiHttpEmsmdb() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Collector) collectMapiHttpEmsmdb(ch chan<- prometheus.Metric) error {
|
||||
err := c.perfDataCollectorMapiHttpEmsmdb.Collect(&c.perfDataObjectMapiHttpEmsmdb)
|
||||
func (c *Collector) collectMapiHTTPEmsMDB(ch chan<- prometheus.Metric) error {
|
||||
err := c.perfDataCollectorMapiHTTPEmsMDB.Collect(&c.perfDataObjectMapiHTTPEmsMDB)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to collect MSExchange MapiHttp Emsmdb metrics: %w", err)
|
||||
}
|
||||
|
||||
for _, data := range c.perfDataObjectMapiHttpEmsmdb {
|
||||
for _, data := range c.perfDataObjectMapiHTTPEmsMDB {
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.activeUserCountMapiHttpEmsMDB,
|
||||
c.activeUserCountMapiHTTPEmsMDB,
|
||||
prometheus.GaugeValue,
|
||||
data.ActiveUserCount,
|
||||
)
|
||||
|
||||
@@ -93,7 +93,7 @@ func (c *MetricsHTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
)
|
||||
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = w.Write([]byte(fmt.Sprintf("Couldn't create filtered metrics handler: %s", err)))
|
||||
_, _ = fmt.Fprintf(w, "Couldn't create filtered metrics handler: %s", err)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -81,8 +81,8 @@ func New(config *Config) (*slog.Logger, error) {
|
||||
return nil, errors.New("log file undefined")
|
||||
}
|
||||
|
||||
config.Config.Writer = config.File.w
|
||||
config.Config.Style = promslog.SlogStyle
|
||||
config.Writer = config.File.w
|
||||
config.Style = promslog.SlogStyle
|
||||
|
||||
return promslog.New(config.Config), nil
|
||||
}
|
||||
|
||||
@@ -26,13 +26,12 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
applicationID = "windows_exporter"
|
||||
|
||||
LocaleEnglish = "en-us"
|
||||
)
|
||||
|
||||
//nolint:gochecknoglobals
|
||||
var (
|
||||
applicationID = UTF16PtrFromString[*uint16]("windows_exporter")
|
||||
// DestinationOptionsTimeout is the key for the timeout option.
|
||||
//
|
||||
// https://github.com/microsoft/win32metadata/blob/527806d20d83d3abd43d16cd3fa8795d8deba343/generation/WinSDK/RecompiledIdlHeaders/um/mi.h#L7830
|
||||
@@ -99,21 +98,16 @@ type DestinationOptionsFT struct {
|
||||
GetInterval uintptr
|
||||
}
|
||||
|
||||
// Application_Initialize initializes the MI [Application].
|
||||
// ApplicationInitialize initializes the MI [Application].
|
||||
// It is recommended to have only one Application per process.
|
||||
//
|
||||
// https://learn.microsoft.com/en-us/windows/win32/api/mi/nf-mi-mi_application_initializev1
|
||||
func Application_Initialize() (*Application, error) {
|
||||
func ApplicationInitialize() (*Application, error) {
|
||||
application := &Application{}
|
||||
|
||||
applicationId, err := windows.UTF16PtrFromString(applicationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
r0, _, err := procMIApplicationInitialize.Call(
|
||||
0,
|
||||
uintptr(unsafe.Pointer(applicationId)),
|
||||
uintptr(unsafe.Pointer(applicationID)),
|
||||
0,
|
||||
uintptr(unsafe.Pointer(application)),
|
||||
)
|
||||
@@ -129,7 +123,7 @@ func Application_Initialize() (*Application, error) {
|
||||
return application, nil
|
||||
}
|
||||
|
||||
// Close deinitializes the management infrastructure client API that was initialized through a call to Application_Initialize.
|
||||
// Close deinitializes the management infrastructure client API that was initialized through a call to ApplicationInitialize.
|
||||
//
|
||||
// https://learn.microsoft.com/en-us/windows/win32/api/mi/nf-mi-mi_application_close
|
||||
func (application *Application) Close() error {
|
||||
|
||||
@@ -164,29 +164,3 @@ func (instance *Instance) GetClassName() (string, error) {
|
||||
|
||||
return windows.UTF16PtrToString(classNameUTF16), nil
|
||||
}
|
||||
|
||||
func Instance_Print(instance *Instance) (string, error) {
|
||||
elementMap := map[string]any{}
|
||||
|
||||
properties := instance.classDecl.Properties()
|
||||
|
||||
count, err := instance.GetElementCount()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if count == 0 {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
for _, property := range properties {
|
||||
name := windows.UTF16PtrToString(property.Name)
|
||||
|
||||
element, _ := instance.GetElement(name)
|
||||
value, _ := element.GetValue()
|
||||
|
||||
elementMap[windows.UTF16PtrToString(property.Name)] = value
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%v", elementMap), nil
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
)
|
||||
|
||||
func Benchmark_MI_Query_Unmarshal(b *testing.B) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(b, err)
|
||||
require.NotEmpty(b, application)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ type win32Process struct {
|
||||
}
|
||||
|
||||
func Test_MI_Application_Initialize(t *testing.T) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, application)
|
||||
|
||||
@@ -37,7 +37,7 @@ func Test_MI_Application_Initialize(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_MI_Application_TestConnection(t *testing.T) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, application)
|
||||
|
||||
@@ -67,7 +67,7 @@ func Test_MI_Application_TestConnection(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_MI_Query(t *testing.T) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, application)
|
||||
|
||||
@@ -120,7 +120,7 @@ func Test_MI_Query(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_MI_QueryUnmarshal(t *testing.T) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, application)
|
||||
|
||||
@@ -155,7 +155,7 @@ func Test_MI_QueryUnmarshal(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_MI_EmptyQuery(t *testing.T) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, application)
|
||||
|
||||
@@ -194,7 +194,7 @@ func Test_MI_EmptyQuery(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_MI_Query_Unmarshal(t *testing.T) {
|
||||
application, err := mi.Application_Initialize()
|
||||
application, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, application)
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ func TestCollector[C collector.Collector, V interface{}](t *testing.T, fn func(*
|
||||
c := fn(conf)
|
||||
ch := make(chan prometheus.Metric, 10000)
|
||||
|
||||
miApp, err := mi.Application_Initialize()
|
||||
miApp, err := mi.ApplicationInitialize()
|
||||
require.NoError(t, err)
|
||||
|
||||
miSession, err := miApp.NewSession(nil)
|
||||
|
||||
Reference in New Issue
Block a user