Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add logs scraper in factory #11822

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
90a3adf
Add scraper for logs
sincejune Dec 4, 2024
fe03c9c
Update
sincejune Dec 4, 2024
6e889ab
Update
sincejune Dec 4, 2024
3d60d14
Fix
sincejune Dec 4, 2024
092e62a
Merge branch 'main' into add-logs-scraper
sincejune Dec 4, 2024
b52732a
Merge branch 'main' into add-logs-scraper
sincejune Dec 8, 2024
ea35198
Update
sincejune Dec 8, 2024
9bc8cb6
Add logs scraper in the factory
sincejune Dec 8, 2024
b1d1de0
Update
sincejune Dec 8, 2024
92156f1
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 10, 2024
0124c61
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 10, 2024
b33cec6
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 10, 2024
ed603a1
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 10, 2024
ce9b96b
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 10, 2024
d64b454
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 11, 2024
fc59d50
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 11, 2024
03263de
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 11, 2024
33eca67
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 11, 2024
33c942f
Update
sincejune Dec 11, 2024
a4345c1
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 12, 2024
365f9cf
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 12, 2024
5f15faa
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 13, 2024
d0e4fe0
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 13, 2024
ea10b91
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 14, 2024
f0dfd93
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 14, 2024
f9325fe
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 15, 2024
f4ec5a9
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 15, 2024
db46e30
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 16, 2024
b518e4d
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 16, 2024
367765b
Update
sincejune Dec 17, 2024
5f88901
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 17, 2024
06c4513
Update
sincejune Dec 17, 2024
14195ff
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 17, 2024
0def70f
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 18, 2024
46cd15d
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 18, 2024
6c14808
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 19, 2024
0392be8
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 19, 2024
94f6762
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 21, 2024
3d31da9
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 22, 2024
3dbb083
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 27, 2024
f13709c
Merge branch 'main' into add-logs-scraper-in-factory
sincejune Dec 28, 2024
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
25 changes: 25 additions & 0 deletions .chloggen/add-logs-scraper-in-factory.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Use this changelog template to create an entry for release notes.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: enhancement

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: scraper

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Add logs scraper in scraper factory

# One or more tracking issues or pull requests related to the change
issues: [11822]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext:

# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: [api]
34 changes: 33 additions & 1 deletion scraper/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,19 @@ type Factory interface {
// CreateMetrics creates a Metrics scraper based on this config.
// If the scraper type does not support metrics,
// this function returns the error [pipeline.ErrSignalNotSupported].
// Implementers can assume `next` is never nil.
CreateMetrics(ctx context.Context, set Settings, cfg component.Config) (Metrics, error)

// CreateLogs creates a Logs scraper based on this config.
// If the scraper type does not support logs,
// this function returns the error [pipeline.ErrSignalNotSupported].
CreateLogs(ctx context.Context, set Settings, cfg component.Config) (Logs, error)

// MetricsStability gets the stability level of the Metrics scraper.
MetricsStability() component.StabilityLevel

// LogsStability gets the stability level of the Logs scraper.
LogsStability() component.StabilityLevel

unexportedFactoryFunc()
}

Expand All @@ -60,7 +67,9 @@ type factory struct {
cfgType component.Type
component.CreateDefaultConfigFunc
CreateMetricsFunc
CreateLogsFunc
metricsStabilityLevel component.StabilityLevel
logsStabilityLevel component.StabilityLevel
}

func (f *factory) Type() component.Type {
Expand All @@ -73,9 +82,16 @@ func (f *factory) MetricsStability() component.StabilityLevel {
return f.metricsStabilityLevel
}

func (f *factory) LogsStability() component.StabilityLevel {
return f.logsStabilityLevel
}

// CreateMetricsFunc is the equivalent of Factory.CreateMetrics().
type CreateMetricsFunc func(context.Context, Settings, component.Config) (Metrics, error)

// CreateLogsFunc is the equivalent of Factory.CreateLogs().
type CreateLogsFunc func(context.Context, Settings, component.Config) (Logs, error)

// CreateMetrics implements Factory.CreateMetrics.
func (f CreateMetricsFunc) CreateMetrics(ctx context.Context, set Settings, cfg component.Config) (Metrics, error) {
if f == nil {
Expand All @@ -84,6 +100,14 @@ func (f CreateMetricsFunc) CreateMetrics(ctx context.Context, set Settings, cfg
return f(ctx, set, cfg)
}

// CreateLogs implements Factory.CreateLogs.
func (f CreateLogsFunc) CreateLogs(ctx context.Context, set Settings, cfg component.Config) (Logs, error) {
if f == nil {
return nil, pipeline.ErrSignalNotSupported
}
return f(ctx, set, cfg)
}

// WithMetrics overrides the default "error not supported" implementation for CreateMetrics and the default "undefined" stability level.
func WithMetrics(createMetrics CreateMetricsFunc, sl component.StabilityLevel) FactoryOption {
return factoryOptionFunc(func(o *factory) {
Expand All @@ -92,6 +116,14 @@ func WithMetrics(createMetrics CreateMetricsFunc, sl component.StabilityLevel) F
})
}

// WithLogs overrides the default "error not supported" implementation for CreateLogs and the default "undefined" stability level.
func WithLogs(createLogs CreateLogsFunc, sl component.StabilityLevel) FactoryOption {
return factoryOptionFunc(func(o *factory) {
o.logsStabilityLevel = sl
o.CreateLogsFunc = createLogs
})
}

// NewFactory returns a Factory.
func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefaultConfigFunc, options ...FactoryOption) Factory {
f := &factory{
Expand Down
12 changes: 11 additions & 1 deletion scraper/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ func TestNewFactory(t *testing.T) {
assert.EqualValues(t, &defaultCfg, f.CreateDefaultConfig())
_, err := f.CreateMetrics(context.Background(), nopSettings(), &defaultCfg)
require.ErrorIs(t, err, pipeline.ErrSignalNotSupported)
_, err = f.CreateLogs(context.Background(), nopSettings(), &defaultCfg)
require.ErrorIs(t, err, pipeline.ErrSignalNotSupported)
}

func TestNewFactoryWithOptions(t *testing.T) {
Expand All @@ -41,13 +43,17 @@ func TestNewFactoryWithOptions(t *testing.T) {
f := NewFactory(
testType,
func() component.Config { return &defaultCfg },
WithMetrics(createMetrics, component.StabilityLevelAlpha))
WithMetrics(createMetrics, component.StabilityLevelAlpha),
WithLogs(createLogs, component.StabilityLevelAlpha))
assert.EqualValues(t, testType, f.Type())
assert.EqualValues(t, &defaultCfg, f.CreateDefaultConfig())

assert.Equal(t, component.StabilityLevelAlpha, f.MetricsStability())
assert.Equal(t, component.StabilityLevelAlpha, f.LogsStability())
_, err := f.CreateMetrics(context.Background(), Settings{}, &defaultCfg)
require.NoError(t, err)
_, err = f.CreateLogs(context.Background(), Settings{}, &defaultCfg)
require.NoError(t, err)
}

func TestMakeFactoryMap(t *testing.T) {
Expand Down Expand Up @@ -90,3 +96,7 @@ func TestMakeFactoryMap(t *testing.T) {
func createMetrics(context.Context, Settings, component.Config) (Metrics, error) {
return NewMetrics(newTestScrapeMetricsFunc(nil))
}

func createLogs(context.Context, Settings, component.Config) (Logs, error) {
return NewLogs(newTestScrapeLogsFunc(nil))
}
Loading