Skip to content

Commit 40d6a55

Browse files
authored
scraperhelper: use common scraping interface (#3487)
* scraperhelper: use common scraping interface This removes the MetricsScraper and ResourceMetricsScraper interfaces in favor of a single Scraper interface that scrapes and returns pdata.Metrics. There were already helper wrappers that allow users to return MetricSlices and ResourceMetricSlices. These helpers package those results into pdata.Metrics for the base interface. Resolves #3085: This also removes the multiMetricScraper which wrapped multiple scrapers to appear as a single scraper but then functions like scraper.ID() would be empty. This was evident when trying to log errors and you couldn't figure out what scraper made the error because it was wrapped in the multiscraper. * review updates
1 parent ad5e50c commit 40d6a55

File tree

16 files changed

+63
-129
lines changed

16 files changed

+63
-129
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
## 🧰 Bug fixes 🧰
6+
7+
- `scraperhelper`: Include the scraper name in log messages (#3487)
8+
59
## v0.29.0 Beta
610

711
## 🛑 Breaking changes 🛑

receiver/hostmetricsreceiver/factory.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func createAddScraperOptions(
124124
}
125125

126126
if ok {
127-
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddMetricsScraper(hostMetricsScraper))
127+
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddScraper(hostMetricsScraper))
128128
continue
129129
}
130130

@@ -134,7 +134,7 @@ func createAddScraperOptions(
134134
}
135135

136136
if ok {
137-
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddResourceMetricsScraper(resourceMetricsScraper))
137+
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddScraper(resourceMetricsScraper))
138138
continue
139139
}
140140

@@ -144,7 +144,7 @@ func createAddScraperOptions(
144144
return scraperControllerOptions, nil
145145
}
146146

