Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6aac7ae
config and limiter extension
jmacd Mar 20, 2025
2a1818d
config and middleware extension
jmacd Mar 20, 2025
b519182
add limiter skeleton
jmacd Mar 20, 2025
4434dac
add request limiter calls
jmacd Mar 21, 2025
25a385c
At the two locations where I have written @@@, I realize that I have …
jmacd Mar 21, 2025
8fe3941
split rate limiter, resource limiter
jmacd Mar 21, 2025
84838fc
todos
jmacd Mar 21, 2025
cdc6698
skeleton ratelimiterextension
jmacd Mar 21, 2025
88b203b
rate limiter outline
jmacd Mar 22, 2025
b602b18
HTTP client and server network bytes
jmacd Mar 24, 2025
cec3306
add limiter provider
jmacd Mar 24, 2025
060c756
Follow 17002
jmacd Mar 24, 2025
ee8dd47
Let rate limiter accept request resource-weighted limits
jmacd Mar 24, 2025
9369495
Merge branch 'main' of github.com:open-telemetry/opentelemetry-collec…
jmacd Mar 28, 2025
af51711
middleware config: more direct, extension naming more consistent
jmacd Mar 28, 2025
2c3a406
sketch grpc middleware
jmacd Mar 28, 2025
8ca49f0
extend confighttp and configgrpc
jmacd Mar 28, 2025
1fa405e
memory limiter
jmacd Mar 28, 2025
e125898
multi limiter provider
jmacd Mar 28, 2025
a6e6b17
OTLP receiver limiter
jmacd Mar 28, 2025
10cfbb3
add direct grpc limiter support (this could be a helper)
jmacd Mar 28, 2025
1f4a724
add direct http limiter support (this could be a helper)
jmacd Mar 28, 2025
ee0c2e0
merge
jmacd Apr 1, 2025
6d194a8
factor limiterhelper
jmacd Apr 1, 2025
9f66533
remove/rename
jmacd Apr 1, 2025
0e30a3a
Use non-nil ReleaseFunc everywhere
jmacd Apr 2, 2025
70296f0
Merge branch 'main' of github.com:open-telemetry/opentelemetry-collec…
jmacd Apr 14, 2025
a79da5f
Merge branch 'main' of github.com:jmacd/opentelemetry-collector into …
jmacd Apr 14, 2025
854108f
update from main
jmacd Apr 21, 2025
fb5b8b9
Merge branch 'main' of github.com:open-telemetry/opentelemetry-collec…
jmacd Apr 21, 2025
fc7ba55
hide the option and config, eliminate the limiterhelper.Consumer
jmacd Apr 21, 2025
ea8152a
wip
jmacd Apr 21, 2025
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
6 changes: 6 additions & 0 deletions cmd/otelcorecol/builder-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
- gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.124.0
extensions:
- gomod: go.opentelemetry.io/collector/extension/memorylimiterextension v0.124.0
- gomod: go.opentelemetry.io/collector/extension/limitermiddlewareextension v0.124.0

Check warning on line 25 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (limitermiddlewareextension)
- gomod: go.opentelemetry.io/collector/extension/ratelimiterextension v0.124.0

Check warning on line 26 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (ratelimiterextension)
- gomod: go.opentelemetry.io/collector/extension/zpagesextension v0.124.0
processors:
- gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.124.0
Expand All @@ -46,6 +48,7 @@
- go.opentelemetry.io/collector/config/configcompression => ../../config/configcompression
- go.opentelemetry.io/collector/config/configgrpc => ../../config/configgrpc
- go.opentelemetry.io/collector/config/confighttp => ../../config/confighttp
- go.opentelemetry.io/collector/config/configlimiter => ../../config/configlimiter

Check warning on line 51 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (configlimiter)

Check warning on line 51 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (configlimiter)
- go.opentelemetry.io/collector/config/configmiddleware => ../../config/configmiddleware
- go.opentelemetry.io/collector/config/confignet => ../../config/confignet
- go.opentelemetry.io/collector/config/configopaque => ../../config/configopaque
Expand Down Expand Up @@ -80,10 +83,13 @@
- go.opentelemetry.io/collector/extension/extensionauth => ../../extension/extensionauth
- go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest => ../../extension/extensionauth/extensionauthtest
- go.opentelemetry.io/collector/extension/extensioncapabilities => ../../extension/extensioncapabilities
- go.opentelemetry.io/collector/extension/extensionlimiter => ../../extension/extensionlimiter

