mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-10-17 10:09:05 +02:00
collector: add pprof labels to build and collection (#2562)
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
@@ -210,6 +210,9 @@ windows_exporter provides the following HTTP endpoints:
|
||||
* `/health`: Returns 200 OK when the exporter is running.
|
||||
* `/debug/pprof/`: Exposes the [pprof](https://golang.org/pkg/net/http/pprof/) endpoints. Only, if `--debug.enabled` is set.
|
||||
|
||||
CPU and goroutine profiles include a `collector` label with the collector name, so profiles can be filtered by collector.
|
||||
Workers started during collector initialization inherit this label.
|
||||
|
||||
### Using [defaults] with `--collectors.enabled` argument
|
||||
|
||||
Using `[defaults]` with `--collectors.enabled` argument which gets expanded with all default collectors.
|
||||
|
||||
@@ -23,6 +23,7 @@ import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"runtime/debug"
|
||||
"runtime/pprof"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@@ -85,10 +86,12 @@ func (c *Collection) collectAll(ctx context.Context, ch chan<- prometheus.Metric
|
||||
// timeout handling is done in the execute function
|
||||
for name, metricsCollector := range c.collectors {
|
||||
wg.Go(func() {
|
||||
collectorStatusCh <- collectorStatus{
|
||||
name: name,
|
||||
statusCode: c.collectCollector(ctx, ch, logger, name, metricsCollector),
|
||||
}
|
||||
pprof.Do(ctx, pprof.Labels("collector", name), func(ctx context.Context) {
|
||||
collectorStatusCh <- collectorStatus{
|
||||
name: name,
|
||||
statusCode: c.collectCollector(ctx, ch, logger, name, metricsCollector),
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"maps"
|
||||
"runtime/pprof"
|
||||
"slices"
|
||||
gotime "time"
|
||||
|
||||
@@ -248,10 +249,13 @@ func (c *Collection) Build(ctx context.Context, logger *slog.Logger) error {
|
||||
state := c.state.collector(name)
|
||||
|
||||
go func() {
|
||||
resultCh <- buildResult{
|
||||
name: collector.GetName(),
|
||||
err: state.build(ctx, logger, miSession, collector),
|
||||
}
|
||||
// Workers started by Build inherit the collector's profiling label.
|
||||
pprof.Do(ctx, pprof.Labels("collector", name), func(ctx context.Context) {
|
||||
resultCh <- buildResult{
|
||||
name: collector.GetName(),
|
||||
err: state.build(ctx, logger, miSession, collector),
|
||||
}
|
||||
})
|
||||
}()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user