Skip to content

Commit 76e6363

Browse files
authored
fix(hatchery:swarm): unregister worker cpu/memory metrics (#6470)
Signed-off-by: richardlt <[email protected]>
1 parent e04cdc7 commit 76e6363

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

engine/hatchery/swarm/monitoring.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
"go.opencensus.io/stats"
12+
"go.opencensus.io/stats/view"
1213
"go.opencensus.io/tag"
1314
"golang.org/x/net/context"
1415

@@ -41,12 +42,12 @@ func (h *HatcherySwarm) InitWorkersMetrics(ctx context.Context) error {
4142
telemetry.MustNewKey(TagResourceName),
4243
}
4344

44-
return telemetry.RegisterView(ctx,
45-
telemetry.NewViewLastFloat64("cds/hatchery/worker_cpu", h.workerMetrics.CPU, tags),
46-
telemetry.NewViewLastFloat64("cds/hatchery/worker_cpu_request", h.workerMetrics.CPURequest, tags),
47-
telemetry.NewViewLast("cds/hatchery/worker_memory", h.workerMetrics.Memory, tags),
48-
telemetry.NewViewLast("cds/hatchery/worker_memory_request", h.workerMetrics.MemoryRequest, tags),
49-
)
45+
h.workerMetrics.CPUView = telemetry.NewViewLastFloat64("cds/hatchery/worker_cpu", h.workerMetrics.CPU, tags)
46+
h.workerMetrics.CPURequestView = telemetry.NewViewLastFloat64("cds/hatchery/worker_cpu_request", h.workerMetrics.CPURequest, tags)
47+
h.workerMetrics.MemoryView = telemetry.NewViewLast("cds/hatchery/worker_memory", h.workerMetrics.Memory, tags)
48+
h.workerMetrics.MemoryRequestView = telemetry.NewViewLast("cds/hatchery/worker_memory_request", h.workerMetrics.MemoryRequest, tags)
49+
50+
return telemetry.RegisterView(ctx, h.workerMetrics.CPUView, h.workerMetrics.CPURequestView, h.workerMetrics.MemoryView, h.workerMetrics.MemoryRequestView)
5051
}
5152

5253
func (h *HatcherySwarm) StartWorkerMetricsRoutine(ctx context.Context, delay int64) {
@@ -57,6 +58,10 @@ func (h *HatcherySwarm) StartWorkerMetricsRoutine(ctx context.Context, delay int
5758
select {
5859
case <-ticker.C:
5960
h.GoRoutines.Exec(ctx, "compute-worker-metrics", func(ctx context.Context) {
61+
// Re-register view to drop ended workers metrics
62+
view.Unregister(h.workerMetrics.CPUView, h.workerMetrics.CPURequestView, h.workerMetrics.MemoryView, h.workerMetrics.MemoryRequestView)
63+
view.Register(h.workerMetrics.CPUView, h.workerMetrics.CPURequestView, h.workerMetrics.MemoryView, h.workerMetrics.MemoryRequestView)
64+
6065
ms, err := h.WorkersMetrics(ctx)
6166
if err != nil {
6267
log.ErrorWithStackTrace(ctx, err)
@@ -127,7 +132,7 @@ func (h *HatcherySwarm) WorkersMetrics(ctx context.Context) ([]WorkerMetricsReso
127132
}
128133
var stats types.Stats
129134
if err := json.Unmarshal(v, &stats); err != nil {
130-
log.ErrorWithStackTrace(ctx, sdk.WrapError(err, "unable to get unmarshal stats for container %s/%s", host, c.ID))
135+
log.ErrorWithStackTrace(ctx, sdk.WrapError(err, "unable to unmarshal stats for container %s/%s", host, c.ID))
131136
return
132137
}
133138

engine/hatchery/swarm/types.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package swarm
33
import (
44
docker "github.com/docker/docker/client"
55
"go.opencensus.io/stats"
6+
"go.opencensus.io/stats/view"
67

78
hatcheryCommon "github.com/ovh/cds/engine/hatchery"
89
"github.com/ovh/cds/engine/service"
@@ -51,10 +52,14 @@ type HatcherySwarm struct {
5152
Config HatcheryConfiguration
5253
dockerClients map[string]*dockerClient
5354
workerMetrics struct {
54-
CPU *stats.Float64Measure
55-
CPURequest *stats.Float64Measure
56-
Memory *stats.Int64Measure
57-
MemoryRequest *stats.Int64Measure
55+
CPU *stats.Float64Measure
56+
CPURequest *stats.Float64Measure
57+
Memory *stats.Int64Measure
58+
MemoryRequest *stats.Int64Measure
59+
CPUView *view.View
60+
CPURequestView *view.View
61+
MemoryView *view.View
62+
MemoryRequestView *view.View
5863
}
5964
}
6065

0 commit comments

Comments
 (0)