Check warning on line 86 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (extensionlimiter)

Check warning on line 86 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (extensionlimiter)
- go.opentelemetry.io/collector/extension/extensionmiddleware => ../../extension/extensionmiddleware
- go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest => ../../extension/extensionmiddleware/extensionmiddlewaretest
- go.opentelemetry.io/collector/extension/extensiontest => ../../extension/extensiontest
- go.opentelemetry.io/collector/extension/memorylimiterextension => ../../extension/memorylimiterextension
- go.opentelemetry.io/collector/extension/ratelimiterextension => ../../extension/ratelimiterextension

Check warning on line 91 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (ratelimiterextension)

Check warning on line 91 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (ratelimiterextension)
- go.opentelemetry.io/collector/extension/limitermiddlewareextension => ../../extension/limitermiddlewareextension

Check warning on line 92 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (limitermiddlewareextension)

Check warning on line 92 in cmd/otelcorecol/builder-config.yaml

View workflow job for this annotation

GitHub Actions / spell-check

Unknown word (limitermiddlewareextension)
- go.opentelemetry.io/collector/extension/xextension => ../../extension/xextension
- go.opentelemetry.io/collector/extension/zpagesextension => ../../extension/zpagesextension
- go.opentelemetry.io/collector/featuregate => ../../featuregate
Expand Down
6 changes: 6 additions & 0 deletions cmd/otelcorecol/components.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion cmd/otelcorecol/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module go.opentelemetry.io/collector/cmd/otelcorecol

go 1.23.0

toolchain go1.23.8
toolchain go1.24.1

