Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions receiver/hostmetricsreceiver/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func createAddScraperOptions(
}

if ok {
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddMetricsScraper(hostMetricsScraper))
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddScraper(hostMetricsScraper))
continue
}

Expand All @@ -134,7 +134,7 @@ func createAddScraperOptions(
}

if ok {
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddResourceMetricsScraper(resourceMetricsScraper))
scraperControllerOptions = append(scraperControllerOptions, scraperhelper.AddScraper(resourceMetricsScraper))
continue
}

Expand All @@ -144,7 +144,7 @@ func createAddScraperOptions(
return scraperControllerOptions, nil
}

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) {
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) {
factory := factories[key]
if factory == nil {
ok = false
Expand All @@ -156,7 +156,7 @@ func createHostMetricsScraper(ctx context.Context, logger *zap.Logger, key strin
return
}

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) {
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) {
factory := factories[key]
if factory == nil {
ok = false
Expand Down
16 changes: 8 additions & 8 deletions receiver/hostmetricsreceiver/hostmetrics_receiver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,32 +213,32 @@ type mockFactory struct{ mock.Mock }
type mockScraper struct{ mock.Mock }

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

func (m *mockScraper) ID() config.ComponentID { return config.NewID("") }
func (m *mockScraper) Start(context.Context, component.Host) error { return nil }
func (m *mockScraper) Shutdown(context.Context) error { return nil }
func (m *mockScraper) Scrape(context.Context, config.ComponentID) (pdata.MetricSlice, error) {
return pdata.NewMetricSlice(), errors.New("err1")
func (m *mockScraper) Scrape(context.Context, config.ComponentID) (pdata.Metrics, error) {
return pdata.NewMetrics(), errors.New("err1")
}

type mockResourceFactory struct{ mock.Mock }
type mockResourceScraper struct{ mock.Mock }

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

func (m *mockResourceScraper) ID() config.ComponentID { return config.NewID("") }
func (m *mockResourceScraper) Start(context.Context, component.Host) error { return nil }
func (m *mockResourceScraper) Shutdown(context.Context) error { return nil }
func (m *mockResourceScraper) Scrape(context.Context, config.ComponentID) (pdata.ResourceMetricsSlice, error) {
return pdata.NewResourceMetricsSlice(), errors.New("err2")
func (m *mockResourceScraper) Scrape(context.Context, config.ComponentID) (pdata.Metrics, error) {
return pdata.NewMetrics(), errors.New("err2")
}

func TestGatherMetrics_ScraperKeyConfigError(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions receiver/hostmetricsreceiver/internal/scraper.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type ScraperFactory interface {

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

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

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

// Config is the configuration of a scraper.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s := newCPUScraper(ctx, cfg)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s, err := newDiskScraper(ctx, cfg)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s, err := newFileSystemScraper(ctx, cfg)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
logger *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s := newLoadScraper(ctx, logger, cfg)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s := newMemoryScraper(ctx, cfg)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s, err := newNetworkScraper(ctx, cfg)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s := newPagingScraper(ctx, cfg)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (f *Factory) CreateMetricsScraper(
ctx context.Context,
_ *zap.Logger,
config internal.Config,
) (scraperhelper.MetricsScraper, error) {
) (scraperhelper.Scraper, error) {
cfg := config.(*Config)
s := newProcessesScraper(ctx, cfg)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func (f *Factory) CreateResourceMetricsScraper(
_ context.Context,
_ *zap.Logger,
cfg internal.Config,
) (scraperhelper.ResourceMetricsScraper, error) {
) (scraperhelper.Scraper, error) {
if runtime.GOOS != "linux" && runtime.GOOS != "windows" {
return nil, errors.New("process scraper only available on Linux or Windows")
}
Expand Down
45 changes: 21 additions & 24 deletions receiver/scraperhelper/scraper.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,28 +37,15 @@ type baseSettings struct {
// ScraperOption apply changes to internal options.
type ScraperOption func(*baseSettings)

// BaseScraper is the base interface for scrapers.
type BaseScraper interface {
// Scraper is the base interface for scrapers.
type Scraper interface {
component.Component

// ID returns the scraper id.
ID() config.ComponentID
Scrape(context.Context, config.ComponentID) (pdata.Metrics, error)
}

// MetricsScraper is an interface for scrapers that scrape metrics.
type MetricsScraper interface {
BaseScraper
Scrape(context.Context, config.ComponentID) (pdata.MetricSlice, error)
}

// ResourceMetricsScraper is an interface for scrapers that scrape resource metrics.
type ResourceMetricsScraper interface {
BaseScraper
Scrape(context.Context, config.ComponentID) (pdata.ResourceMetricsSlice, error)
}

var _ BaseScraper = (*baseScraper)(nil)

type baseScraper struct {
component.Component
id config.ComponentID
Expand Down Expand Up @@ -87,7 +74,7 @@ type metricsScraper struct {
ScrapeMetrics
}

var _ MetricsScraper = (*metricsScraper)(nil)
var _ Scraper = (*metricsScraper)(nil)

// NewMetricsScraper creates a Scraper that calls Scrape at the specified
// collection interval, reports observability information, and passes the
Expand All @@ -96,7 +83,7 @@ func NewMetricsScraper(
name string,
scrape ScrapeMetrics,
options ...ScraperOption,
) MetricsScraper {
) Scraper {
set := &baseSettings{}
for _, op := range options {
op(set)
Expand All @@ -113,7 +100,7 @@ func NewMetricsScraper(
return ms
}

func (ms metricsScraper) Scrape(ctx context.Context, receiverID config.ComponentID) (pdata.MetricSlice, error) {
func (ms metricsScraper) Scrape(ctx context.Context, receiverID config.ComponentID) (pdata.Metrics, error) {
ctx = obsreport.ScraperContext(ctx, receiverID, ms.ID())
scrp := obsreport.NewScraper(obsreport.ScraperSettings{ReceiverID: receiverID, Scraper: ms.ID()})
ctx = scrp.StartMetricsOp(ctx)
Expand All @@ -122,16 +109,20 @@ func (ms metricsScraper) Scrape(ctx context.Context, receiverID config.Component
if err == nil {
count = metrics.Len()
}
md := pdata.NewMetrics()
if metrics.Len() > 0 {
metrics.MoveAndAppendTo(md.ResourceMetrics().AppendEmpty().InstrumentationLibraryMetrics().AppendEmpty().Metrics())
}
scrp.EndMetricsOp(ctx, count, err)
return metrics, err
return md, err
}

type resourceMetricsScraper struct {
baseScraper
ScrapeResourceMetrics
}

var _ ResourceMetricsScraper = (*resourceMetricsScraper)(nil)
var _ Scraper = (*resourceMetricsScraper)(nil)

// NewResourceMetricsScraper creates a Scraper that calls Scrape at the
// specified collection interval, reports observability information, and
Expand All @@ -140,7 +131,7 @@ func NewResourceMetricsScraper(
id config.ComponentID,
scrape ScrapeResourceMetrics,
options ...ScraperOption,
) ResourceMetricsScraper {
) Scraper {
set := &baseSettings{}
for _, op := range options {
op(set)
Expand All @@ -157,7 +148,7 @@ func NewResourceMetricsScraper(
return rms
}

func (rms resourceMetricsScraper) Scrape(ctx context.Context, receiverID config.ComponentID) (pdata.ResourceMetricsSlice, error) {
func (rms resourceMetricsScraper) Scrape(ctx context.Context, receiverID config.ComponentID) (pdata.Metrics, error) {
ctx = obsreport.ScraperContext(ctx, receiverID, rms.ID())
scrp := obsreport.NewScraper(obsreport.ScraperSettings{ReceiverID: receiverID, Scraper: rms.ID()})
ctx = scrp.StartMetricsOp(ctx)
Expand All @@ -166,8 +157,14 @@ func (rms resourceMetricsScraper) Scrape(ctx context.Context, receiverID config.
if err == nil {
count = metricCount(resourceMetrics)
}

md := pdata.NewMetrics()
if resourceMetrics.Len() > 0 {
resourceMetrics.MoveAndAppendTo(md.ResourceMetrics())
}

scrp.EndMetricsOp(ctx, count, err)
return resourceMetrics, err
return md, err
}

func metricCount(resourceMetrics pdata.ResourceMetricsSlice) int {
Expand Down
Loading