diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b754161a2..1c97705997 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,10 @@ Main (unreleased) - Update gcp_exporter to a newer version with a patch for incorrect delta histograms (@kgeckhart) +- Fix an issue where the default values of some component's arguments change + whenever that argument is explicitly configured. This issue only affected a + small subset of arguments across 15 components. (@erikbaranowski, @rfratto) + ### Other changes - Clustering for Grafana Agent in Flow mode has graduated from beta to stable. @@ -108,7 +112,9 @@ v0.40.0 (2024-02-27) ### Deprecations -- Module components have been deprecated in favor of import and declare configuration blocks. These deprecated components will be removed in the next release. (@wildum) +- Module components have been deprecated in favor of import and declare configuration blocks. These deprecated components will be removed in a future release. (@wildum) + +- `prometheus.exporter.vsphere` has been deprecated in favor of `otelcol.receiver.vcenter`. This deprecated component will be removed in a future release. (@rfratto) ### Features diff --git a/docs/sources/reference/components/loki.source.kubernetes.md b/docs/sources/reference/components/loki.source.kubernetes.md index 1729137117..192a96cd3f 100644 --- a/docs/sources/reference/components/loki.source.kubernetes.md +++ b/docs/sources/reference/components/loki.source.kubernetes.md @@ -84,7 +84,7 @@ inside a `client` block. [authorization]: #authorization-block [oauth2]: #oauth2-block [tls_config]: #tls_config-block -[clustering]: #clustering-beta +[clustering]: #clustering-block ### client block @@ -133,7 +133,7 @@ Name | Type | Description {{< docs/shared lookup="reference/components/tls-config-block.md" source="alloy" version="" >}} -### clustering (beta) +### clustering block Name | Type | Description | Default | Required ----------|--------|-----------------------------------------------------|---------|--------- diff --git a/docs/sources/reference/components/loki.source.podlogs.md b/docs/sources/reference/components/loki.source.podlogs.md index 884e31beb2..42824171ce 100644 --- a/docs/sources/reference/components/loki.source.podlogs.md +++ b/docs/sources/reference/components/loki.source.podlogs.md @@ -143,7 +143,7 @@ For example, `client > basic_auth` refers to a `basic_auth` block defined inside [tls_config]: #tls_config-block [selector]: #selector-block [match_expression]: #match_expression-block -[clustering]: #clustering-beta +[clustering]: #clustering-block ### client block @@ -225,7 +225,7 @@ The `operator` argument must be one of the following strings: Both `selector` and `namespace_selector` can make use of multiple `match_expression` inner blocks which are treated as AND clauses. -### clustering (beta) +### clustering block Name | Type | Description | Default | Required ----------|--------|-----------------------------------------------------|---------|--------- diff --git a/docs/sources/reference/components/prometheus.operator.servicemonitors.md b/docs/sources/reference/components/prometheus.operator.servicemonitors.md index c62a7906d9..7137ac8a18 100644 --- a/docs/sources/reference/components/prometheus.operator.servicemonitors.md +++ b/docs/sources/reference/components/prometheus.operator.servicemonitors.md @@ -70,7 +70,7 @@ inside a `client` block. [match_expression]: #match_expression-block [rule]: #rule-block [scrape]: #scrape-block -[clustering]: #clustering-beta +[clustering]: #clustering-block ### client block @@ -159,7 +159,7 @@ The `operator` argument must be one of the following strings: If there are multiple `match_expressions` blocks inside of a `selector` block, they are combined together with AND clauses. -### clustering (beta) +### clustering block Name | Type | Description | Default | Required ---- | ---- | ----------- | ------- | -------- diff --git a/docs/sources/reference/components/prometheus.scrape.md b/docs/sources/reference/components/prometheus.scrape.md index 864c7e7d1e..533e07e475 100644 --- a/docs/sources/reference/components/prometheus.scrape.md +++ b/docs/sources/reference/components/prometheus.scrape.md @@ -113,7 +113,7 @@ an `oauth2` block. [authorization]: #authorization-block [oauth2]: #oauth2-block [tls_config]: #tls_config-block -[clustering]: #clustering-beta +[clustering]: #clustering-block ### basic_auth block @@ -131,7 +131,7 @@ an `oauth2` block. {{< docs/shared lookup="reference/components/tls-config-block.md" source="alloy" version="" >}} -### clustering (beta) +### clustering block Name | Type | Description | Default | Required ---- | ---- | ----------- | ------- | -------- diff --git a/docs/sources/reference/components/pyroscope.scrape.md b/docs/sources/reference/components/pyroscope.scrape.md index 094ec77e26..c921a5df8c 100644 --- a/docs/sources/reference/components/pyroscope.scrape.md +++ b/docs/sources/reference/components/pyroscope.scrape.md @@ -205,7 +205,7 @@ the defaults documented in [profile.mutex][] will be used. [profile.godeltaprof_block]: #profilegodeltaprof_block-block [profile.custom]: #profilecustom-block [pprof]: https://github.com/google/pprof/blob/main/doc/README.md -[clustering]: #clustering-beta +[clustering]: #clustering-block [fgprof]: https://github.com/felixge/fgprof [godeltaprof]: https://github.com/grafana/pyroscope-go/tree/main/godeltaprof @@ -384,7 +384,7 @@ Name | Type | Description | Default | Required When the `delta` argument is `true`, a `seconds` query parameter is automatically added to requests. The `seconds` used will be equal to `scrape_interval - 1`. -### clustering (beta) +### clustering block Name | Type | Description | Default | Required ---- | ---- | ----------- | ------- | -------- diff --git a/go.mod b/go.mod index 05ccc57cdb..b98da58626 100644 --- a/go.mod +++ b/go.mod @@ -617,7 +617,6 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.87.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.87.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.87.0 - github.com/prometheus/tsdb v0.10.0 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91 k8s.io/apimachinery v0.28.3 diff --git a/go.sum b/go.sum index 073ac65bff..5f14164a2b 100644 --- a/go.sum +++ b/go.sum @@ -560,7 +560,6 @@ github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsY github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/godo v1.1.1/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= github.com/digitalocean/godo v1.10.0/go.mod h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU= github.com/digitalocean/godo v1.104.1 h1:SZNxjAsskM/su0YW9P8Wx3gU0W1Z13b6tZlYNpl5BnA= @@ -2006,8 +2005,6 @@ github.com/prometheus/snmp_exporter v0.24.1/go.mod h1:j6uIGkdR0DXvKn7HJtSkeDj//U github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/prometheus/statsd_exporter v0.22.8 h1:Qo2D9ZzaQG+id9i5NYNGmbf1aa/KxKbB9aKfMS+Yib0= github.com/prometheus/statsd_exporter v0.22.8/go.mod h1:/DzwbTEaFTE0Ojz5PqcSk6+PFHOPWGxdXVr6yC8eFOM= -github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic= -github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= diff --git a/internal/component/all/all_test.go b/internal/component/all/all_test.go new file mode 100644 index 0000000000..bbb3d205f8 --- /dev/null +++ b/internal/component/all/all_test.go @@ -0,0 +1,176 @@ +package all + +import ( + "fmt" + "reflect" + "testing" + + "github.com/grafana/agent/internal/component" + "github.com/grafana/river" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// TestSetDefault_NoPointerReuse ensures that calls to SetDefault do not re-use +// pointers. The test iterates through all registered components, and then +// recursively traverses through its Arguments type to guarantee that no two +// calls to SetDefault result in pointer reuse. +// +// Nested types that also implement river.Defaulter are also checked. +func TestSetDefault_NoPointerReuse(t *testing.T) { + allComponents := component.AllNames() + for _, componentName := range allComponents { + reg, ok := component.Get(componentName) + require.True(t, ok, "Expected component %q to exist", componentName) + + t.Run(reg.Name, func(t *testing.T) { + testNoReusePointer(t, reg) + }) + } +} + +func testNoReusePointer(t *testing.T, reg component.Registration) { + t.Helper() + + var ( + args1 = reg.CloneArguments() + args2 = reg.CloneArguments() + ) + + if args1, ok := args1.(river.Defaulter); ok { + args1.SetToDefault() + } + if args2, ok := args2.(river.Defaulter); ok { + args2.SetToDefault() + } + + rv1, rv2 := reflect.ValueOf(args1), reflect.ValueOf(args2) + ty := rv1.Type().Elem() + + // Edge case: if the component's arguments type is an empty struct, skip. + // Not skipping causes the test to fail, due to an optimization in + // reflect.New where initializing the same zero-length object results in the + // same pointer. + if rv1.Elem().NumField() == 0 { + return + } + + if path, shared := sharePointer(rv1, rv2); shared { + fullPath := fmt.Sprintf("%s.%s.%s", ty.PkgPath(), ty.Name(), path) + + assert.Fail(t, + fmt.Sprintf("Detected SetToDefault pointer reuse at %s", fullPath), + "Types implementing river.Defaulter must not reuse pointers across multiple calls. Doing so leads to default values being changed when unmarshaling configuration files. If you're seeing this error, check the path above and ensure that copies are being made of any pointers in all instances of SetToDefault calls where that field is used.", + ) + } +} + +func sharePointer(a, b reflect.Value) (string, bool) { + // We want to recursively check a and b, so if they're nil they need to be + // initialized to see if any of their inner values have shared pointers after + // being initialized with defaults. + initValue(a) + initValue(b) + + // From the documentation of reflect.Value.Pointer, values of chan, func, + // map, pointer, slice, and unsafe pointer are all pointer values. + // + // Additionally, we want to recurse into values (even if they don't have + // addresses) to see if there's shared pointers inside of them. + switch a.Kind() { + case reflect.Chan, reflect.Func, reflect.UnsafePointer: + return "", a.Pointer() == b.Pointer() + + case reflect.Map: + if pointersMatch(a, b) { + return "", true + } + + iter := a.MapRange() + for iter.Next() { + aValue, bValue := iter.Value(), b.MapIndex(iter.Key()) + if !bValue.IsValid() { + continue + } + if path, shared := sharePointer(aValue, bValue); shared { + return path, true + } + } + return "", false + + case reflect.Pointer: + if pointersMatch(a, b) { + return "", true + } else { + // Recursively navigate inside of the pointer. + return sharePointer(a.Elem(), b.Elem()) + } + + case reflect.Interface: + if a.UnsafeAddr() == b.UnsafeAddr() { + return "", true + } + return sharePointer(a.Elem(), b.Elem()) + + case reflect.Slice: + if pointersMatch(a, b) { + // If the slices are preallocated immutable pointers such as []string{}, we can ignore + if a.Len() == 0 && a.Cap() == 0 && b.Len() == 0 && b.Cap() == 0 { + return "", false + } + return "", true + } + + size := min(a.Len(), b.Len()) + for i := 0; i < size; i++ { + if path, shared := sharePointer(a.Index(i), b.Index(i)); shared { + return path, true + } + } + return "", false + } + + // Recurse into non-pointer types. + switch a.Kind() { + case reflect.Array: + for i := 0; i < a.Len(); i++ { + if path, shared := sharePointer(a.Index(i), b.Index(i)); shared { + return path, true + } + } + return "", false + + case reflect.Struct: + // Check to make sure there are no shared pointers between args1 and args2. + for i := 0; i < a.NumField(); i++ { + if path, shared := sharePointer(a.Field(i), b.Field(i)); shared { + fullPath := a.Type().Field(i).Name + if path != "" { + fullPath += "." + path + } + return fullPath, true + } + } + return "", false + } + + return "", false +} + +func pointersMatch(a, b reflect.Value) bool { + if a.IsNil() || b.IsNil() { + return false + } + return a.Pointer() == b.Pointer() +} + +// initValue initializes nil pointers. If the nil pointer implements +// river.Defaulter, it is also set to default values. +func initValue(rv reflect.Value) { + if rv.Kind() == reflect.Pointer && rv.IsNil() { + rv.Set(reflect.New(rv.Type().Elem())) + if defaulter, ok := rv.Interface().(river.Defaulter); ok { + defaulter.SetToDefault() + } + } +} diff --git a/internal/component/discovery/kubelet/kubelet.go b/internal/component/discovery/kubelet/kubelet.go index 0e4717801e..8f06aa104b 100644 --- a/internal/component/discovery/kubelet/kubelet.go +++ b/internal/component/discovery/kubelet/kubelet.go @@ -78,17 +78,15 @@ type Arguments struct { Namespaces []string `river:"namespaces,attr,optional"` } -// DefaultConfig holds defaults for SDConfig. -var DefaultConfig = Arguments{ - URL: config.URL{ - URL: defaultKubeletURL, - }, - HTTPClientConfig: config.DefaultHTTPClientConfig, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultConfig + cloneDefaultKubeletUrl := *defaultKubeletURL + *args = Arguments{ + URL: config.URL{ + URL: &cloneDefaultKubeletUrl, + }, + HTTPClientConfig: config.DefaultHTTPClientConfig, + } } // Validate implements river.Validator. diff --git a/internal/component/discovery/kubelet/kubelet_test.go b/internal/component/discovery/kubelet/kubelet_test.go index 078162fe7a..89292f06be 100644 --- a/internal/component/discovery/kubelet/kubelet_test.go +++ b/internal/component/discovery/kubelet/kubelet_test.go @@ -51,7 +51,9 @@ func TestPodDeletion(t *testing.T) { Items: []v1.Pod{pod2}, } - kubeletDiscovery, err := NewKubeletDiscovery(DefaultConfig) + var args Arguments + args.SetToDefault() + kubeletDiscovery, err := NewKubeletDiscovery(args) require.NoError(t, err) _, err = kubeletDiscovery.refresh(podList1) @@ -100,7 +102,9 @@ func TestDiscoveryPodWithoutPod(t *testing.T) { Items: []v1.Pod{pod1, pod2}, } - kubeletDiscovery, err := NewKubeletDiscovery(DefaultConfig) + var args Arguments + args.SetToDefault() + kubeletDiscovery, err := NewKubeletDiscovery(args) require.NoError(t, err) _, err = kubeletDiscovery.refresh(podList1) @@ -109,7 +113,9 @@ func TestDiscoveryPodWithoutPod(t *testing.T) { } func TestWithDefaultKubeletHost(t *testing.T) { - kubeletDiscovery, err := NewKubeletDiscovery(DefaultConfig) + var args Arguments + args.SetToDefault() + kubeletDiscovery, err := NewKubeletDiscovery(args) require.NoError(t, err) require.Equal(t, "https://localhost:10250/pods", kubeletDiscovery.url) } diff --git a/internal/component/faro/receiver/arguments.go b/internal/component/faro/receiver/arguments.go index 62d2e413be..0169f0e80e 100644 --- a/internal/component/faro/receiver/arguments.go +++ b/internal/component/faro/receiver/arguments.go @@ -10,33 +10,6 @@ import ( "github.com/grafana/river/rivertypes" ) -// Defaults for various arguments. -var ( - DefaultArguments = Arguments{ - Server: DefaultServerArguments, - SourceMaps: DefaultSourceMapsArguments, - } - - DefaultServerArguments = ServerArguments{ - Host: "127.0.0.1", - Port: 12347, - RateLimiting: DefaultRateLimitingArguments, - MaxAllowedPayloadSize: 5 * units.MiB, - } - - DefaultRateLimitingArguments = RateLimitingArguments{ - Enabled: true, - Rate: 50, - BurstSize: 100, - } - - DefaultSourceMapsArguments = SourceMapsArguments{ - Download: true, - DownloadFromOrigins: []string{"*"}, - DownloadTimeout: time.Second, - } -) - // Arguments configures the app_agent_receiver component. type Arguments struct { LogLabels map[string]string `river:"extra_log_labels,attr,optional"` @@ -49,7 +22,10 @@ type Arguments struct { var _ river.Defaulter = (*Arguments)(nil) // SetToDefault applies default settings. -func (args *Arguments) SetToDefault() { *args = DefaultArguments } +func (args *Arguments) SetToDefault() { + args.Server.SetToDefault() + args.SourceMaps.SetToDefault() +} // ServerArguments configures the HTTP server where telemetry information will // be sent from Faro clients. @@ -63,6 +39,15 @@ type ServerArguments struct { RateLimiting RateLimitingArguments `river:"rate_limiting,block,optional"` } +func (s *ServerArguments) SetToDefault() { + *s = ServerArguments{ + Host: "127.0.0.1", + Port: 12347, + MaxAllowedPayloadSize: 5 * units.MiB, + } + s.RateLimiting.SetToDefault() +} + // RateLimitingArguments configures rate limiting for the HTTP server. type RateLimitingArguments struct { Enabled bool `river:"enabled,attr,optional"` @@ -70,6 +55,14 @@ type RateLimitingArguments struct { BurstSize float64 `river:"burst_size,attr,optional"` } +func (r *RateLimitingArguments) SetToDefault() { + *r = RateLimitingArguments{ + Enabled: true, + Rate: 50, + BurstSize: 100, + } +} + // SourceMapsArguments configures how app_agent_receiver will retrieve source // maps for transforming stack traces. type SourceMapsArguments struct { @@ -79,6 +72,14 @@ type SourceMapsArguments struct { Locations []LocationArguments `river:"location,block,optional"` } +func (s *SourceMapsArguments) SetToDefault() { + *s = SourceMapsArguments{ + Download: true, + DownloadFromOrigins: []string{"*"}, + DownloadTimeout: time.Second, + } +} + // LocationArguments specifies an individual location where source maps will be loaded. type LocationArguments struct { Path string `river:"path,attr"` diff --git a/internal/component/otelcol/config_debug_metrics.go b/internal/component/otelcol/config_debug_metrics.go index f387f64cbf..c0a47a9d08 100644 --- a/internal/component/otelcol/config_debug_metrics.go +++ b/internal/component/otelcol/config_debug_metrics.go @@ -5,12 +5,9 @@ type DebugMetricsArguments struct { DisableHighCardinalityMetrics bool `river:"disable_high_cardinality_metrics,attr,optional"` } -// DefaultDebugMetricsArguments holds default settings for DebugMetricsArguments. -var DefaultDebugMetricsArguments = DebugMetricsArguments{ - DisableHighCardinalityMetrics: true, -} - // SetToDefault implements river.Defaulter. func (args *DebugMetricsArguments) SetToDefault() { - *args = DefaultDebugMetricsArguments + *args = DebugMetricsArguments{ + DisableHighCardinalityMetrics: true, + } } diff --git a/internal/component/otelcol/config_queue.go b/internal/component/otelcol/config_queue.go index b6a61294e9..a15a7983b8 100644 --- a/internal/component/otelcol/config_queue.go +++ b/internal/component/otelcol/config_queue.go @@ -16,22 +16,19 @@ type QueueArguments struct { // TODO(rfratto): queues can send to persistent storage through an extension. } -// DefaultQueueArguments holds default settings for QueueArguments. -var DefaultQueueArguments = QueueArguments{ - Enabled: true, - NumConsumers: 10, - - // Copied from [upstream](https://github.com/open-telemetry/opentelemetry-collector/blob/241334609fc47927b4a8533dfca28e0f65dad9fe/exporter/exporterhelper/queue_sender.go#L50-L53) - // - // By default, batches are 8192 spans, for a total of up to 8 million spans in the queue - // This can be estimated at 1-4 GB worth of maximum memory usage - // This default is probably still too high, and may be adjusted further down in a future release - QueueSize: 1000, -} - // SetToDefault implements river.Defaulter. func (args *QueueArguments) SetToDefault() { - *args = DefaultQueueArguments + *args = QueueArguments{ + Enabled: true, + NumConsumers: 10, + + // Copied from [upstream](https://github.com/open-telemetry/opentelemetry-collector/blob/241334609fc47927b4a8533dfca28e0f65dad9fe/exporter/exporterhelper/queue_sender.go#L50-L53) + // + // By default, batches are 8192 spans, for a total of up to 8 million spans in the queue + // This can be estimated at 1-4 GB worth of maximum memory usage + // This default is probably still too high, and may be adjusted further down in a future release + QueueSize: 1000, + } } // Convert converts args into the upstream type. diff --git a/internal/component/otelcol/config_retry.go b/internal/component/otelcol/config_retry.go index 8b1d7b3599..12a2ffea85 100644 --- a/internal/component/otelcol/config_retry.go +++ b/internal/component/otelcol/config_retry.go @@ -24,19 +24,16 @@ var ( _ river.Validator = (*RetryArguments)(nil) ) -// DefaultRetryArguments holds default settings for RetryArguments. -var DefaultRetryArguments = RetryArguments{ - Enabled: true, - InitialInterval: 5 * time.Second, - RandomizationFactor: 0.5, - Multiplier: 1.5, - MaxInterval: 30 * time.Second, - MaxElapsedTime: 5 * time.Minute, -} - // SetToDefault implements river.Defaulter. func (args *RetryArguments) SetToDefault() { - *args = DefaultRetryArguments + *args = RetryArguments{ + Enabled: true, + InitialInterval: 5 * time.Second, + RandomizationFactor: 0.5, + Multiplier: 1.5, + MaxInterval: 30 * time.Second, + MaxElapsedTime: 5 * time.Minute, + } } // Validate returns an error if args is invalid. diff --git a/internal/component/otelcol/connector/host_info/host_info.go b/internal/component/otelcol/connector/host_info/host_info.go index 9fbb4dcee6..b97f55397b 100644 --- a/internal/component/otelcol/connector/host_info/host_info.go +++ b/internal/component/otelcol/connector/host_info/host_info.go @@ -43,15 +43,12 @@ var ( _ connector.Arguments = (*Arguments)(nil) ) -// DefaultArguments holds default settings for Arguments. -var DefaultArguments = Arguments{ - HostIdentifiers: []string{"host.id"}, - MetricsFlushInterval: 60 * time.Second, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + HostIdentifiers: []string{"host.id"}, + MetricsFlushInterval: 60 * time.Second, + } } // Validate implements river.Validator. diff --git a/internal/component/otelcol/connector/servicegraph/servicegraph.go b/internal/component/otelcol/connector/servicegraph/servicegraph.go index a637a94a73..dfd25b2be4 100644 --- a/internal/component/otelcol/connector/servicegraph/servicegraph.go +++ b/internal/component/otelcol/connector/servicegraph/servicegraph.go @@ -65,55 +65,56 @@ type StoreConfig struct { TTL time.Duration `river:"ttl,attr,optional"` } +func (sc *StoreConfig) SetToDefault() { + *sc = StoreConfig{ + MaxItems: 1000, + TTL: 2 * time.Second, + } +} + var ( _ river.Validator = (*Arguments)(nil) _ river.Defaulter = (*Arguments)(nil) ) -// DefaultArguments holds default settings for Arguments. -var DefaultArguments = Arguments{ - LatencyHistogramBuckets: []time.Duration{ - 2 * time.Millisecond, - 4 * time.Millisecond, - 6 * time.Millisecond, - 8 * time.Millisecond, - 10 * time.Millisecond, - 50 * time.Millisecond, - 100 * time.Millisecond, - 200 * time.Millisecond, - 400 * time.Millisecond, - 800 * time.Millisecond, - 1 * time.Second, - 1400 * time.Millisecond, - 2 * time.Second, - 5 * time.Second, - 10 * time.Second, - 15 * time.Second, - }, - Dimensions: []string{}, - Store: StoreConfig{ - MaxItems: 1000, - TTL: 2 * time.Second, - }, - CacheLoop: 1 * time.Minute, - StoreExpirationLoop: 2 * time.Second, - //TODO: Add VirtualNodePeerAttributes when it's no longer controlled by - // the "processor.servicegraph.virtualNode" feature gate. - // VirtualNodePeerAttributes: []string{ - // semconv.AttributeDBName, - // semconv.AttributeNetSockPeerAddr, - // semconv.AttributeNetPeerName, - // semconv.AttributeRPCService, - // semconv.AttributeNetSockPeerName, - // semconv.AttributeNetPeerName, - // semconv.AttributeHTTPURL, - // semconv.AttributeHTTPTarget, - // }, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + LatencyHistogramBuckets: []time.Duration{ + 2 * time.Millisecond, + 4 * time.Millisecond, + 6 * time.Millisecond, + 8 * time.Millisecond, + 10 * time.Millisecond, + 50 * time.Millisecond, + 100 * time.Millisecond, + 200 * time.Millisecond, + 400 * time.Millisecond, + 800 * time.Millisecond, + 1 * time.Second, + 1400 * time.Millisecond, + 2 * time.Second, + 5 * time.Second, + 10 * time.Second, + 15 * time.Second, + }, + Dimensions: []string{}, + CacheLoop: 1 * time.Minute, + StoreExpirationLoop: 2 * time.Second, + //TODO: Add VirtualNodePeerAttributes when it's no longer controlled by + // the "processor.servicegraph.virtualNode" feature gate. + // VirtualNodePeerAttributes: []string{ + // semconv.AttributeDBName, + // semconv.AttributeNetSockPeerAddr, + // semconv.AttributeNetPeerName, + // semconv.AttributeRPCService, + // semconv.AttributeNetSockPeerName, + // semconv.AttributeNetPeerName, + // semconv.AttributeHTTPURL, + // semconv.AttributeHTTPTarget, + // }, + } + args.Store.SetToDefault() } // Validate implements river.Validator. diff --git a/internal/component/otelcol/exporter/exporter_test.go b/internal/component/otelcol/exporter/exporter_test.go index 8c9489af71..dd61355ec6 100644 --- a/internal/component/otelcol/exporter/exporter_test.go +++ b/internal/component/otelcol/exporter/exporter_test.go @@ -138,7 +138,9 @@ func (fa fakeExporterArgs) Exporters() map[otelcomponent.DataType]map[otelcompon } func (fe fakeExporterArgs) DebugMetricsConfig() otelcol.DebugMetricsArguments { - return otelcol.DefaultDebugMetricsArguments + var dma otelcol.DebugMetricsArguments + dma.SetToDefault() + return dma } type fakeExporter struct { diff --git a/internal/component/otelcol/exporter/loadbalancing/loadbalancing.go b/internal/component/otelcol/exporter/loadbalancing/loadbalancing.go index d9b87a01fb..b069ba2f8f 100644 --- a/internal/component/otelcol/exporter/loadbalancing/loadbalancing.go +++ b/internal/component/otelcol/exporter/loadbalancing/loadbalancing.go @@ -55,27 +55,13 @@ var ( _ river.Validator = &Arguments{} ) -var ( - // DefaultArguments holds default values for Arguments. - DefaultArguments = Arguments{ - Protocol: Protocol{ - OTLP: DefaultOTLPConfig, - }, - RoutingKey: "traceID", - DebugMetrics: otelcol.DefaultDebugMetricsArguments, - } - - DefaultOTLPConfig = OtlpConfig{ - Timeout: otelcol.DefaultTimeout, - Queue: otelcol.DefaultQueueArguments, - Retry: otelcol.DefaultRetryArguments, - Client: DefaultGRPCClientArguments, - } -) - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + RoutingKey: "traceID", + } + args.DebugMetrics.SetToDefault() + args.Protocol.OTLP.SetToDefault() } // Validate implements river.Validator. @@ -124,18 +110,23 @@ type OtlpConfig struct { Client GRPCClientArguments `river:"client,block"` } -func (OtlpConfig *OtlpConfig) SetToDefault() { - *OtlpConfig = DefaultOTLPConfig +func (oc *OtlpConfig) SetToDefault() { + *oc = OtlpConfig{ + Timeout: otelcol.DefaultTimeout, + } + oc.Client.SetToDefault() + oc.Retry.SetToDefault() + oc.Queue.SetToDefault() } -func (otlpConfig OtlpConfig) Convert() otlpexporter.Config { +func (oc OtlpConfig) Convert() otlpexporter.Config { return otlpexporter.Config{ TimeoutSettings: exporterhelper.TimeoutSettings{ - Timeout: otlpConfig.Timeout, + Timeout: oc.Timeout, }, - QueueSettings: *otlpConfig.Queue.Convert(), - RetrySettings: *otlpConfig.Retry.Convert(), - GRPCClientSettings: *otlpConfig.Client.Convert(), + QueueSettings: *oc.Queue.Convert(), + RetrySettings: *oc.Retry.Convert(), + GRPCClientSettings: *oc.Client.Convert(), } } @@ -316,16 +307,12 @@ func (args *GRPCClientArguments) Extensions() map[otelcomponent.ID]otelextension return m } -// DefaultGRPCClientArguments holds component-specific default settings for -// GRPCClientArguments. -var DefaultGRPCClientArguments = GRPCClientArguments{ - Headers: map[string]string{}, - Compression: otelcol.CompressionTypeGzip, - WriteBufferSize: 512 * 1024, - BalancerName: otelcol.DefaultBalancerName, -} - // SetToDefault implements river.Defaulter. func (args *GRPCClientArguments) SetToDefault() { - *args = DefaultGRPCClientArguments + *args = GRPCClientArguments{ + Headers: map[string]string{}, + Compression: otelcol.CompressionTypeGzip, + WriteBufferSize: 512 * 1024, + BalancerName: otelcol.DefaultBalancerName, + } } diff --git a/internal/component/otelcol/exporter/logging/logging.go b/internal/component/otelcol/exporter/logging/logging.go index 71dac49faf..1e08fe2104 100644 --- a/internal/component/otelcol/exporter/logging/logging.go +++ b/internal/component/otelcol/exporter/logging/logging.go @@ -38,17 +38,14 @@ type Arguments struct { var _ exporter.Arguments = Arguments{} -// DefaultArguments holds default values for Arguments. -var DefaultArguments = Arguments{ - Verbosity: configtelemetry.LevelNormal, - SamplingInitial: 2, - SamplingThereafter: 500, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + Verbosity: configtelemetry.LevelNormal, + SamplingInitial: 2, + SamplingThereafter: 500, + } + args.DebugMetrics.SetToDefault() } // Convert implements exporter.Arguments. diff --git a/internal/component/otelcol/exporter/otlp/otlp.go b/internal/component/otelcol/exporter/otlp/otlp.go index d50c876226..a86aec2219 100644 --- a/internal/component/otelcol/exporter/otlp/otlp.go +++ b/internal/component/otelcol/exporter/otlp/otlp.go @@ -43,18 +43,16 @@ type Arguments struct { var _ exporter.Arguments = Arguments{} -// DefaultArguments holds default values for Arguments. -var DefaultArguments = Arguments{ - Timeout: otelcol.DefaultTimeout, - Queue: otelcol.DefaultQueueArguments, - Retry: otelcol.DefaultRetryArguments, - Client: DefaultGRPCClientArguments, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + Timeout: otelcol.DefaultTimeout, + } + + args.Queue.SetToDefault() + args.Retry.SetToDefault() + args.Client.SetToDefault() + args.DebugMetrics.SetToDefault() } // Convert implements exporter.Arguments. @@ -88,16 +86,12 @@ func (args Arguments) DebugMetricsConfig() otelcol.DebugMetricsArguments { // component-specific defaults. type GRPCClientArguments otelcol.GRPCClientArguments -// DefaultGRPCClientArguments holds component-specific default settings for -// GRPCClientArguments. -var DefaultGRPCClientArguments = GRPCClientArguments{ - Headers: map[string]string{}, - Compression: otelcol.CompressionTypeGzip, - WriteBufferSize: 512 * 1024, - BalancerName: otelcol.DefaultBalancerName, -} - // SetToDefault implements river.Defaulter. func (args *GRPCClientArguments) SetToDefault() { - *args = DefaultGRPCClientArguments + *args = GRPCClientArguments{ + Headers: map[string]string{}, + Compression: otelcol.CompressionTypeGzip, + WriteBufferSize: 512 * 1024, + BalancerName: otelcol.DefaultBalancerName, + } } diff --git a/internal/component/otelcol/exporter/otlphttp/otlphttp.go b/internal/component/otelcol/exporter/otlphttp/otlphttp.go index 246d9df846..a5c4dbe1de 100644 --- a/internal/component/otelcol/exporter/otlphttp/otlphttp.go +++ b/internal/component/otelcol/exporter/otlphttp/otlphttp.go @@ -48,17 +48,13 @@ type Arguments struct { var _ exporter.Arguments = Arguments{} -// DefaultArguments holds default values for Arguments. -var DefaultArguments = Arguments{ - Queue: otelcol.DefaultQueueArguments, - Retry: otelcol.DefaultRetryArguments, - Client: DefaultHTTPClientArguments, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{} + args.Queue.SetToDefault() + args.Retry.SetToDefault() + args.Client.SetToDefault() + args.DebugMetrics.SetToDefault() } // Convert implements exporter.Arguments. @@ -102,11 +98,17 @@ type HTTPClientArguments otelcol.HTTPClientArguments // Default server settings. var ( - DefaultMaxIddleConns = 100 - DefaultIdleConnTimeout = 90 * time.Second - DefaultHTTPClientArguments = HTTPClientArguments{ - MaxIdleConns: &DefaultMaxIddleConns, - IdleConnTimeout: &DefaultIdleConnTimeout, + DefaultMaxIdleConns = 100 + DefaultIdleConnTimeout = 90 * time.Second +) + +// SetToDefault implements river.Defaulter. +func (args *HTTPClientArguments) SetToDefault() { + maxIdleConns := DefaultMaxIdleConns + idleConnTimeout := DefaultIdleConnTimeout + *args = HTTPClientArguments{ + MaxIdleConns: &maxIdleConns, + IdleConnTimeout: &idleConnTimeout, Timeout: 30 * time.Second, Headers: map[string]string{}, @@ -114,9 +116,4 @@ var ( ReadBufferSize: 0, WriteBufferSize: 512 * 1024, } -) - -// SetToDefault implements river.Defaulter. -func (args *HTTPClientArguments) SetToDefault() { - *args = DefaultHTTPClientArguments } diff --git a/internal/component/otelcol/extension/jaeger_remote_sampling/jaeger_remote_sampling.go b/internal/component/otelcol/extension/jaeger_remote_sampling/jaeger_remote_sampling.go index d4365706f3..3b4b5a7689 100644 --- a/internal/component/otelcol/extension/jaeger_remote_sampling/jaeger_remote_sampling.go +++ b/internal/component/otelcol/extension/jaeger_remote_sampling/jaeger_remote_sampling.go @@ -37,18 +37,6 @@ type ( HTTPServerArguments otelcol.HTTPServerArguments ) -// Default server settings. -var ( - DefaultGRPCServerArguments = GRPCServerArguments{ - Endpoint: "0.0.0.0:14250", - Transport: "tcp", - } - - DefaultHTTPServerArguments = HTTPServerArguments{ - Endpoint: "0.0.0.0:5778", - } -) - // Arguments configures the otelcol.extension.jaegerremotesampling component. type Arguments struct { GRPC *GRPCServerArguments `river:"grpc,block,optional"` @@ -127,12 +115,17 @@ func (a *ArgumentsSource) Validate() error { // SetToDefault implements river.Defaulter. func (args *GRPCServerArguments) SetToDefault() { - *args = DefaultGRPCServerArguments + *args = GRPCServerArguments{ + Endpoint: "0.0.0.0:14250", + Transport: "tcp", + } } // SetToDefault implements river.Defaulter. func (args *HTTPServerArguments) SetToDefault() { - *args = DefaultHTTPServerArguments + *args = HTTPServerArguments{ + Endpoint: "0.0.0.0:5778", + } } // GRPCClientArguments is used to configure @@ -140,16 +133,12 @@ func (args *HTTPServerArguments) SetToDefault() { // component-specific defaults. type GRPCClientArguments otelcol.GRPCClientArguments -// DefaultGRPCClientArguments holds component-specific -// default settings for GRPCClientArguments. -var DefaultGRPCClientArguments = GRPCClientArguments{ - Headers: map[string]string{}, - Compression: otelcol.CompressionTypeGzip, - WriteBufferSize: 512 * 1024, - BalancerName: otelcol.DefaultBalancerName, -} - // SetToDefault implements river.Defaulter. func (args *GRPCClientArguments) SetToDefault() { - *args = DefaultGRPCClientArguments + *args = GRPCClientArguments{ + Headers: map[string]string{}, + Compression: otelcol.CompressionTypeGzip, + WriteBufferSize: 512 * 1024, + BalancerName: otelcol.DefaultBalancerName, + } } diff --git a/internal/component/otelcol/processor/discovery/discovery.go b/internal/component/otelcol/processor/discovery/discovery.go index 08073fa58b..2268991399 100644 --- a/internal/component/otelcol/processor/discovery/discovery.go +++ b/internal/component/otelcol/processor/discovery/discovery.go @@ -45,21 +45,18 @@ var ( _ river.Validator = (*Arguments)(nil) ) -// DefaultArguments holds default settings for Arguments. -var DefaultArguments = Arguments{ - OperationType: promsdconsumer.OperationTypeUpsert, - PodAssociations: []string{ - promsdconsumer.PodAssociationIPLabel, - promsdconsumer.PodAssociationOTelIPLabel, - promsdconsumer.PodAssociationk8sIPLabel, - promsdconsumer.PodAssociationHostnameLabel, - promsdconsumer.PodAssociationConnectionIP, - }, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + OperationType: promsdconsumer.OperationTypeUpsert, + PodAssociations: []string{ + promsdconsumer.PodAssociationIPLabel, + promsdconsumer.PodAssociationOTelIPLabel, + promsdconsumer.PodAssociationk8sIPLabel, + promsdconsumer.PodAssociationHostnameLabel, + promsdconsumer.PodAssociationConnectionIP, + }, + } } // Validate implements river.Validator. diff --git a/internal/component/otelcol/processor/discovery/discovery_test.go b/internal/component/otelcol/processor/discovery/discovery_test.go index 5c7788d247..ac74167332 100644 --- a/internal/component/otelcol/processor/discovery/discovery_test.go +++ b/internal/component/otelcol/processor/discovery/discovery_test.go @@ -57,8 +57,10 @@ func Test_DefaultConfig(t *testing.T) { var args discovery.Arguments require.NoError(t, river.Unmarshal([]byte(cfg), &args)) + var defaultArgs discovery.Arguments + defaultArgs.SetToDefault() require.Equal(t, args.OperationType, promsdconsumer.OperationTypeUpsert) - require.Equal(t, args.PodAssociations, discovery.DefaultArguments.PodAssociations) + require.Equal(t, args.PodAssociations, defaultArgs.PodAssociations) var inputTrace = `{ "resourceSpans": [{ @@ -157,8 +159,10 @@ func Test_Insert(t *testing.T) { var args discovery.Arguments require.NoError(t, river.Unmarshal([]byte(cfg), &args)) + var defaultArgs discovery.Arguments + defaultArgs.SetToDefault() require.Equal(t, args.OperationType, promsdconsumer.OperationTypeInsert) - require.Equal(t, args.PodAssociations, discovery.DefaultArguments.PodAssociations) + require.Equal(t, args.PodAssociations, defaultArgs.PodAssociations) var inputTrace = `{ "resourceSpans": [{ @@ -278,8 +282,10 @@ func Test_Update(t *testing.T) { var args discovery.Arguments require.NoError(t, river.Unmarshal([]byte(cfg), &args)) + var defaultArgs discovery.Arguments + defaultArgs.SetToDefault() require.Equal(t, args.OperationType, promsdconsumer.OperationTypeUpdate) - require.Equal(t, args.PodAssociations, discovery.DefaultArguments.PodAssociations) + require.Equal(t, args.PodAssociations, defaultArgs.PodAssociations) var inputTrace = `{ "resourceSpans": [{ diff --git a/internal/component/otelcol/processor/resourcedetection/internal/system/config.go b/internal/component/otelcol/processor/resourcedetection/internal/system/config.go index c661cf6e83..3c72a13228 100644 --- a/internal/component/otelcol/processor/resourcedetection/internal/system/config.go +++ b/internal/component/otelcol/processor/resourcedetection/internal/system/config.go @@ -19,28 +19,26 @@ type Config struct { ResourceAttributes ResourceAttributesConfig `river:"resource_attributes,block,optional"` } -var DefaultArguments = Config{ - HostnameSources: []string{"dns", "os"}, - ResourceAttributes: ResourceAttributesConfig{ - HostArch: rac.ResourceAttributeConfig{Enabled: false}, - HostCPUCacheL2Size: rac.ResourceAttributeConfig{Enabled: false}, - HostCPUFamily: rac.ResourceAttributeConfig{Enabled: false}, - HostCPUModelID: rac.ResourceAttributeConfig{Enabled: false}, - HostCPUModelName: rac.ResourceAttributeConfig{Enabled: false}, - HostCPUStepping: rac.ResourceAttributeConfig{Enabled: false}, - HostCPUVendorID: rac.ResourceAttributeConfig{Enabled: false}, - HostID: rac.ResourceAttributeConfig{Enabled: false}, - HostName: rac.ResourceAttributeConfig{Enabled: true}, - OsDescription: rac.ResourceAttributeConfig{Enabled: false}, - OsType: rac.ResourceAttributeConfig{Enabled: true}, - }, -} - var _ river.Defaulter = (*Config)(nil) // SetToDefault implements river.Defaulter. func (c *Config) SetToDefault() { - *c = DefaultArguments + *c = Config{ + HostnameSources: []string{"dns", "os"}, + ResourceAttributes: ResourceAttributesConfig{ + HostArch: rac.ResourceAttributeConfig{Enabled: false}, + HostCPUCacheL2Size: rac.ResourceAttributeConfig{Enabled: false}, + HostCPUFamily: rac.ResourceAttributeConfig{Enabled: false}, + HostCPUModelID: rac.ResourceAttributeConfig{Enabled: false}, + HostCPUModelName: rac.ResourceAttributeConfig{Enabled: false}, + HostCPUStepping: rac.ResourceAttributeConfig{Enabled: false}, + HostCPUVendorID: rac.ResourceAttributeConfig{Enabled: false}, + HostID: rac.ResourceAttributeConfig{Enabled: false}, + HostName: rac.ResourceAttributeConfig{Enabled: true}, + OsDescription: rac.ResourceAttributeConfig{Enabled: false}, + OsType: rac.ResourceAttributeConfig{Enabled: true}, + }, + } } // Validate config diff --git a/internal/component/otelcol/processor/resourcedetection/resourcedetection.go b/internal/component/otelcol/processor/resourcedetection/resourcedetection.go index 20ab52d0b5..e086886927 100644 --- a/internal/component/otelcol/processor/resourcedetection/resourcedetection.go +++ b/internal/component/otelcol/processor/resourcedetection/resourcedetection.go @@ -19,7 +19,6 @@ import ( "github.com/grafana/agent/internal/component/otelcol/processor/resourcedetection/internal/gcp" "github.com/grafana/agent/internal/component/otelcol/processor/resourcedetection/internal/heroku" "github.com/grafana/agent/internal/component/otelcol/processor/resourcedetection/internal/k8snode" - kubernetes_node "github.com/grafana/agent/internal/component/otelcol/processor/resourcedetection/internal/k8snode" "github.com/grafana/agent/internal/component/otelcol/processor/resourcedetection/internal/openshift" "github.com/grafana/agent/internal/component/otelcol/processor/resourcedetection/internal/system" "github.com/grafana/agent/internal/featuregate" @@ -114,21 +113,11 @@ type DetectorConfig struct { OpenShiftConfig openshift.Config `river:"openshift,block,optional"` // KubernetesNode contains user-specified configurations for the K8SNode detector - KubernetesNodeConfig kubernetes_node.Config `river:"kubernetes_node,block,optional"` + KubernetesNodeConfig k8snode.Config `river:"kubernetes_node,block,optional"` } -var ( - _ processor.Arguments = Arguments{} - _ river.Validator = (*Arguments)(nil) - _ river.Defaulter = (*Arguments)(nil) -) - -// DefaultArguments holds default settings for Arguments. -var DefaultArguments = Arguments{ - Detectors: []string{"env"}, - Override: true, - Timeout: 5 * time.Second, - DetectorConfig: DetectorConfig{ +func (dc *DetectorConfig) SetToDefault() { + *dc = DetectorConfig{ EC2Config: ec2.DefaultArguments, ECSConfig: ecs.DefaultArguments, EKSConfig: eks.DefaultArguments, @@ -140,15 +129,26 @@ var DefaultArguments = Arguments{ DockerConfig: docker.DefaultArguments, GcpConfig: gcp.DefaultArguments, HerokuConfig: heroku.DefaultArguments, - SystemConfig: system.DefaultArguments, OpenShiftConfig: openshift.DefaultArguments, - KubernetesNodeConfig: kubernetes_node.DefaultArguments, - }, + KubernetesNodeConfig: k8snode.DefaultArguments, + } + dc.SystemConfig.SetToDefault() } +var ( + _ processor.Arguments = Arguments{} + _ river.Validator = (*Arguments)(nil) + _ river.Defaulter = (*Arguments)(nil) +) + // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + Detectors: []string{"env"}, + Override: true, + Timeout: 5 * time.Second, + } + args.DetectorConfig.SetToDefault() } // Validate implements river.Validator. diff --git a/internal/component/otelcol/processor/resourcedetection/resourcedetection_test.go b/internal/component/otelcol/processor/resourcedetection/resourcedetection_test.go index 437c2cf6ba..d52c3f65e3 100644 --- a/internal/component/otelcol/processor/resourcedetection/resourcedetection_test.go +++ b/internal/component/otelcol/processor/resourcedetection/resourcedetection_test.go @@ -26,6 +26,9 @@ import ( ) func TestArguments_UnmarshalRiver(t *testing.T) { + var defaultArgs system.Config + defaultArgs.SetToDefault() + tests := []struct { testName string cfg string @@ -77,7 +80,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -102,7 +105,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -143,7 +146,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -185,7 +188,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -238,7 +241,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -300,7 +303,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -362,7 +365,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -399,7 +402,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -441,7 +444,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -502,7 +505,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -571,7 +574,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -608,7 +611,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -650,7 +653,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -677,7 +680,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -767,7 +770,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "consul": consul.DefaultArguments.Convert(), "docker": docker.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -794,7 +797,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -836,7 +839,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "consul": consul.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -863,7 +866,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -928,7 +931,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -955,7 +958,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1007,7 +1010,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1034,7 +1037,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1088,7 +1091,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1115,7 +1118,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1178,7 +1181,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "consul": consul.DefaultArguments.Convert(), "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1205,7 +1208,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1253,7 +1256,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), }, }, @@ -1291,7 +1294,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1397,7 +1400,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, @@ -1467,7 +1470,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, }, @@ -1494,7 +1497,7 @@ func TestArguments_UnmarshalRiver(t *testing.T) { "docker": docker.DefaultArguments.Convert(), "gcp": gcp.DefaultArguments.Convert(), "heroku": heroku.DefaultArguments.Convert(), - "system": system.DefaultArguments.Convert(), + "system": defaultArgs.Convert(), "openshift": openshift.DefaultArguments.Convert(), "k8snode": kubernetes_node.DefaultArguments.Convert(), }, diff --git a/internal/component/otelcol/receiver/jaeger/jaeger.go b/internal/component/otelcol/receiver/jaeger/jaeger.go index 27632e040e..c7817cc68a 100644 --- a/internal/component/otelcol/receiver/jaeger/jaeger.go +++ b/internal/component/otelcol/receiver/jaeger/jaeger.go @@ -44,9 +44,8 @@ var _ receiver.Arguments = Arguments{} // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = Arguments{ - DebugMetrics: otelcol.DefaultDebugMetricsArguments, - } + *args = Arguments{} + args.DebugMetrics.SetToDefault() } // Validate implements river.Validator. diff --git a/internal/component/otelcol/receiver/kafka/kafka.go b/internal/component/otelcol/receiver/kafka/kafka.go index dd798f1cee..d52223f1ad 100644 --- a/internal/component/otelcol/receiver/kafka/kafka.go +++ b/internal/component/otelcol/receiver/kafka/kafka.go @@ -54,43 +54,25 @@ type Arguments struct { var _ receiver.Arguments = Arguments{} -// DefaultArguments holds default values for Arguments. -var DefaultArguments = Arguments{ - // We use the defaults from the upstream OpenTelemetry Collector component - // for compatibility, even though that means using a client and group ID of - // "otel-collector". - - Topic: "otlp_spans", - Encoding: "otlp_proto", - Brokers: []string{"localhost:9092"}, - ClientID: "otel-collector", - GroupID: "otel-collector", - InitialOffset: "latest", - Metadata: MetadataArguments{ - IncludeAllTopics: true, - Retry: MetadataRetryArguments{ - MaxRetries: 3, - Backoff: 250 * time.Millisecond, - }, - }, - AutoCommit: AutoCommitArguments{ - Enable: true, - Interval: time.Second, - }, - MessageMarking: MessageMarkingArguments{ - AfterExecution: false, - IncludeUnsuccessful: false, - }, - HeaderExtraction: HeaderExtraction{ - ExtractHeaders: false, - Headers: []string{}, - }, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + // We use the defaults from the upstream OpenTelemetry Collector component + // for compatibility, even though that means using a client and group ID of + // "otel-collector". + + Topic: "otlp_spans", + Encoding: "otlp_proto", + Brokers: []string{"localhost:9092"}, + ClientID: "otel-collector", + GroupID: "otel-collector", + InitialOffset: "latest", + } + args.Metadata.SetToDefault() + args.AutoCommit.SetToDefault() + args.MessageMarking.SetToDefault() + args.HeaderExtraction.SetToDefault() + args.DebugMetrics.SetToDefault() } // Convert implements receiver.Arguments. @@ -247,6 +229,16 @@ type MetadataArguments struct { Retry MetadataRetryArguments `river:"retry,block,optional"` } +func (args *MetadataArguments) SetToDefault() { + *args = MetadataArguments{ + IncludeAllTopics: true, + Retry: MetadataRetryArguments{ + MaxRetries: 3, + Backoff: 250 * time.Millisecond, + }, + } +} + // Convert converts args into the upstream type. func (args MetadataArguments) Convert() kafkaexporter.Metadata { return kafkaexporter.Metadata{ @@ -278,6 +270,13 @@ type AutoCommitArguments struct { Interval time.Duration `river:"interval,attr,optional"` } +func (args *AutoCommitArguments) SetToDefault() { + *args = AutoCommitArguments{ + Enable: true, + Interval: time.Second, + } +} + // Convert converts args into the upstream type. func (args AutoCommitArguments) Convert() kafkareceiver.AutoCommit { return kafkareceiver.AutoCommit{ @@ -292,6 +291,13 @@ type MessageMarkingArguments struct { IncludeUnsuccessful bool `river:"include_unsuccessful,attr,optional"` } +func (args *MessageMarkingArguments) SetToDefault() { + *args = MessageMarkingArguments{ + AfterExecution: false, + IncludeUnsuccessful: false, + } +} + // Convert converts args into the upstream type. func (args MessageMarkingArguments) Convert() kafkareceiver.MessageMarking { return kafkareceiver.MessageMarking{ @@ -305,6 +311,13 @@ type HeaderExtraction struct { Headers []string `river:"headers,attr,optional"` } +func (h *HeaderExtraction) SetToDefault() { + *h = HeaderExtraction{ + ExtractHeaders: false, + Headers: []string{}, + } +} + // Convert converts HeaderExtraction into the upstream type. func (h HeaderExtraction) Convert() kafkareceiver.HeaderExtraction { return kafkareceiver.HeaderExtraction{ diff --git a/internal/component/otelcol/receiver/opencensus/opencensus.go b/internal/component/otelcol/receiver/opencensus/opencensus.go index 1a4ac11573..2de11c2578 100644 --- a/internal/component/otelcol/receiver/opencensus/opencensus.go +++ b/internal/component/otelcol/receiver/opencensus/opencensus.go @@ -40,21 +40,18 @@ type Arguments struct { var _ receiver.Arguments = Arguments{} -// Default server settings. -var DefaultArguments = Arguments{ - GRPC: otelcol.GRPCServerArguments{ - Endpoint: "0.0.0.0:55678", - Transport: "tcp", - - ReadBufferSize: 512 * units.Kibibyte, - // We almost write 0 bytes, so no need to tune WriteBufferSize. - }, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + GRPC: otelcol.GRPCServerArguments{ + Endpoint: "0.0.0.0:55678", + Transport: "tcp", + + ReadBufferSize: 512 * units.Kibibyte, + // We almost write 0 bytes, so no need to tune WriteBufferSize. + }, + } + args.DebugMetrics.SetToDefault() } // Convert implements receiver.Arguments. diff --git a/internal/component/otelcol/receiver/opencensus/opencensus_test.go b/internal/component/otelcol/receiver/opencensus/opencensus_test.go index 8cc95042a2..aa8536a3e3 100644 --- a/internal/component/otelcol/receiver/opencensus/opencensus_test.go +++ b/internal/component/otelcol/receiver/opencensus/opencensus_test.go @@ -54,10 +54,12 @@ func TestDefaultArguments_UnmarshalRiver(t *testing.T) { require.True(t, ok) + var defaultArgs opencensus.Arguments + defaultArgs.SetToDefault() // Check the gRPC arguments - require.Equal(t, opencensus.DefaultArguments.GRPC.Endpoint, otelArgs.NetAddr.Endpoint) - require.Equal(t, opencensus.DefaultArguments.GRPC.Transport, otelArgs.NetAddr.Transport) - require.Equal(t, int(opencensus.DefaultArguments.GRPC.ReadBufferSize), otelArgs.ReadBufferSize) + require.Equal(t, defaultArgs.GRPC.Endpoint, otelArgs.NetAddr.Endpoint) + require.Equal(t, defaultArgs.GRPC.Transport, otelArgs.NetAddr.Transport) + require.Equal(t, int(defaultArgs.GRPC.ReadBufferSize), otelArgs.ReadBufferSize) } func TestArguments_UnmarshalRiver(t *testing.T) { diff --git a/internal/component/otelcol/receiver/otlp/otlp.go b/internal/component/otelcol/receiver/otlp/otlp.go index 8e59fab2be..9beb1f7ca3 100644 --- a/internal/component/otelcol/receiver/otlp/otlp.go +++ b/internal/component/otelcol/receiver/otlp/otlp.go @@ -71,9 +71,8 @@ var _ receiver.Arguments = Arguments{} // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = Arguments{ - DebugMetrics: otelcol.DefaultDebugMetricsArguments, - } + *args = Arguments{} + args.DebugMetrics.SetToDefault() } // Convert implements receiver.Arguments. @@ -107,26 +106,6 @@ type ( GRPCServerArguments otelcol.GRPCServerArguments ) -// Default server settings. -var ( - DefaultGRPCServerArguments = GRPCServerArguments{ - Endpoint: "0.0.0.0:4317", - Transport: "tcp", - - ReadBufferSize: 512 * units.Kibibyte, - // We almost write 0 bytes, so no need to tune WriteBufferSize. - } - - DefaultHTTPConfigArguments = HTTPConfigArguments{ - HTTPServerArguments: &otelcol.HTTPServerArguments{ - Endpoint: "0.0.0.0:4318", - }, - MetricsURLPath: "/v1/metrics", - LogsURLPath: "/v1/logs", - TracesURLPath: "/v1/traces", - } -) - // Validate implements river.Validator. func (args *Arguments) Validate() error { if args.HTTP != nil { @@ -155,12 +134,25 @@ func validateURL(url string, urlName string) error { // SetToDefault implements river.Defaulter. func (args *GRPCServerArguments) SetToDefault() { - *args = DefaultGRPCServerArguments + *args = GRPCServerArguments{ + Endpoint: "0.0.0.0:4317", + Transport: "tcp", + + ReadBufferSize: 512 * units.Kibibyte, + // We almost write 0 bytes, so no need to tune WriteBufferSize. + } } // SetToDefault implements river.Defaulter. func (args *HTTPConfigArguments) SetToDefault() { - *args = DefaultHTTPConfigArguments + *args = HTTPConfigArguments{ + HTTPServerArguments: &otelcol.HTTPServerArguments{ + Endpoint: "0.0.0.0:4318", + }, + MetricsURLPath: "/v1/metrics", + LogsURLPath: "/v1/logs", + TracesURLPath: "/v1/traces", + } } // DebugMetricsConfig implements receiver.Arguments. diff --git a/internal/component/otelcol/receiver/receiver_test.go b/internal/component/otelcol/receiver/receiver_test.go index 2e6164a3f1..989b40fa9f 100644 --- a/internal/component/otelcol/receiver/receiver_test.go +++ b/internal/component/otelcol/receiver/receiver_test.go @@ -129,5 +129,7 @@ func (fa fakeReceiverArgs) NextConsumers() *otelcol.ConsumerArguments { } func (fa fakeReceiverArgs) DebugMetricsConfig() otelcol.DebugMetricsArguments { - return otelcol.DefaultDebugMetricsArguments + var args otelcol.DebugMetricsArguments + args.SetToDefault() + return args } diff --git a/internal/component/otelcol/receiver/vcenter/vcenter.go b/internal/component/otelcol/receiver/vcenter/vcenter.go index a44105a305..68f3eea716 100644 --- a/internal/component/otelcol/receiver/vcenter/vcenter.go +++ b/internal/component/otelcol/receiver/vcenter/vcenter.go @@ -86,6 +86,50 @@ type MetricsConfig struct { VcenterVMNetworkUsage MetricConfig `river:"vcenter.vm.network.usage,block,optional"` } +func (args *MetricsConfig) SetToDefault() { + *args = MetricsConfig{ + VcenterClusterCPUEffective: MetricConfig{Enabled: true}, + VcenterClusterCPULimit: MetricConfig{Enabled: true}, + VcenterClusterHostCount: MetricConfig{Enabled: true}, + VcenterClusterMemoryEffective: MetricConfig{Enabled: true}, + VcenterClusterMemoryLimit: MetricConfig{Enabled: true}, + VcenterClusterMemoryUsed: MetricConfig{Enabled: true}, + VcenterClusterVMCount: MetricConfig{Enabled: true}, + VcenterDatastoreDiskUsage: MetricConfig{Enabled: true}, + VcenterDatastoreDiskUtilization: MetricConfig{Enabled: true}, + VcenterHostCPUUsage: MetricConfig{Enabled: true}, + VcenterHostCPUUtilization: MetricConfig{Enabled: true}, + VcenterHostDiskLatencyAvg: MetricConfig{Enabled: true}, + VcenterHostDiskLatencyMax: MetricConfig{Enabled: true}, + VcenterHostDiskThroughput: MetricConfig{Enabled: true}, + VcenterHostMemoryUsage: MetricConfig{Enabled: true}, + VcenterHostMemoryUtilization: MetricConfig{Enabled: true}, + VcenterHostNetworkPacketCount: MetricConfig{Enabled: true}, + VcenterHostNetworkPacketErrors: MetricConfig{Enabled: true}, + VcenterHostNetworkThroughput: MetricConfig{Enabled: true}, + VcenterHostNetworkUsage: MetricConfig{Enabled: true}, + VcenterResourcePoolCPUShares: MetricConfig{Enabled: true}, + VcenterResourcePoolCPUUsage: MetricConfig{Enabled: true}, + VcenterResourcePoolMemoryShares: MetricConfig{Enabled: true}, + VcenterResourcePoolMemoryUsage: MetricConfig{Enabled: true}, + VcenterVMCPUUsage: MetricConfig{Enabled: true}, + VcenterVMCPUUtilization: MetricConfig{Enabled: true}, + VcenterVMDiskLatencyAvg: MetricConfig{Enabled: true}, + VcenterVMDiskLatencyMax: MetricConfig{Enabled: true}, + VcenterVMDiskThroughput: MetricConfig{Enabled: true}, + VcenterVMDiskUsage: MetricConfig{Enabled: true}, + VcenterVMDiskUtilization: MetricConfig{Enabled: true}, + VcenterVMMemoryBallooned: MetricConfig{Enabled: true}, + VcenterVMMemorySwapped: MetricConfig{Enabled: true}, + VcenterVMMemorySwappedSsd: MetricConfig{Enabled: true}, + VcenterVMMemoryUsage: MetricConfig{Enabled: true}, + VcenterVMMemoryUtilization: MetricConfig{Enabled: false}, + VcenterVMNetworkPacketCount: MetricConfig{Enabled: true}, + VcenterVMNetworkThroughput: MetricConfig{Enabled: true}, + VcenterVMNetworkUsage: MetricConfig{Enabled: true}, + } +} + func (args *MetricsConfig) Convert() map[string]interface{} { if args == nil { return nil @@ -157,6 +201,18 @@ type ResourceAttributesConfig struct { VcenterVMName ResourceAttributeConfig `river:"vcenter.vm.name,block,optional"` } +func (args *ResourceAttributesConfig) SetToDefault() { + *args = ResourceAttributesConfig{ + VcenterClusterName: ResourceAttributeConfig{Enabled: true}, + VcenterDatastoreName: ResourceAttributeConfig{Enabled: true}, + VcenterHostName: ResourceAttributeConfig{Enabled: true}, + VcenterResourcePoolInventoryPath: ResourceAttributeConfig{Enabled: true}, + VcenterResourcePoolName: ResourceAttributeConfig{Enabled: true}, + VcenterVMID: ResourceAttributeConfig{Enabled: true}, + VcenterVMName: ResourceAttributeConfig{Enabled: true}, + } +} + func (args *ResourceAttributesConfig) Convert() map[string]interface{} { if args == nil { return nil @@ -180,6 +236,12 @@ type MetricsBuilderConfig struct { ResourceAttributes ResourceAttributesConfig `river:"resource_attributes,block,optional"` } +func (mbc *MetricsBuilderConfig) SetToDefault() { + *mbc = MetricsBuilderConfig{} + mbc.Metrics.SetToDefault() + mbc.ResourceAttributes.SetToDefault() +} + func (args *MetricsBuilderConfig) Convert() map[string]interface{} { if args == nil { return nil @@ -213,69 +275,13 @@ type Arguments struct { var _ receiver.Arguments = Arguments{} -var ( - // DefaultArguments holds default values for Arguments. - DefaultArguments = Arguments{ - ScraperControllerArguments: otelcol.DefaultScraperControllerArguments, - MetricsBuilderConfig: MetricsBuilderConfig{ - Metrics: MetricsConfig{ - VcenterClusterCPUEffective: MetricConfig{Enabled: true}, - VcenterClusterCPULimit: MetricConfig{Enabled: true}, - VcenterClusterHostCount: MetricConfig{Enabled: true}, - VcenterClusterMemoryEffective: MetricConfig{Enabled: true}, - VcenterClusterMemoryLimit: MetricConfig{Enabled: true}, - VcenterClusterMemoryUsed: MetricConfig{Enabled: true}, - VcenterClusterVMCount: MetricConfig{Enabled: true}, - VcenterDatastoreDiskUsage: MetricConfig{Enabled: true}, - VcenterDatastoreDiskUtilization: MetricConfig{Enabled: true}, - VcenterHostCPUUsage: MetricConfig{Enabled: true}, - VcenterHostCPUUtilization: MetricConfig{Enabled: true}, - VcenterHostDiskLatencyAvg: MetricConfig{Enabled: true}, - VcenterHostDiskLatencyMax: MetricConfig{Enabled: true}, - VcenterHostDiskThroughput: MetricConfig{Enabled: true}, - VcenterHostMemoryUsage: MetricConfig{Enabled: true}, - VcenterHostMemoryUtilization: MetricConfig{Enabled: true}, - VcenterHostNetworkPacketCount: MetricConfig{Enabled: true}, - VcenterHostNetworkPacketErrors: MetricConfig{Enabled: true}, - VcenterHostNetworkThroughput: MetricConfig{Enabled: true}, - VcenterHostNetworkUsage: MetricConfig{Enabled: true}, - VcenterResourcePoolCPUShares: MetricConfig{Enabled: true}, - VcenterResourcePoolCPUUsage: MetricConfig{Enabled: true}, - VcenterResourcePoolMemoryShares: MetricConfig{Enabled: true}, - VcenterResourcePoolMemoryUsage: MetricConfig{Enabled: true}, - VcenterVMCPUUsage: MetricConfig{Enabled: true}, - VcenterVMCPUUtilization: MetricConfig{Enabled: true}, - VcenterVMDiskLatencyAvg: MetricConfig{Enabled: true}, - VcenterVMDiskLatencyMax: MetricConfig{Enabled: true}, - VcenterVMDiskThroughput: MetricConfig{Enabled: true}, - VcenterVMDiskUsage: MetricConfig{Enabled: true}, - VcenterVMDiskUtilization: MetricConfig{Enabled: true}, - VcenterVMMemoryBallooned: MetricConfig{Enabled: true}, - VcenterVMMemorySwapped: MetricConfig{Enabled: true}, - VcenterVMMemorySwappedSsd: MetricConfig{Enabled: true}, - VcenterVMMemoryUsage: MetricConfig{Enabled: true}, - VcenterVMMemoryUtilization: MetricConfig{Enabled: false}, - VcenterVMNetworkPacketCount: MetricConfig{Enabled: true}, - VcenterVMNetworkThroughput: MetricConfig{Enabled: true}, - VcenterVMNetworkUsage: MetricConfig{Enabled: true}, - }, - ResourceAttributes: ResourceAttributesConfig{ - VcenterClusterName: ResourceAttributeConfig{Enabled: true}, - VcenterDatastoreName: ResourceAttributeConfig{Enabled: true}, - VcenterHostName: ResourceAttributeConfig{Enabled: true}, - VcenterResourcePoolInventoryPath: ResourceAttributeConfig{Enabled: true}, - VcenterResourcePoolName: ResourceAttributeConfig{Enabled: true}, - VcenterVMID: ResourceAttributeConfig{Enabled: true}, - VcenterVMName: ResourceAttributeConfig{Enabled: true}, - }, - }, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, - } -) - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + ScraperControllerArguments: otelcol.DefaultScraperControllerArguments, + } + args.MetricsBuilderConfig.SetToDefault() + args.DebugMetrics.SetToDefault() } // Convert implements receiver.Arguments. diff --git a/internal/component/otelcol/receiver/zipkin/zipkin.go b/internal/component/otelcol/receiver/zipkin/zipkin.go index 46c6d74b9c..6cf15ac2a1 100644 --- a/internal/component/otelcol/receiver/zipkin/zipkin.go +++ b/internal/component/otelcol/receiver/zipkin/zipkin.go @@ -39,17 +39,14 @@ type Arguments struct { var _ receiver.Arguments = Arguments{} -// DefaultArguments holds default settings for otelcol.receiver.zipkin. -var DefaultArguments = Arguments{ - HTTPServer: otelcol.HTTPServerArguments{ - Endpoint: "0.0.0.0:9411", - }, - DebugMetrics: otelcol.DefaultDebugMetricsArguments, -} - // SetToDefault implements river.Defaulter. func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{ + HTTPServer: otelcol.HTTPServerArguments{ + Endpoint: "0.0.0.0:9411", + }, + } + args.DebugMetrics.SetToDefault() } // Convert implements receiver.Arguments. diff --git a/internal/component/prometheus/exporter/azure/azure.go b/internal/component/prometheus/exporter/azure/azure.go index 391e9c5932..3671cfa783 100644 --- a/internal/component/prometheus/exporter/azure/azure.go +++ b/internal/component/prometheus/exporter/azure/azure.go @@ -41,21 +41,19 @@ type Arguments struct { Regions []string `river:"regions,attr,optional"` } -var DefaultArguments = Arguments{ - Timespan: "PT1M", - MetricNameTemplate: "azure_{type}_{metric}_{aggregation}_{unit}", - MetricHelpTemplate: "Azure metric {metric} for {type} with aggregation {aggregation} as {unit}", - IncludedResourceTags: []string{"owner"}, - AzureCloudEnvironment: "azurecloud", - // Dimensions do not always apply to all metrics for a service, which requires you to configure multiple exporters - // to fully monitor a service which is tedious. Turning off validation eliminates this complexity. The underlying - // sdk will only give back the dimensions which are valid for particular metrics. - ValidateDimensions: false, -} - // SetToDefault implements river.Defaulter. func (a *Arguments) SetToDefault() { - *a = DefaultArguments + *a = Arguments{ + Timespan: "PT1M", + MetricNameTemplate: "azure_{type}_{metric}_{aggregation}_{unit}", + MetricHelpTemplate: "Azure metric {metric} for {type} with aggregation {aggregation} as {unit}", + IncludedResourceTags: []string{"owner"}, + AzureCloudEnvironment: "azurecloud", + // Dimensions do not always apply to all metrics for a service, which requires you to configure multiple exporters + // to fully monitor a service which is tedious. Turning off validation eliminates this complexity. The underlying + // sdk will only give back the dimensions which are valid for particular metrics. + ValidateDimensions: false, + } } // Validate implements river.Validator. diff --git a/internal/component/prometheus/exporter/cadvisor/cadvisor.go b/internal/component/prometheus/exporter/cadvisor/cadvisor.go index ce6d1f1ca8..e28b4e1c7d 100644 --- a/internal/component/prometheus/exporter/cadvisor/cadvisor.go +++ b/internal/component/prometheus/exporter/cadvisor/cadvisor.go @@ -26,30 +26,6 @@ func createExporter(opts component.Options, args component.Arguments, defaultIns return integrations.NewIntegrationWithInstanceKey(opts.Logger, a.Convert(), defaultInstanceKey) } -// DefaultArguments holds non-zero default options for Arguments when it is -// unmarshaled from river. -var DefaultArguments = Arguments{ - StoreContainerLabels: true, - AllowlistedContainerLabels: []string{""}, - EnvMetadataAllowlist: []string{""}, - RawCgroupPrefixAllowlist: []string{""}, - ResctrlInterval: 0, - StorageDuration: 2 * time.Minute, - - ContainerdHost: "/run/containerd/containerd.sock", - ContainerdNamespace: "k8s.io", - - // TODO(@tpaschalis) Do we need the default cert/key/ca since tls is disabled by default? - DockerHost: "unix:///var/run/docker.sock", - UseDockerTLS: false, - DockerTLSCert: "cert.pem", - DockerTLSKey: "key.pem", - DockerTLSCA: "ca.pem", - - DockerOnly: false, - DisableRootCgroupStats: false, -} - // Arguments configures the prometheus.exporter.cadvisor component. type Arguments struct { StoreContainerLabels bool `river:"store_container_labels,attr,optional"` @@ -74,7 +50,27 @@ type Arguments struct { // SetToDefault implements river.Defaulter. func (a *Arguments) SetToDefault() { - *a = DefaultArguments + *a = Arguments{ + StoreContainerLabels: true, + AllowlistedContainerLabels: []string{""}, + EnvMetadataAllowlist: []string{""}, + RawCgroupPrefixAllowlist: []string{""}, + ResctrlInterval: 0, + StorageDuration: 2 * time.Minute, + + ContainerdHost: "/run/containerd/containerd.sock", + ContainerdNamespace: "k8s.io", + + // TODO(@tpaschalis) Do we need the default cert/key/ca since tls is disabled by default? + DockerHost: "unix:///var/run/docker.sock", + UseDockerTLS: false, + DockerTLSCert: "cert.pem", + DockerTLSKey: "key.pem", + DockerTLSCA: "ca.pem", + + DockerOnly: false, + DisableRootCgroupStats: false, + } } // Convert returns the upstream-compatible configuration struct. diff --git a/internal/component/prometheus/exporter/self/self.go b/internal/component/prometheus/exporter/self/self.go index 3d0af166df..32735c19e5 100644 --- a/internal/component/prometheus/exporter/self/self.go +++ b/internal/component/prometheus/exporter/self/self.go @@ -30,12 +30,9 @@ type Arguments struct{} // Exports holds the values exported by the prometheus.exporter.self component. type Exports struct{} -// DefaultArguments defines the default settings -var DefaultArguments = Arguments{} - // SetToDefault implements river.Defaulter func (args *Arguments) SetToDefault() { - *args = DefaultArguments + *args = Arguments{} } func (a *Arguments) Convert() *agent.Config { diff --git a/internal/component/prometheus/exporter/windows/config_default_windows_test.go b/internal/component/prometheus/exporter/windows/config_default_windows_test.go index 7242ac42e5..6cdd9cf602 100644 --- a/internal/component/prometheus/exporter/windows/config_default_windows_test.go +++ b/internal/component/prometheus/exporter/windows/config_default_windows_test.go @@ -12,28 +12,30 @@ func TestRiverUnmarshalWithDefaultConfig(t *testing.T) { err := river.Unmarshal([]byte(""), &args) require.NoError(t, err) - require.Equal(t, DefaultArguments.EnabledCollectors, args.EnabledCollectors) - require.Equal(t, DefaultArguments.Dfsr.SourcesEnabled, args.Dfsr.SourcesEnabled) - require.Equal(t, DefaultArguments.Exchange.EnabledList, args.Exchange.EnabledList) - require.Equal(t, DefaultArguments.IIS.AppExclude, args.IIS.AppExclude) - require.Equal(t, DefaultArguments.IIS.AppInclude, args.IIS.AppInclude) - require.Equal(t, DefaultArguments.IIS.SiteExclude, args.IIS.SiteExclude) - require.Equal(t, DefaultArguments.IIS.SiteInclude, args.IIS.SiteInclude) - require.Equal(t, DefaultArguments.LogicalDisk.Exclude, args.LogicalDisk.Exclude) - require.Equal(t, DefaultArguments.LogicalDisk.Include, args.LogicalDisk.Include) - require.Equal(t, DefaultArguments.MSMQ.Where, args.MSMQ.Where) - require.Equal(t, DefaultArguments.MSSQL.EnabledClasses, args.MSSQL.EnabledClasses) - require.Equal(t, DefaultArguments.Network.Exclude, args.Network.Exclude) - require.Equal(t, DefaultArguments.Network.Include, args.Network.Include) - require.Equal(t, DefaultArguments.PhysicalDisk.Exclude, args.PhysicalDisk.Exclude) - require.Equal(t, DefaultArguments.PhysicalDisk.Include, args.PhysicalDisk.Include) - require.Equal(t, DefaultArguments.Process.Exclude, args.Process.Exclude) - require.Equal(t, DefaultArguments.Process.Include, args.Process.Include) - require.Equal(t, DefaultArguments.ScheduledTask.Exclude, args.ScheduledTask.Exclude) - require.Equal(t, DefaultArguments.ScheduledTask.Include, args.ScheduledTask.Include) - require.Equal(t, DefaultArguments.Service.UseApi, args.Service.UseApi) - require.Equal(t, DefaultArguments.Service.Where, args.Service.Where) - require.Equal(t, DefaultArguments.SMTP.Exclude, args.SMTP.Exclude) - require.Equal(t, DefaultArguments.SMTP.Include, args.SMTP.Include) - require.Equal(t, DefaultArguments.TextFile.TextFileDirectory, args.TextFile.TextFileDirectory) + var defaultArgs Arguments + defaultArgs.SetToDefault() + require.Equal(t, defaultArgs.EnabledCollectors, args.EnabledCollectors) + require.Equal(t, defaultArgs.Dfsr.SourcesEnabled, args.Dfsr.SourcesEnabled) + require.Equal(t, defaultArgs.Exchange.EnabledList, args.Exchange.EnabledList) + require.Equal(t, defaultArgs.IIS.AppExclude, args.IIS.AppExclude) + require.Equal(t, defaultArgs.IIS.AppInclude, args.IIS.AppInclude) + require.Equal(t, defaultArgs.IIS.SiteExclude, args.IIS.SiteExclude) + require.Equal(t, defaultArgs.IIS.SiteInclude, args.IIS.SiteInclude) + require.Equal(t, defaultArgs.LogicalDisk.Exclude, args.LogicalDisk.Exclude) + require.Equal(t, defaultArgs.LogicalDisk.Include, args.LogicalDisk.Include) + require.Equal(t, defaultArgs.MSMQ.Where, args.MSMQ.Where) + require.Equal(t, defaultArgs.MSSQL.EnabledClasses, args.MSSQL.EnabledClasses) + require.Equal(t, defaultArgs.Network.Exclude, args.Network.Exclude) + require.Equal(t, defaultArgs.Network.Include, args.Network.Include) + require.Equal(t, defaultArgs.PhysicalDisk.Exclude, args.PhysicalDisk.Exclude) + require.Equal(t, defaultArgs.PhysicalDisk.Include, args.PhysicalDisk.Include) + require.Equal(t, defaultArgs.Process.Exclude, args.Process.Exclude) + require.Equal(t, defaultArgs.Process.Include, args.Process.Include) + require.Equal(t, defaultArgs.ScheduledTask.Exclude, args.ScheduledTask.Exclude) + require.Equal(t, defaultArgs.ScheduledTask.Include, args.ScheduledTask.Include) + require.Equal(t, defaultArgs.Service.UseApi, args.Service.UseApi) + require.Equal(t, defaultArgs.Service.Where, args.Service.Where) + require.Equal(t, defaultArgs.SMTP.Exclude, args.SMTP.Exclude) + require.Equal(t, defaultArgs.SMTP.Include, args.SMTP.Include) + require.Equal(t, defaultArgs.TextFile.TextFileDirectory, args.TextFile.TextFileDirectory) } diff --git a/internal/component/prometheus/exporter/windows/config_windows.go b/internal/component/prometheus/exporter/windows/config_windows.go index 773e3f5bfc..d1e138b9b5 100644 --- a/internal/component/prometheus/exporter/windows/config_windows.go +++ b/internal/component/prometheus/exporter/windows/config_windows.go @@ -7,74 +7,70 @@ import ( col "github.com/prometheus-community/windows_exporter/pkg/collector" ) -// DefaultArguments holds non-zero default options for Arguments when it is -// unmarshaled from YAML. -var DefaultArguments = Arguments{ - EnabledCollectors: strings.Split(windows_integration.DefaultConfig.EnabledCollectors, ","), - Dfsr: DfsrConfig{ - SourcesEnabled: strings.Split(col.ConfigDefaults.Dfsr.DfsrEnabledCollectors, ","), - }, - Exchange: ExchangeConfig{ - EnabledList: strings.Split(col.ConfigDefaults.Exchange.CollectorsEnabled, ","), - }, - IIS: IISConfig{ - AppBlackList: col.ConfigDefaults.Iis.AppExclude, - AppWhiteList: col.ConfigDefaults.Iis.AppInclude, - SiteBlackList: col.ConfigDefaults.Iis.SiteExclude, - SiteWhiteList: col.ConfigDefaults.Iis.SiteInclude, - AppInclude: col.ConfigDefaults.Iis.AppInclude, - AppExclude: col.ConfigDefaults.Iis.AppExclude, - SiteInclude: col.ConfigDefaults.Iis.SiteInclude, - SiteExclude: col.ConfigDefaults.Iis.SiteExclude, - }, - LogicalDisk: LogicalDiskConfig{ - BlackList: col.ConfigDefaults.LogicalDisk.VolumeExclude, - WhiteList: col.ConfigDefaults.LogicalDisk.VolumeInclude, - Include: col.ConfigDefaults.LogicalDisk.VolumeInclude, - Exclude: col.ConfigDefaults.LogicalDisk.VolumeExclude, - }, - MSMQ: MSMQConfig{ - Where: col.ConfigDefaults.Msmq.QueryWhereClause, - }, - MSSQL: MSSQLConfig{ - EnabledClasses: strings.Split(col.ConfigDefaults.Mssql.EnabledCollectors, ","), - }, - Network: NetworkConfig{ - BlackList: col.ConfigDefaults.Net.NicExclude, - WhiteList: col.ConfigDefaults.Net.NicInclude, - Include: col.ConfigDefaults.Net.NicInclude, - Exclude: col.ConfigDefaults.Net.NicExclude, - }, - PhysicalDisk: PhysicalDiskConfig{ - Exclude: col.ConfigDefaults.PhysicalDisk.DiskExclude, - Include: col.ConfigDefaults.PhysicalDisk.DiskInclude, - }, - Process: ProcessConfig{ - BlackList: col.ConfigDefaults.Process.ProcessExclude, - WhiteList: col.ConfigDefaults.Process.ProcessInclude, - Include: col.ConfigDefaults.Process.ProcessInclude, - Exclude: col.ConfigDefaults.Process.ProcessExclude, - }, - ScheduledTask: ScheduledTaskConfig{ - Include: col.ConfigDefaults.ScheduledTask.TaskInclude, - Exclude: col.ConfigDefaults.ScheduledTask.TaskExclude, - }, - Service: ServiceConfig{ - UseApi: "false", - Where: col.ConfigDefaults.Service.ServiceWhereClause, - }, - SMTP: SMTPConfig{ - BlackList: col.ConfigDefaults.Smtp.ServerExclude, - WhiteList: col.ConfigDefaults.Smtp.ServerInclude, - Include: col.ConfigDefaults.Smtp.ServerInclude, - Exclude: col.ConfigDefaults.Smtp.ServerExclude, - }, - TextFile: TextFileConfig{ - TextFileDirectory: col.ConfigDefaults.Textfile.TextFileDirectories, - }, -} - // SetToDefault implements river.Defaulter. func (a *Arguments) SetToDefault() { - *a = DefaultArguments + *a = Arguments{ + EnabledCollectors: strings.Split(windows_integration.DefaultConfig.EnabledCollectors, ","), + Dfsr: DfsrConfig{ + SourcesEnabled: strings.Split(col.ConfigDefaults.Dfsr.DfsrEnabledCollectors, ","), + }, + Exchange: ExchangeConfig{ + EnabledList: strings.Split(col.ConfigDefaults.Exchange.CollectorsEnabled, ","), + }, + IIS: IISConfig{ + AppBlackList: col.ConfigDefaults.Iis.AppExclude, + AppWhiteList: col.ConfigDefaults.Iis.AppInclude, + SiteBlackList: col.ConfigDefaults.Iis.SiteExclude, + SiteWhiteList: col.ConfigDefaults.Iis.SiteInclude, + AppInclude: col.ConfigDefaults.Iis.AppInclude, + AppExclude: col.ConfigDefaults.Iis.AppExclude, + SiteInclude: col.ConfigDefaults.Iis.SiteInclude, + SiteExclude: col.ConfigDefaults.Iis.SiteExclude, + }, + LogicalDisk: LogicalDiskConfig{ + BlackList: col.ConfigDefaults.LogicalDisk.VolumeExclude, + WhiteList: col.ConfigDefaults.LogicalDisk.VolumeInclude, + Include: col.ConfigDefaults.LogicalDisk.VolumeInclude, + Exclude: col.ConfigDefaults.LogicalDisk.VolumeExclude, + }, + MSMQ: MSMQConfig{ + Where: col.ConfigDefaults.Msmq.QueryWhereClause, + }, + MSSQL: MSSQLConfig{ + EnabledClasses: strings.Split(col.ConfigDefaults.Mssql.EnabledCollectors, ","), + }, + Network: NetworkConfig{ + BlackList: col.ConfigDefaults.Net.NicExclude, + WhiteList: col.ConfigDefaults.Net.NicInclude, + Include: col.ConfigDefaults.Net.NicInclude, + Exclude: col.ConfigDefaults.Net.NicExclude, + }, + PhysicalDisk: PhysicalDiskConfig{ + Exclude: col.ConfigDefaults.PhysicalDisk.DiskExclude, + Include: col.ConfigDefaults.PhysicalDisk.DiskInclude, + }, + Process: ProcessConfig{ + BlackList: col.ConfigDefaults.Process.ProcessExclude, + WhiteList: col.ConfigDefaults.Process.ProcessInclude, + Include: col.ConfigDefaults.Process.ProcessInclude, + Exclude: col.ConfigDefaults.Process.ProcessExclude, + }, + ScheduledTask: ScheduledTaskConfig{ + Include: col.ConfigDefaults.ScheduledTask.TaskInclude, + Exclude: col.ConfigDefaults.ScheduledTask.TaskExclude, + }, + Service: ServiceConfig{ + UseApi: "false", + Where: col.ConfigDefaults.Service.ServiceWhereClause, + }, + SMTP: SMTPConfig{ + BlackList: col.ConfigDefaults.Smtp.ServerExclude, + WhiteList: col.ConfigDefaults.Smtp.ServerInclude, + Include: col.ConfigDefaults.Smtp.ServerInclude, + Exclude: col.ConfigDefaults.Smtp.ServerExclude, + }, + TextFile: TextFileConfig{ + TextFileDirectory: col.ConfigDefaults.Textfile.TextFileDirectories, + }, + } } diff --git a/internal/converter/internal/staticconvert/testdata-v2/integrations_v2.river b/internal/converter/internal/staticconvert/testdata-v2/integrations_v2.river index b8a1b67208..38f656b4ee 100644 --- a/internal/converter/internal/staticconvert/testdata-v2/integrations_v2.river +++ b/internal/converter/internal/staticconvert/testdata-v2/integrations_v2.river @@ -30,15 +30,13 @@ faro.receiver "integrations_app_agent_receiver" { max_allowed_payload_size = "4MiB786KiB832B" rate_limiting { - enabled = true rate = 100 burst_size = 50 } } sourcemaps { - download_from_origins = ["*"] - download_timeout = "1s" + download = false } output { diff --git a/internal/converter/internal/staticconvert/testdata-v2/unsupported.river b/internal/converter/internal/staticconvert/testdata-v2/unsupported.river index c854f1bd9d..9f06a3cdc5 100644 --- a/internal/converter/internal/staticconvert/testdata-v2/unsupported.river +++ b/internal/converter/internal/staticconvert/testdata-v2/unsupported.river @@ -25,15 +25,13 @@ faro.receiver "integrations_app_agent_receiver" { max_allowed_payload_size = "4MiB786KiB832B" rate_limiting { - enabled = true rate = 100 burst_size = 50 } } sourcemaps { - download_from_origins = ["*"] - download_timeout = "1s" + download = false } output { diff --git a/internal/converter/internal/staticconvert/testdata/traces_multi.river b/internal/converter/internal/staticconvert/testdata/traces_multi.river index b7e4a4ea76..acf5f44e06 100644 --- a/internal/converter/internal/staticconvert/testdata/traces_multi.river +++ b/internal/converter/internal/staticconvert/testdata/traces_multi.river @@ -3,7 +3,9 @@ otelcol.receiver.otlp "trace_config_1_default" { include_metadata = true } - http { } + http { + include_metadata = true + } output { metrics = [] @@ -40,7 +42,9 @@ otelcol.receiver.otlp "trace_config_2_default" { include_metadata = true } - http { } + http { + include_metadata = true + } output { metrics = [] diff --git a/internal/converter/internal/staticconvert/testdata/unsupported.river b/internal/converter/internal/staticconvert/testdata/unsupported.river index 3e9a55630b..cd5e525bef 100644 --- a/internal/converter/internal/staticconvert/testdata/unsupported.river +++ b/internal/converter/internal/staticconvert/testdata/unsupported.river @@ -55,7 +55,9 @@ otelcol.receiver.otlp "default" { include_metadata = true } - http { } + http { + include_metadata = true + } output { metrics = []