require (
go.opentelemetry.io/collector/component v1.30.0
Expand All @@ -22,7 +22,9 @@ require (
go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0
go.opentelemetry.io/collector/exporter/otlphttpexporter v0.124.0
go.opentelemetry.io/collector/extension v1.30.0
go.opentelemetry.io/collector/extension/limitermiddlewareextension v0.124.0
go.opentelemetry.io/collector/extension/memorylimiterextension v0.124.0
go.opentelemetry.io/collector/extension/ratelimiterextension v0.124.0
go.opentelemetry.io/collector/extension/zpagesextension v0.124.0
go.opentelemetry.io/collector/otelcol v0.124.0
go.opentelemetry.io/collector/processor v1.30.0
Expand Down Expand Up @@ -89,6 +91,7 @@ require (
go.opentelemetry.io/collector/config/configcompression v1.30.0 // indirect
go.opentelemetry.io/collector/config/configgrpc v0.124.0 // indirect
go.opentelemetry.io/collector/config/confighttp v0.124.0 // indirect
go.opentelemetry.io/collector/config/configlimiter v0.0.0-00010101000000-000000000000 // indirect
go.opentelemetry.io/collector/config/configmiddleware v0.0.0-00010101000000-000000000000 // indirect
go.opentelemetry.io/collector/config/confignet v1.30.0 // indirect
go.opentelemetry.io/collector/config/configopaque v1.30.0 // indirect
Expand All @@ -108,6 +111,7 @@ require (
go.opentelemetry.io/collector/exporter/xexporter v0.124.0 // indirect
go.opentelemetry.io/collector/extension/extensionauth v1.30.0 // indirect
go.opentelemetry.io/collector/extension/extensioncapabilities v0.124.0 // indirect
go.opentelemetry.io/collector/extension/extensionlimiter v0.0.0-00010101000000-000000000000 // indirect
go.opentelemetry.io/collector/extension/extensionmiddleware v1.30.0 // indirect
go.opentelemetry.io/collector/extension/extensiontest v0.124.0 // indirect
go.opentelemetry.io/collector/extension/xextension v0.124.0 // indirect
Expand Down Expand Up @@ -188,6 +192,8 @@ replace go.opentelemetry.io/collector/config/configgrpc => ../../config/configgr

replace go.opentelemetry.io/collector/config/confighttp => ../../config/confighttp

replace go.opentelemetry.io/collector/config/configlimiter => ../../config/configlimiter

replace go.opentelemetry.io/collector/config/configmiddleware => ../../config/configmiddleware

replace go.opentelemetry.io/collector/config/confignet => ../../config/confignet
Expand Down Expand Up @@ -256,6 +262,8 @@ replace go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest

replace go.opentelemetry.io/collector/extension/extensioncapabilities => ../../extension/extensioncapabilities

replace go.opentelemetry.io/collector/extension/extensionlimiter => ../../extension/extensionlimiter

replace go.opentelemetry.io/collector/extension/extensionmiddleware => ../../extension/extensionmiddleware

replace go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest => ../../extension/extensionmiddleware/extensionmiddlewaretest
Expand All @@ -264,6 +272,10 @@ replace go.opentelemetry.io/collector/extension/extensiontest => ../../extension

replace go.opentelemetry.io/collector/extension/memorylimiterextension => ../../extension/memorylimiterextension

replace go.opentelemetry.io/collector/extension/ratelimiterextension => ../../extension/ratelimiterextension

replace go.opentelemetry.io/collector/extension/limitermiddlewareextension => ../../extension/limitermiddlewareextension

replace go.opentelemetry.io/collector/extension/xextension => ../../extension/xextension

replace go.opentelemetry.io/collector/extension/zpagesextension => ../../extension/zpagesextension
Expand Down
1 change: 1 addition & 0 deletions config/configlimiter/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include ../../Makefile.Common
42 changes: 42 additions & 0 deletions config/configlimiter/configlimiter.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

// Package configlimiter implements the configuration settings to
// apply rate limiting on incoming requests, and allows
// components to configure rate limiting behavior.
package configlimiter // import "go.opentelemetry.io/collector/config/configlimiter"

import (
"context"
"errors"
"fmt"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/extension/extensionlimiter"
)

var (
errLimiterNotFound = errors.New("limiter not found")
errNotLimiter = errors.New("requested extension is not a limiter")
)

// Config defines the rate limiting settings for a component.
type Config struct {
// ID specifies the name of the extension to use in order to apply rate limiting.
ID component.ID `mapstructure:"id,omitempty"`
}

// GetProvider attempts to select the appropriate extensionlimiter.Provider from the list of extensions,
// based on the requested extension name. If a limiter is not found, an error is returned.
// Callers will use the returned Provider to get access to the specific rate- and
// resource-limiter weights they are capable of limiting.
func (c Config) GetProvider(_ context.Context, extensions map[component.ID]component.Component) (extensionlimiter.Provider, error) {
if ext, found := extensions[c.ID]; found {
if limiter, ok := ext.(extensionlimiter.Provider); ok {
return limiter, nil
}
return nil, errNotLimiter
}

return nil, fmt.Errorf("failed to resolve limiter provider %q: %w", c.ID, errLimiterNotFound)
}
60 changes: 60 additions & 0 deletions config/configlimiter/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
module go.opentelemetry.io/collector/config/configlimiter

go 1.23.0

require (
go.opentelemetry.io/collector/component v1.30.0
go.opentelemetry.io/collector/extension/extensionlimiter v0.0.0-00010101000000-000000000000
)

require (
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/collector/featuregate v1.30.0 // indirect
go.opentelemetry.io/collector/internal/telemetry v0.124.0 // indirect
go.opentelemetry.io/collector/pdata v1.30.0 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/log v0.11.0 // indirect
go.opentelemetry.io/otel/metric v1.35.0 // indirect
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
go.opentelemetry.io/otel/trace v1.35.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/net v0.39.0 // indirect
golang.org/x/sys v0.32.0 // indirect
golang.org/x/text v0.24.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/grpc v1.71.1 // indirect
google.golang.org/protobuf v1.36.6 // indirect
)

replace go.opentelemetry.io/collector/component => ../../component

replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry

replace go.opentelemetry.io/collector/extension/extensionlimiter => ../../extension/extensionlimiter

replace go.opentelemetry.io/collector/pdata => ../../pdata

replace go.opentelemetry.io/collector/pipeline => ../../pipeline

replace go.opentelemetry.io/collector/featuregate => ../../featuregate

replace go.opentelemetry.io/collector/extension/extensionmiddleware => ../../extension/extensionmiddleware

replace go.opentelemetry.io/collector/pdata/pprofile => ../../pdata/pprofile

replace go.opentelemetry.io/collector/consumer => ../../consumer

replace go.opentelemetry.io/collector/config/configmiddleware => ../configmiddleware

replace go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest => ../../extension/extensionmiddleware/extensionmiddlewaretest

replace go.opentelemetry.io/collector/consumer/xconsumer => ../../consumer/xconsumer

replace go.opentelemetry.io/collector/extension => ../../extension
86 changes: 86 additions & 0 deletions config/configlimiter/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading