mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-03-04 01:26:37 +00:00
iis: Add HTTP Service Request Queues (#1948)
Co-authored-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
committed by
GitHub
parent
036c858355
commit
3e8693f1e3
@@ -53,8 +53,11 @@ type Collector struct {
|
||||
config Config
|
||||
iisVersion simpleVersion
|
||||
|
||||
logger *slog.Logger
|
||||
|
||||
info *prometheus.Desc
|
||||
collectorWebService
|
||||
collectorHttpServiceRequestQueues
|
||||
collectorAppPoolWAS
|
||||
collectorW3SVCW3WP
|
||||
collectorWebServiceCache
|
||||
@@ -150,6 +153,7 @@ func (c *Collector) GetName() string {
|
||||
|
||||
func (c *Collector) Close() error {
|
||||
c.perfDataCollectorWebService.Close()
|
||||
c.perfDataCollectorHttpServiceRequestQueues.Close()
|
||||
c.perfDataCollectorAppPoolWAS.Close()
|
||||
c.w3SVCW3WPPerfDataCollector.Close()
|
||||
c.serviceCachePerfDataCollector.Close()
|
||||
@@ -158,9 +162,9 @@ func (c *Collector) Close() error {
|
||||
}
|
||||
|
||||
func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error {
|
||||
logger = logger.With(slog.String("collector", Name))
|
||||
c.logger = logger.With(slog.String("collector", Name))
|
||||
|
||||
c.iisVersion = c.getIISVersion(logger)
|
||||
c.iisVersion = c.getIISVersion()
|
||||
|
||||
c.info = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "info"),
|
||||
@@ -175,6 +179,10 @@ func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error {
|
||||
errs = append(errs, fmt.Errorf("failed to build Web Service collector: %w", err))
|
||||
}
|
||||
|
||||
if err := c.buildHttpServiceRequestQueues(); err != nil {
|
||||
errs = append(errs, fmt.Errorf("failed to build Http Service collector: %w", err))
|
||||
}
|
||||
|
||||
if err := c.buildAppPoolWAS(); err != nil {
|
||||
errs = append(errs, fmt.Errorf("failed to build APP_POOL_WAS collector: %w", err))
|
||||
}
|
||||
@@ -195,10 +203,10 @@ type simpleVersion struct {
|
||||
minor uint64
|
||||
}
|
||||
|
||||
func (c *Collector) getIISVersion(logger *slog.Logger) simpleVersion {
|
||||
func (c *Collector) getIISVersion() simpleVersion {
|
||||
k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\InetStp\`, registry.QUERY_VALUE)
|
||||
if err != nil {
|
||||
logger.Warn("couldn't open registry to determine IIS version",
|
||||
c.logger.Warn("couldn't open registry to determine IIS version",
|
||||
slog.Any("err", err),
|
||||
)
|
||||
|
||||
@@ -208,7 +216,7 @@ func (c *Collector) getIISVersion(logger *slog.Logger) simpleVersion {
|
||||
defer func() {
|
||||
err = k.Close()
|
||||
if err != nil {
|
||||
logger.Warn("Failed to close registry key",
|
||||
c.logger.Warn("Failed to close registry key",
|
||||
slog.Any("err", err),
|
||||
)
|
||||
}
|
||||
@@ -216,7 +224,7 @@ func (c *Collector) getIISVersion(logger *slog.Logger) simpleVersion {
|
||||
|
||||
major, _, err := k.GetIntegerValue("MajorVersion")
|
||||
if err != nil {
|
||||
logger.Warn("Couldn't open registry to determine IIS version",
|
||||
c.logger.Warn("Couldn't open registry to determine IIS version",
|
||||
slog.Any("err", err),
|
||||
)
|
||||
|
||||
@@ -225,14 +233,14 @@ func (c *Collector) getIISVersion(logger *slog.Logger) simpleVersion {
|
||||
|
||||
minor, _, err := k.GetIntegerValue("MinorVersion")
|
||||
if err != nil {
|
||||
logger.Warn("Couldn't open registry to determine IIS version",
|
||||
c.logger.Warn("Couldn't open registry to determine IIS version",
|
||||
slog.Any("err", err),
|
||||
)
|
||||
|
||||
return simpleVersion{}
|
||||
}
|
||||
|
||||
logger.Debug(fmt.Sprintf("Detected IIS %d.%d\n", major, minor))
|
||||
c.logger.Debug(fmt.Sprintf("Detected IIS %d.%d\n", major, minor))
|
||||
|
||||
return simpleVersion{
|
||||
major: major,
|
||||
@@ -255,6 +263,10 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error {
|
||||
errs = append(errs, fmt.Errorf("failed to collect Web Service metrics: %w", err))
|
||||
}
|
||||
|
||||
if err := c.collectHttpServiceRequestQueues(ch); err != nil {
|
||||
errs = append(errs, fmt.Errorf("failed to collect Http Service Request Queues metrics: %w", err))
|
||||
}
|
||||
|
||||
if err := c.collectAppPoolWAS(ch); err != nil {
|
||||
errs = append(errs, fmt.Errorf("failed to collect APP_POOL_WAS metrics: %w", err))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user