147-
func createHostMetricsScraper(ctx context.Context, logger *zap.Logger, key string, cfg internal.Config, factories map[string]internal.ScraperFactory) (scraper scraperhelper.MetricsScraper, ok bool, err error) {
147+
func createHostMetricsScraper(ctx context.Context, logger *zap.Logger, key string, cfg internal.Config, factories map[string]internal.ScraperFactory) (scraper scraperhelper.Scraper, ok bool, err error) {
148148
factory := factories[key]
149149
if factory == nil {
150150
ok = false
@@ -156,7 +156,7 @@ func createHostMetricsScraper(ctx context.Context, logger *zap.Logger, key strin
156156
return
157157
}
158158

159-
func createResourceMetricsScraper(ctx context.Context, logger *zap.Logger, key string, cfg internal.Config, factories map[string]internal.ResourceScraperFactory) (scraper scraperhelper.ResourceMetricsScraper, ok bool, err error) {
159+
func createResourceMetricsScraper(ctx context.Context, logger *zap.Logger, key string, cfg internal.Config, factories map[string]internal.ResourceScraperFactory) (scraper scraperhelper.Scraper, ok bool, err error) {
160160
factory := factories[key]
161161
if factory == nil {
162162
ok = false

receiver/hostmetricsreceiver/hostmetrics_receiver_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,32 +213,32 @@ type mockFactory struct{ mock.Mock }
213213
type mockScraper struct{ mock.Mock }
214214

215215
func (m *mockFactory) CreateDefaultConfig() internal.Config { return &mockConfig{} }
216-
func (m *mockFactory) CreateMetricsScraper(context.Context, *zap.Logger, internal.Config) (scraperhelper.MetricsScraper, error) {
216+
func (m *mockFactory) CreateMetricsScraper(context.Context, *zap.Logger, internal.Config) (scraperhelper.Scraper, error) {
217217
args := m.MethodCalled("CreateMetricsScraper")
218-
return args.Get(0).(scraperhelper.MetricsScraper), args.Error(1)
218+
return args.Get(0).(scraperhelper.Scraper), args.Error(1)
219219
}
220220

221221
func (m *mockScraper) ID() config.ComponentID { return config.NewID("") }
222222
func (m *mockScraper) Start(context.Context, component.Host) error { return nil }
223223
func (m *mockScraper) Shutdown(context.Context) error { return nil }
224-
func (m *mockScraper) Scrape(context.Context, config.ComponentID) (pdata.MetricSlice, error) {
225-
return pdata.NewMetricSlice(), errors.New("err1")
224+
func (m *mockScraper) Scrape(context.Context, config.ComponentID) (pdata.Metrics, error) {
225+
return pdata.NewMetrics(), errors.New("err1")
226226
}
227227

228228
type mockResourceFactory struct{ mock.Mock }
229229
type mockResourceScraper struct{ mock.Mock }
230230

231231
func (m *mockResourceFactory) CreateDefaultConfig() internal.Config { return &mockConfig{} }
232-
func (m *mockResourceFactory) CreateResourceMetricsScraper(context.Context, *zap.Logger, internal.Config) (scraperhelper.ResourceMetricsScraper, error) {
232+
func (m *mockResourceFactory) CreateResourceMetricsScraper(context.Context, *zap.Logger, internal.Config) (scraperhelper.Scraper, error) {
233233
args := m.MethodCalled("CreateResourceMetricsScraper")
234-
return args.Get(0).(scraperhelper.ResourceMetricsScraper), args.Error(1)
234+
return args.Get(0).(scraperhelper.Scraper), args.Error(1)
235235
}
236236

237237
func (m *mockResourceScraper) ID() config.ComponentID { return config.NewID("") }
238238
func (m *mockResourceScraper) Start(context.Context, component.Host) error { return nil }
239239
func (m *mockResourceScraper) Shutdown(context.Context) error { return nil }
240-
func (m *mockResourceScraper) Scrape(context.Context, config.ComponentID) (pdata.ResourceMetricsSlice, error) {
241-
return pdata.NewResourceMetricsSlice(), errors.New("err2")
240+
func (m *mockResourceScraper) Scrape(context.Context, config.ComponentID) (pdata.Metrics, error) {
241+
return pdata.NewMetrics(), errors.New("err2")
242242
}
243243

244244
func TestGatherMetrics_ScraperKeyConfigError(t *testing.T) {

receiver/hostmetricsreceiver/internal/scraper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ type ScraperFactory interface {
3434

3535
// CreateMetricsScraper creates a scraper based on this config.
3636
// If the config is not valid, error will be returned instead.
37-
CreateMetricsScraper(ctx context.Context, logger *zap.Logger, cfg Config) (scraperhelper.MetricsScraper, error)
37+
CreateMetricsScraper(ctx context.Context, logger *zap.Logger, cfg Config) (scraperhelper.Scraper, error)
3838
}
3939

4040
// ResourceScraperFactory can create a ResourceScraper.
@@ -43,7 +43,7 @@ type ResourceScraperFactory interface {
4343

4444
// CreateResourceMetricsScraper creates a resource scraper based on this
4545
// config. If the config is not valid, error will be returned instead.
46-
CreateResourceMetricsScraper(ctx context.Context, logger *zap.Logger, cfg Config) (scraperhelper.ResourceMetricsScraper, error)
46+
CreateResourceMetricsScraper(ctx context.Context, logger *zap.Logger, cfg Config) (scraperhelper.Scraper, error)
4747
}
4848

4949
// Config is the configuration of a scraper.

receiver/hostmetricsreceiver/internal/scraper/cpuscraper/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
4444
ctx context.Context,
4545
_ *zap.Logger,
4646
config internal.Config,
47-
) (scraperhelper.MetricsScraper, error) {
47+
) (scraperhelper.Scraper, error) {
4848
cfg := config.(*Config)
4949
s := newCPUScraper(ctx, cfg)
5050

receiver/hostmetricsreceiver/internal/scraper/diskscraper/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
4444
ctx context.Context,
4545
_ *zap.Logger,
4646
config internal.Config,
47-
) (scraperhelper.MetricsScraper, error) {
47+
) (scraperhelper.Scraper, error) {
4848
cfg := config.(*Config)
4949
s, err := newDiskScraper(ctx, cfg)
5050
if err != nil {

receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (f *Factory) CreateMetricsScraper(
4949
ctx context.Context,
5050
_ *zap.Logger,
5151
config internal.Config,
52-
) (scraperhelper.MetricsScraper, error) {
52+
) (scraperhelper.Scraper, error) {
5353
cfg := config.(*Config)
5454
s, err := newFileSystemScraper(ctx, cfg)
5555
if err != nil {

receiver/hostmetricsreceiver/internal/scraper/loadscraper/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
4444
ctx context.Context,
4545
logger *zap.Logger,
4646
config internal.Config,
47-
) (scraperhelper.MetricsScraper, error) {
47+
) (scraperhelper.Scraper, error) {
4848
cfg := config.(*Config)
4949
s := newLoadScraper(ctx, logger, cfg)
5050

receiver/hostmetricsreceiver/internal/scraper/memoryscraper/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
4444
ctx context.Context,
4545
_ *zap.Logger,
4646
config internal.Config,
47-
) (scraperhelper.MetricsScraper, error) {
47+
) (scraperhelper.Scraper, error) {
4848
cfg := config.(*Config)
4949
s := newMemoryScraper(ctx, cfg)
5050

receiver/hostmetricsreceiver/internal/scraper/networkscraper/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
4444
ctx context.Context,
4545
_ *zap.Logger,
4646
config internal.Config,
47-
) (scraperhelper.MetricsScraper, error) {
47+
) (scraperhelper.Scraper, error) {
4848
cfg := config.(*Config)
4949
s, err := newNetworkScraper(ctx, cfg)
5050
if err != nil {

0 commit comments

Comments
 (0)