Skip to content

Commit 49bc6f5

Browse files
committed
resmgr,rdt: switch to RDT OpenTelemetry metrics collector.
Use the OpenTelemetry-based RDT metrics collector. Signed-off-by: Krisztian Litkey <[email protected]>
1 parent 1894dec commit 49bc6f5

File tree

5 files changed

+17
-56
lines changed

5 files changed

+17
-56
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/containers/nri-plugins/pkg/topology v0.0.0
1111
github.com/coreos/go-systemd/v22 v22.5.0
1212
github.com/fsnotify/fsnotify v1.6.0
13-
github.com/intel/goresctrl v0.10.0
13+
github.com/intel/goresctrl v0.11.0
1414
github.com/intel/memtierd v0.1.1
1515
github.com/k8stopologyawareschedwg/noderesourcetopology-api v0.1.2
1616
github.com/onsi/ginkgo/v2 v2.21.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,8 +840,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
840840
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
841841
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
842842
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
843-
github.com/intel/goresctrl v0.10.0 h1:Q94PBhLtQM/aVxVTKzB1j/ooMuV+9XleTN1fq2OGsSo=
844-
github.com/intel/goresctrl v0.10.0/go.mod h1:1S8GDqL46GuKb525bxNhIEEkhf4rhVcbSf9DuKhp7mw=
843+
github.com/intel/goresctrl v0.11.0 h1:FnlyrQxgjp9nm2hccwvBDc7qmf9uLxKf0DC6CKobnMA=
844+
github.com/intel/goresctrl v0.11.0/go.mod h1:F6jINn5WKuXXHAjmE7eTBjeHPmqT2kiWStrggYIm+UM=
845845
github.com/intel/memtierd v0.1.1 h1:hGSN0+dzjaUkwgkJrk6B9SU4dntggXLpXgs9Dm+jfz4=
846846
github.com/intel/memtierd v0.1.1/go.mod h1:NFDBvjoDS42gBK/c9q/CYCJ2pt/+g7UQwOOBvQli4z0=
847847
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=

pkg/apis/config/v1alpha1/resmgr/control/rdt/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ var (
3737
SetConfig func(*rdt.Config, bool) error = rdt.SetConfig
3838

3939
// And some that we need for other plumbing.
40-
NewCollector = rdt.NewCollector
40+
NewCollector = rdt.NewCollector
41+
RegisterOpenTelemetryInstruments = rdt.RegisterOpenTelemetryInstruments
4142
)
4243

4344
// Config provides runtime configuration for class based cache allocation

pkg/resmgr/rdt.go

Lines changed: 9 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,15 @@ import (
2121
"github.com/containers/nri-plugins/pkg/apis/config/v1alpha1/resmgr/control/rdt"
2222
logger "github.com/containers/nri-plugins/pkg/log"
2323
"github.com/containers/nri-plugins/pkg/metrics"
24-
"github.com/prometheus/client_golang/prometheus"
2524
)
2625

2726
var (
2827
rdtlog = logger.Get("goresctrl")
2928
)
3029

3130
type rdtControl struct {
32-
hostRoot string
33-
resmgr *resmgr
34-
collector *rdtCollector
31+
hostRoot string
32+
resmgr *resmgr
3533
}
3634

3735
func newRdtControl(resmgr *resmgr, hostRoot string) *rdtControl {
@@ -41,15 +39,9 @@ func newRdtControl(resmgr *resmgr, hostRoot string) *rdtControl {
4139
rdt.SetPrefix(opt.HostRoot)
4240
}
4341

44-
collector, err := registerRdtCollector()
45-
if err != nil {
46-
log.Error("failed to register RDT metrics collector: %v", err)
47-
}
48-
4942
return &rdtControl{
50-
resmgr: resmgr,
51-
hostRoot: hostRoot,
52-
collector: collector,
43+
resmgr: resmgr,
44+
hostRoot: hostRoot,
5345
}
5446
}
5547

@@ -77,46 +69,14 @@ func (c *rdtControl) configure(cfg *rdt.Config) error {
7769
} else {
7870
log.Info("goresctrl/rdt running in discovery mode")
7971
}
72+
73+
meter := metrics.Provider("policy").Meter("rdt", metrics.WithOmitSubsystem())
74+
if err := rdt.RegisterOpenTelemetryInstruments(meter); err != nil {
75+
return fmt.Errorf("failed to register OpenTelemetry instruments: %w", err)
76+
}
8077
}
8178

8279
c.resmgr.cache.ConfigureRDTControl(cfg.Enable)
83-
c.collector.enable(cfg.Enable)
8480

8581
return nil
8682
}
87-
88-
type rdtCollector struct {
89-
prometheus.Collector
90-
enabled bool
91-
}
92-
93-
func registerRdtCollector() (*rdtCollector, error) {
94-
options := []metrics.RegisterOption{
95-
metrics.WithGroup("policy"),
96-
metrics.WithCollectorOptions(
97-
metrics.WithoutSubsystem(),
98-
),
99-
}
100-
101-
c := &rdtCollector{Collector: rdt.NewCollector()}
102-
103-
if err := metrics.Register("rdt", c, options...); err != nil {
104-
return nil, err
105-
}
106-
107-
return c, nil
108-
}
109-
110-
func (c *rdtCollector) enable(enabled bool) {
111-
c.enabled = enabled
112-
}
113-
114-
func (c *rdtCollector) Describe(ch chan<- *prometheus.Desc) {
115-
rdtlog.Debug("describing RDT metrics")
116-
c.Collector.Describe(ch)
117-
}
118-
119-
func (c *rdtCollector) Collect(ch chan<- prometheus.Metric) {
120-
rdtlog.Debug("collecting RDT metrics")
121-
c.Collector.Collect(ch)
122-
}

pkg/resmgr/resource-manager.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,15 @@ func (m *resmgr) start(cfg cfgapi.ResmgrConfig) error {
174174

175175
// m.cache.ConfigureBlockIOControl(mCfg.Control.BlockIO.Enable)
176176

177-
if err := m.blkio.configure(&mCfg.Control.BlockIO); err != nil {
177+
if err := instrumentation.Reconfigure(&mCfg.Instrumentation); err != nil {
178178
return err
179179
}
180180

181-
if err := m.rdt.configure(&mCfg.Control.RDT); err != nil {
181+
if err := m.blkio.configure(&mCfg.Control.BlockIO); err != nil {
182182
return err
183183
}
184184

185-
if err := instrumentation.Reconfigure(&mCfg.Instrumentation); err != nil {
185+
if err := m.rdt.configure(&mCfg.Control.RDT); err != nil {
186186
return err
187187
}
188188

0 commit comments

Comments
 (0)