Skip to content

Commit 9ba0f77

Browse files
committed
Update OTel dependencies
1 parent 3be6970 commit 9ba0f77

File tree

5 files changed

+83
-87
lines changed

5 files changed

+83
-87
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ require (
6969
go.opentelemetry.io/collector/receiver v1.30.0
7070
go.opentelemetry.io/collector/receiver/otlpreceiver v0.124.0
7171
go.opentelemetry.io/collector/receiver/receivertest v0.124.0
72+
go.opentelemetry.io/collector/scraper v0.124.0
7273
go.opentelemetry.io/collector/scraper/scraperhelper v0.124.0
7374
go.opentelemetry.io/otel v1.35.0
7475
go.uber.org/goleak v1.3.0
@@ -262,7 +263,6 @@ require (
262263
go.opentelemetry.io/collector/processor/xprocessor v0.124.0 // indirect
263264
go.opentelemetry.io/collector/receiver/receiverhelper v0.124.0 // indirect
264265
go.opentelemetry.io/collector/receiver/xreceiver v0.124.0 // indirect
265-
go.opentelemetry.io/collector/scraper v0.124.0 // indirect
266266
go.opentelemetry.io/collector/semconv v0.124.0 // indirect
267267
go.opentelemetry.io/collector/service v0.124.0 // indirect
268268
go.opentelemetry.io/collector/service/hostcapabilities v0.124.0 // indirect

internal/collector/nginxossreceiver/factory.go

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,29 @@ import (
99
"context"
1010
"errors"
1111

12+
"go.opentelemetry.io/collector/scraper"
13+
1214
"github.com/nginx/agent/v3/internal/collector/nginxossreceiver/internal/config"
1315
"github.com/nginx/agent/v3/internal/collector/nginxossreceiver/internal/metadata"
1416
"github.com/nginx/agent/v3/internal/collector/nginxossreceiver/internal/scraper/accesslog"
1517
"github.com/nginx/agent/v3/internal/collector/nginxossreceiver/internal/scraper/stubstatus"
1618
"go.opentelemetry.io/collector/component"
1719
"go.opentelemetry.io/collector/consumer"
1820
"go.opentelemetry.io/collector/receiver"
21+
"go.opentelemetry.io/collector/scraper/scraperhelper"
1922
)
2023

2124
// nolint: ireturn
2225
func NewFactory() receiver.Factory {
23-
stubStatusOption := receiver.WithMetrics(createStubStatusReceiver, metadata.MetricsStability)
24-
accessLogOptions := receiver.WithMetrics(createAccessLogReceiver, metadata.MetricsStability)
25-
2626
return receiver.NewFactory(
2727
metadata.Type,
2828
config.CreateDefaultConfig,
29-
stubStatusOption,
30-
accessLogOptions,
29+
receiver.WithMetrics(createMetrics, metadata.MetricsStability),
3130
)
3231
}
3332

3433
// nolint: ireturn
35-
func createStubStatusReceiver(
34+
func createMetrics(
3635
_ context.Context,
3736
params receiver.Settings,
3837
rConf component.Config,
@@ -43,20 +42,39 @@ func createStubStatusReceiver(
4342
return nil, errors.New("cast to metrics receiver config")
4443
}
4544

46-
return stubstatus.NewScraper(params, cfg), nil
47-
}
45+
var controllers []scraperhelper.ControllerOption
4846

49-
// nolint: ireturn
50-
func createAccessLogReceiver(
51-
_ context.Context,
52-
params receiver.Settings,
53-
rConf component.Config,
54-
cons consumer.Metrics,
55-
) (receiver.Metrics, error) {
56-
cfg, ok := rConf.(*config.Config)
57-
if !ok {
58-
return nil, errors.New("cast to metrics receiver config")
47+
stubStatusScraper := stubstatus.NewScraper(params, cfg)
48+
stubStatusMetrics, stubStatusMetricsError := scraper.NewMetrics(
49+
stubStatusScraper.Scrape,
50+
scraper.WithStart(stubStatusScraper.Start),
51+
scraper.WithShutdown(stubStatusScraper.Shutdown),
52+
)
53+
if stubStatusMetricsError != nil {
54+
return nil, stubStatusMetricsError
5955
}
6056

61-
return accesslog.NewScraper(params, cfg)
57+
controllers = append(controllers, scraperhelper.AddScraper(metadata.Type, stubStatusMetrics))
58+
59+
if len(cfg.AccessLogs) > 0 {
60+
accessLogScraper := accesslog.NewScraper(params, cfg)
61+
62+
accessLogMetrics, accessLogMetricsError := scraper.NewMetrics(
63+
accessLogScraper.Scrape,
64+
scraper.WithStart(accessLogScraper.Start),
65+
scraper.WithShutdown(accessLogScraper.Shutdown),
66+
)
67+
if accessLogMetricsError != nil {
68+
return nil, accessLogMetricsError
69+
}
70+
71+
controllers = append(controllers, scraperhelper.AddScraper(metadata.Type, accessLogMetrics))
72+
}
73+
74+
return scraperhelper.NewMetricsController(
75+
&cfg.ControllerConfig,
76+
params,
77+
cons,
78+
controllers...,
79+
)
6280
}

internal/collector/nginxossreceiver/factory_test.go

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import (
1010
"testing"
1111
"time"
1212

13-
"go.opentelemetry.io/collector/component"
14-
1513
"github.com/stretchr/testify/require"
1614
"go.opentelemetry.io/collector/component/componenttest"
1715
"go.opentelemetry.io/collector/consumer/consumertest"
@@ -55,25 +53,3 @@ func TestCreateMetricsReceiver(t *testing.T) {
5553
require.NoError(t, err)
5654
require.NotNil(t, metricsReceiver)
5755
}
58-
59-
func TestCreateStubStatusReceiver(t *testing.T) {
60-
metrics, err := createStubStatusReceiver(
61-
context.Background(),
62-
receivertest.NewNopSettings(component.Type{}),
63-
NewFactory().CreateDefaultConfig(),
64-
consumertest.NewNop(),
65-
)
66-
require.NoError(t, err)
67-
require.NotNil(t, metrics)
68-
}
69-
70-
func TestCreateAccessLogReceiver(t *testing.T) {
71-
metrics, err := createAccessLogReceiver(
72-
context.Background(),
73-
receivertest.NewNopSettings(component.Type{}),
74-
NewFactory().CreateDefaultConfig(),
75-
consumertest.NewNop(),
76-
)
77-
require.NoError(t, err)
78-
require.NotNil(t, metrics)
79-
}

internal/collector/nginxossreceiver/internal/scraper/accesslog/nginx_log_scraper.go

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,18 @@ const Percentage = 100
3636

3737
type (
3838
NginxLogScraper struct {
39-
outChan <-chan []*entry.Entry
40-
cfg *config.Config
41-
settings receiver.Settings
42-
logger *zap.Logger
43-
mb *metadata.MetricsBuilder
44-
rb *metadata.ResourceBuilder
45-
pipe *pipeline.DirectedPipeline
46-
wg *sync.WaitGroup
47-
cancel context.CancelFunc
48-
entries []*entry.Entry
49-
mut sync.Mutex
39+
outChan <-chan []*entry.Entry
40+
cfg *config.Config
41+
settings receiver.Settings
42+
logger *zap.Logger
43+
mb *metadata.MetricsBuilder
44+
rb *metadata.ResourceBuilder
45+
pipe *pipeline.DirectedPipeline
46+
wg *sync.WaitGroup
47+
cancel context.CancelFunc
48+
entries []*entry.Entry
49+
operators []operator.Config
50+
mut sync.Mutex
5051
}
5152

5253
NginxMetrics struct {
@@ -65,7 +66,7 @@ type (
6566
func NewScraper(
6667
settings receiver.Settings,
6768
cfg *config.Config,
68-
) (*NginxLogScraper, error) {
69+
) *NginxLogScraper {
6970
logger := settings.Logger
7071
logger.Info("Creating NGINX access log scraper")
7172

@@ -85,24 +86,17 @@ func NewScraper(
8586
}
8687

8788
nls := &NginxLogScraper{
88-
cfg: cfg,
89-
logger: logger,
90-
settings: settings,
91-
mb: mb,
92-
rb: rb,
93-
mut: sync.Mutex{},
94-
wg: &sync.WaitGroup{},
89+
cfg: cfg,
90+
logger: logger,
91+
settings: settings,
92+
mb: mb,
93+
rb: rb,
94+
mut: sync.Mutex{},
95+
wg: &sync.WaitGroup{},
96+
operators: operators,
9597
}
9698

97-
if len(operators) > 0 {
98-
var err error
99-
nls.pipe, err = nls.initStanzaPipeline(operators, settings.Logger)
100-
if err != nil {
101-
return nil, fmt.Errorf("init stanza pipeline: %w", err)
102-
}
103-
}
104-
105-
return nls, nil
99+
return nls
106100
}
107101

108102
func (nls *NginxLogScraper) ID() component.ID {
@@ -114,16 +108,20 @@ func (nls *NginxLogScraper) Start(parentCtx context.Context, _ component.Host) e
114108
ctx, cancel := context.WithCancel(parentCtx)
115109
nls.cancel = cancel
116110

117-
if nls.pipe != nil {
118-
err := nls.pipe.Start(storage.NewNopClient())
119-
if err != nil {
120-
return fmt.Errorf("stanza pipeline start: %w", err)
121-
}
111+
var err error
112+
nls.pipe, err = nls.initStanzaPipeline(nls.operators, nls.logger)
113+
if err != nil {
114+
return fmt.Errorf("init stanza pipeline: %w", err)
115+
}
122116

123-
nls.wg.Add(1)
124-
go nls.runConsumer(ctx)
117+
startError := nls.pipe.Start(storage.NewNopClient())
118+
if startError != nil {
119+
return fmt.Errorf("stanza pipeline start: %w", startError)
125120
}
126121

122+
nls.wg.Add(1)
123+
go nls.runConsumer(ctx)
124+
127125
return nil
128126
}
129127

@@ -208,11 +206,7 @@ func (nls *NginxLogScraper) Shutdown(_ context.Context) error {
208206
}
209207
nls.wg.Wait()
210208

211-
if nls.pipe != nil {
212-
return nls.pipe.Stop()
213-
}
214-
215-
return nil
209+
return nls.pipe.Stop()
216210
}
217211

218212
func (nls *NginxLogScraper) initStanzaPipeline(

internal/collector/nginxossreceiver/internal/scraper/accesslog/nginx_log_scraper_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,13 @@ func TestAccessLogScraper(t *testing.T) {
5555
},
5656
}
5757

58-
accessLogScraper, err := NewScraper(receivertest.NewNopSettings(component.Type{}), cfg)
59-
require.NoError(t, err)
58+
accessLogScraper := NewScraper(receivertest.NewNopSettings(component.Type{}), cfg)
6059
defer func() {
6160
shutdownError := accessLogScraper.Shutdown(ctx)
6261
require.NoError(t, shutdownError)
6362
}()
6463

65-
err = accessLogScraper.Start(context.Background(), componenttest.NewNopHost())
64+
err := accessLogScraper.Start(context.Background(), componenttest.NewNopHost())
6665
require.NoError(t, err)
6766

6867
go simulateLogging(t, testDataFilePath, testAccessLogPath, 250*time.Millisecond)
@@ -83,6 +82,15 @@ func TestAccessLogScraper(t *testing.T) {
8382
pmetrictest.IgnoreResourceAttributeValue("instance.id")))
8483
}
8584

85+
func TestAccessLogScraperError(t *testing.T) {
86+
t.Run("include config missing", func(tt *testing.T) {
87+
logScraper := NewScraper(receivertest.NewNopSettings(component.Type{}), &config.Config{})
88+
err := logScraper.Start(context.Background(), componenttest.NewNopHost())
89+
require.Error(tt, err)
90+
assert.Contains(tt, err.Error(), "init stanza pipeline")
91+
})
92+
}
93+
8694
// Copies the contents of one file to another with the given delay. Used to simulate writing log entries to a log file.
8795
// Reason for nolint: we must use testify's assert instead of require,
8896
// for more info see https://github.com/stretchr/testify/issues/772#issuecomment-945166599

0 commit comments

Comments
 (0)