From d8e1a234f7a0fb6bbd6c4724f422b878afbb61b5 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Sat, 7 Dec 2024 20:19:02 +0100 Subject: [PATCH 01/23] feat: init valkey receiver --- receiver/valkeyreceiver/Makefile | 1 + receiver/valkeyreceiver/README.md | 1 + receiver/valkeyreceiver/client.go | 65 +++++ receiver/valkeyreceiver/config.go | 53 ++++ receiver/valkeyreceiver/doc.go | 6 + receiver/valkeyreceiver/documentation.md | 35 +++ receiver/valkeyreceiver/factory.go | 57 ++++ .../generated_component_test.go | 69 +++++ .../valkeyreceiver/generated_package_test.go | 12 + receiver/valkeyreceiver/go.mod | 66 +++++ receiver/valkeyreceiver/go.sum | 166 +++++++++++ .../internal/metadata/generated_config.go | 100 +++++++ .../metadata/generated_config_test.go | 117 ++++++++ .../internal/metadata/generated_metrics.go | 268 ++++++++++++++++++ .../metadata/generated_metrics_test.go | 120 ++++++++ .../internal/metadata/generated_resource.go | 50 ++++ .../metadata/generated_resource_test.go | 52 ++++ .../internal/metadata/generated_status.go | 16 ++ .../internal/metadata/testdata/config.yaml | 51 ++++ receiver/valkeyreceiver/metadata.yaml | 48 ++++ receiver/valkeyreceiver/receiver.go | 94 ++++++ receiver/valkeyreceiver/receiver_test.go | 25 ++ 22 files changed, 1472 insertions(+) create mode 100644 receiver/valkeyreceiver/Makefile create mode 100644 receiver/valkeyreceiver/README.md create mode 100644 receiver/valkeyreceiver/client.go create mode 100644 receiver/valkeyreceiver/config.go create mode 100644 receiver/valkeyreceiver/doc.go create mode 100644 receiver/valkeyreceiver/documentation.md create mode 100644 receiver/valkeyreceiver/factory.go create mode 100644 receiver/valkeyreceiver/generated_component_test.go create mode 100644 receiver/valkeyreceiver/generated_package_test.go create mode 100644 receiver/valkeyreceiver/go.mod create mode 100644 receiver/valkeyreceiver/go.sum create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_config.go create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_config_test.go create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_metrics.go create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_metrics_test.go create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_resource.go create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_resource_test.go create mode 100644 receiver/valkeyreceiver/internal/metadata/generated_status.go create mode 100644 receiver/valkeyreceiver/internal/metadata/testdata/config.yaml create mode 100644 receiver/valkeyreceiver/metadata.yaml create mode 100644 receiver/valkeyreceiver/receiver.go create mode 100644 receiver/valkeyreceiver/receiver_test.go diff --git a/receiver/valkeyreceiver/Makefile b/receiver/valkeyreceiver/Makefile new file mode 100644 index 000000000000..c1496226e590 --- /dev/null +++ b/receiver/valkeyreceiver/Makefile @@ -0,0 +1 @@ +include ../../Makefile.Common \ No newline at end of file diff --git a/receiver/valkeyreceiver/README.md b/receiver/valkeyreceiver/README.md new file mode 100644 index 000000000000..09b0d3f28605 --- /dev/null +++ b/receiver/valkeyreceiver/README.md @@ -0,0 +1 @@ +https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-metrics.md#metric-dbclientconnectioncount diff --git a/receiver/valkeyreceiver/client.go b/receiver/valkeyreceiver/client.go new file mode 100644 index 000000000000..1f5d452b9b22 --- /dev/null +++ b/receiver/valkeyreceiver/client.go @@ -0,0 +1,65 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 +package valkeyreceiver + +import ( + "context" + "fmt" + "strings" + + "github.com/valkey-io/valkey-go" +) + +var attrDelimiter = "\r\n" + +// Interface for a Valkey client. Implementation can be faked for testing. +type client interface { + // retrieves a string of key/value pairs of valkey metadata + retrieveInfo(context.Context) (map[string]string, error) + // close release Valkey client connection pool + close() error +} + +// Wraps a real Valkey client, implements `client` interface. +type valkeyClient struct { + client valkey.Client +} + +var _ client = (*valkeyClient)(nil) + +// Creates a new real Valkey client from the passed-in valkey.Options. +func newValkeyClient(options valkey.ClientOption) (client, error) { + innerClient, err := valkey.NewClient(options) + if err != nil { + return nil, err + } + return &valkeyClient{innerClient}, nil +} + +// Retrieve Valkey INFO. We retrieve all of the 'sections'. +func (c *valkeyClient) retrieveInfo(ctx context.Context) (map[string]string, error) { + attrs := make(map[string]string) + str, err := c.client.Do(ctx, c.client.B().Info().Build()).ToString() + if err != nil { + return attrs, err + } + + lines := strings.Split(str, attrDelimiter) + for _, line := range lines { + fmt.Printf("Line: %s\n", line) + if len(line) == 0 || strings.HasPrefix(line, "#") { + continue + } + pair := strings.Split(line, ":") + if len(pair) == 2 { // defensive, should always == 2 + attrs[pair[0]] = pair[1] + } + } + return attrs, nil +} + +// close client to release connention pool. +func (c *valkeyClient) close() error { + c.client.Close() + return nil +} diff --git a/receiver/valkeyreceiver/config.go b/receiver/valkeyreceiver/config.go new file mode 100644 index 000000000000..e2d7ce2a090f --- /dev/null +++ b/receiver/valkeyreceiver/config.go @@ -0,0 +1,53 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" + +import ( + "fmt" + "net" + + "go.opentelemetry.io/collector/config/confignet" + "go.opentelemetry.io/collector/config/configopaque" + "go.opentelemetry.io/collector/config/configtls" + "go.opentelemetry.io/collector/receiver/scraperhelper" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" +) + +type Config struct { + scraperhelper.ControllerConfig `mapstructure:",squash"` + // TODO: Use one of the configs from core. + // The target endpoint. + confignet.AddrConfig `mapstructure:",squash"` + + // TODO allow users to add additional resource key value pairs? + + // Optional username. Use the specified Username to authenticate the current connection + // with one of the connections defined in the ACL list when connecting + // to a valkey 6.0 instance, or greater, that is using the valkey ACL system. + Username string `mapstructure:"username"` + + // Optional password. Must match the password specified in the + // requirepass server configuration option, or the user's password when connecting + // to a valkey 6.0 instance, or greater, that is using the valkey ACL system. + Password configopaque.String `mapstructure:"password"` + + TLS configtls.ClientConfig `mapstructure:"tls,omitempty"` + + MetricsBuilderConfig metadata.MetricsBuilderConfig `mapstructure:",squash"` +} + +// configInfo holds configuration information to be used as resource/metrics attributes. +type configInfo struct { + Address string + Port string +} + +func newConfigInfo(cfg *Config) (configInfo, error) { + address, port, err := net.SplitHostPort(cfg.Endpoint) + if err != nil { + return configInfo{}, fmt.Errorf("invalid endpoint %q: %w", cfg.Endpoint, err) + } + return configInfo{Address: address, Port: port}, nil +} diff --git a/receiver/valkeyreceiver/doc.go b/receiver/valkeyreceiver/doc.go new file mode 100644 index 000000000000..30cf0711f8c1 --- /dev/null +++ b/receiver/valkeyreceiver/doc.go @@ -0,0 +1,6 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:generate mdatagen metadata.yaml + +package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" diff --git a/receiver/valkeyreceiver/documentation.md b/receiver/valkeyreceiver/documentation.md new file mode 100644 index 000000000000..420983e11b41 --- /dev/null +++ b/receiver/valkeyreceiver/documentation.md @@ -0,0 +1,35 @@ +[comment]: <> (Code generated by mdatagen. DO NOT EDIT.) + +# valkey + +## Default Metrics + +The following metrics are emitted by default. Each of them can be disabled by applying the following configuration: + +```yaml +metrics: + : + enabled: false +``` + +### valkey.client.connection.count + +The number of connections that are currently in state described by the state attribute + +| Unit | Metric Type | Value Type | +| ---- | ----------- | ---------- | +| {connection} | Gauge | Int | + +#### Attributes + +| Name | Description | Values | +| ---- | ----------- | ------ | +| valkey.client.connection.state | The state of a connection in the pool | Str: ``used``, ``blocked``, ``tracking`` | + +## Resource Attributes + +| Name | Description | Values | Enabled | +| ---- | ----------- | ------ | ------- | +| server.address | Valkey server's address | Any Str | false | +| server.port | Valkey server's port | Any Str | false | +| valkey.version | Valkey server's version. | Any Str | true | diff --git a/receiver/valkeyreceiver/factory.go b/receiver/valkeyreceiver/factory.go new file mode 100644 index 000000000000..db2bd97670b1 --- /dev/null +++ b/receiver/valkeyreceiver/factory.go @@ -0,0 +1,57 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" + +import ( + "context" + "time" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config/confignet" + "go.opentelemetry.io/collector/config/configtls" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/scraperhelper" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" +) + +// NewFactory creates a factory for Valkey receiver. +func NewFactory() receiver.Factory { + return receiver.NewFactory( + metadata.Type, + createDefaultConfig, + receiver.WithMetrics(createMetricsReceiver, metadata.MetricsStability)) +} + +func createDefaultConfig() component.Config { + scs := scraperhelper.NewDefaultControllerConfig() + scs.CollectionInterval = 10 * time.Second + return &Config{ + AddrConfig: confignet.AddrConfig{ + Transport: confignet.TransportTypeTCP, + }, + TLS: configtls.ClientConfig{ + Insecure: true, + }, + ControllerConfig: scs, + MetricsBuilderConfig: metadata.DefaultMetricsBuilderConfig(), + } +} + +func createMetricsReceiver( + _ context.Context, + set receiver.Settings, + cfg component.Config, + consumer consumer.Metrics, +) (receiver.Metrics, error) { + oCfg := cfg.(*Config) + + scrp, err := newValkeyScraper(oCfg, set) + if err != nil { + return nil, err + } + + return scraperhelper.NewScraperControllerReceiver(&oCfg.ControllerConfig, set, consumer, scraperhelper.AddScraper(scrp)) +} diff --git a/receiver/valkeyreceiver/generated_component_test.go b/receiver/valkeyreceiver/generated_component_test.go new file mode 100644 index 000000000000..7af8cfd3a7da --- /dev/null +++ b/receiver/valkeyreceiver/generated_component_test.go @@ -0,0 +1,69 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package valkeyreceiver + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/confmap/confmaptest" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/receivertest" +) + +func TestComponentFactoryType(t *testing.T) { + require.Equal(t, "valkey", NewFactory().Type().String()) +} + +func TestComponentConfigStruct(t *testing.T) { + require.NoError(t, componenttest.CheckConfigStruct(NewFactory().CreateDefaultConfig())) +} + +func TestComponentLifecycle(t *testing.T) { + factory := NewFactory() + + tests := []struct { + name string + createFn func(ctx context.Context, set receiver.Settings, cfg component.Config) (component.Component, error) + }{ + + { + name: "metrics", + createFn: func(ctx context.Context, set receiver.Settings, cfg component.Config) (component.Component, error) { + return factory.CreateMetrics(ctx, set, cfg, consumertest.NewNop()) + }, + }, + } + + cm, err := confmaptest.LoadConf("metadata.yaml") + require.NoError(t, err) + cfg := factory.CreateDefaultConfig() + sub, err := cm.Sub("tests::config") + require.NoError(t, err) + require.NoError(t, sub.Unmarshal(&cfg)) + + for _, tt := range tests { + t.Run(tt.name+"-shutdown", func(t *testing.T) { + c, err := tt.createFn(context.Background(), receivertest.NewNopSettings(), cfg) + require.NoError(t, err) + err = c.Shutdown(context.Background()) + require.NoError(t, err) + }) + t.Run(tt.name+"-lifecycle", func(t *testing.T) { + firstRcvr, err := tt.createFn(context.Background(), receivertest.NewNopSettings(), cfg) + require.NoError(t, err) + host := componenttest.NewNopHost() + require.NoError(t, err) + require.NoError(t, firstRcvr.Start(context.Background(), host)) + require.NoError(t, firstRcvr.Shutdown(context.Background())) + secondRcvr, err := tt.createFn(context.Background(), receivertest.NewNopSettings(), cfg) + require.NoError(t, err) + require.NoError(t, secondRcvr.Start(context.Background(), host)) + require.NoError(t, secondRcvr.Shutdown(context.Background())) + }) + } +} diff --git a/receiver/valkeyreceiver/generated_package_test.go b/receiver/valkeyreceiver/generated_package_test.go new file mode 100644 index 000000000000..427c4c582346 --- /dev/null +++ b/receiver/valkeyreceiver/generated_package_test.go @@ -0,0 +1,12 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package valkeyreceiver + +import ( + "go.uber.org/goleak" + "testing" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod new file mode 100644 index 000000000000..8cd9bbd0ca54 --- /dev/null +++ b/receiver/valkeyreceiver/go.mod @@ -0,0 +1,66 @@ +module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver + +go 1.22.0 + +require ( + github.com/google/go-cmp v0.6.0 + github.com/stretchr/testify v1.9.0 + github.com/valkey-io/valkey-go v1.0.45 + go.opentelemetry.io/collector/component v0.108.1 + go.opentelemetry.io/collector/config/confignet v0.108.1 + go.opentelemetry.io/collector/config/configopaque v1.14.1 + go.opentelemetry.io/collector/config/configtls v1.14.1 + go.opentelemetry.io/collector/confmap v1.14.1 + go.opentelemetry.io/collector/consumer v0.108.1 + go.opentelemetry.io/collector/consumer/consumertest v0.108.1 + go.opentelemetry.io/collector/filter v0.108.1 + go.opentelemetry.io/collector/pdata v1.14.1 + go.opentelemetry.io/collector/receiver v0.108.1 + go.uber.org/goleak v1.3.0 + go.uber.org/zap v1.27.0 +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-viper/mapstructure/v2 v2.1.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/knadh/koanf/maps v0.1.1 // indirect + github.com/knadh/koanf/providers/confmap v0.1.0 // indirect + github.com/knadh/koanf/v2 v2.1.1 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + go.opentelemetry.io/collector v0.108.1 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.108.1 // indirect + go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.1 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.108.1 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.50.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sys v0.24.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/grpc v1.65.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum new file mode 100644 index 000000000000..4f288b5d9ae6 --- /dev/null +++ b/receiver/valkeyreceiver/go.sum @@ -0,0 +1,166 @@ +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-viper/mapstructure/v2 v2.1.0 h1:gHnMa2Y/pIxElCH2GlZZ1lZSsn6XMtufpGyP1XxdC/w= +github.com/go-viper/mapstructure/v2 v2.1.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= +github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= +github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= +github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= +github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= +github.com/knadh/koanf/v2 v2.1.1/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= +github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/valkey-io/valkey-go v1.0.45 h1:d2ksu+FvKEy9pU9CCMZ94ABTLm2kNHU0jxEJZRqpFA4= +github.com/valkey-io/valkey-go v1.0.45/go.mod h1:BXlVAPIL9rFQinSFM+N32JfWzfCaUAqBpZkc4vPY6fM= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opentelemetry.io/collector v0.108.1 h1:c3JZU5g5KezDXaMgL7GDFB7ihuLNzXo6eBuaJOmBiDA= +go.opentelemetry.io/collector v0.108.1/go.mod h1:7GL32WiQkZzJjxHstHme9igzYumDsw1hFPep3v1guHQ= +go.opentelemetry.io/collector/component v0.108.1 h1:X+Afj07brX0NC36t6PvAq+ehaeUO/Q9eJNOUwhInpeY= +go.opentelemetry.io/collector/component v0.108.1/go.mod h1:qrP2TiJT5qw4sSiAKne+gb+hb1qTixLXuQRZjMCnLjY= +go.opentelemetry.io/collector/config/confignet v0.108.1 h1:gmcJI8136JZ0201v0BfGlHcFBxLNy09mGLPUr+GyfHU= +go.opentelemetry.io/collector/config/confignet v0.108.1/go.mod h1:o3v4joAEjvLwntqexg5ixMqRrU1+Vst+jWuCUaBNgOg= +go.opentelemetry.io/collector/config/configopaque v1.14.1 h1:5xAEa4ld+57xWKdU2gR5/6+rBa7LTCPfShJQFUxN0Zw= +go.opentelemetry.io/collector/config/configopaque v1.14.1/go.mod h1:6zlLIyOoRpJJ+0bEKrlZOZon3rOp5Jrz9fMdR4twOS4= +go.opentelemetry.io/collector/config/configtelemetry v0.108.1 h1:jjdH1R6FMz4l1nSvY7F3H0F09xW9LKTke7k3ZAPcmSU= +go.opentelemetry.io/collector/config/configtelemetry v0.108.1/go.mod h1:R0MBUxjSMVMIhljuDHWIygzzJWQyZHXXWIgQNxcFwhc= +go.opentelemetry.io/collector/config/configtls v1.14.1 h1:cd5kNvLnIe+GVHUV6Fk6O5fkwS4at8dVCrFo7t0O8kE= +go.opentelemetry.io/collector/config/configtls v1.14.1/go.mod h1:StxglrVWeRIFaqc2hpsF9xSsv2A5MOAx5GhG4WjFuP4= +go.opentelemetry.io/collector/confmap v1.14.1 h1:GPMa+q5ThiBFQaYKJ7xeomiw9tIokkTA1AiF1zwKJck= +go.opentelemetry.io/collector/confmap v1.14.1/go.mod h1:GrIZ12P/9DPOuTpe2PIS51a0P/ZM6iKtByVee1Uf3+k= +go.opentelemetry.io/collector/consumer v0.108.1 h1:75zHUpIDfgZMp3t9fYdpXXE6/wsBs9DwTZdfwS3+NDI= +go.opentelemetry.io/collector/consumer v0.108.1/go.mod h1:xu2pOTqK+uCFXZWd9RcU8s6sCRwK5GyuP64YuHLMzzA= +go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.1 h1:inFvEN7nB9ECFUjJzv+TsylCM8r1ocqOUrnNVdkMkZo= +go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.1/go.mod h1:F6Shxg3TqoDZe2+p2PkVRUsnJMqATQxbs4c1nfaJrAc= +go.opentelemetry.io/collector/consumer/consumertest v0.108.1 h1:WLvi27Vu5nkltjhmdN+pDO9EuRphYpOQxoqZ9A3RkKU= +go.opentelemetry.io/collector/consumer/consumertest v0.108.1/go.mod h1:tRqOtUukG76iBlPTAUwFSU87dDO+x33Gyn2x9mecfko= +go.opentelemetry.io/collector/filter v0.108.1 h1:ufGbKhP8v7weLrfLWlR0nVLdyW9yvsSpWtkCwv7CNE0= +go.opentelemetry.io/collector/filter v0.108.1/go.mod h1:iNMJ4W+R9LUqr8uyeEIthuOKVEQBMYS32ePBza3Ofbk= +go.opentelemetry.io/collector/pdata v1.14.1 h1:wXZjtQA7Vy5HFqco+yA95ENyMQU5heBB1IxMHQf6mUk= +go.opentelemetry.io/collector/pdata v1.14.1/go.mod h1:z1dTjwwtcoXxZx2/nkHysjxMeaxe9pEmYTEr4SMNIx8= +go.opentelemetry.io/collector/pdata/pprofile v0.108.1 h1:/XbunfZ+/jt1+d1p4zM4vZ/AgeaIJsayjYdlN1fV+tk= +go.opentelemetry.io/collector/pdata/pprofile v0.108.1/go.mod h1:/GvG2WcN9Dajlw4QaIOjgz7N32wSfPL3qxJ0BKOcVPo= +go.opentelemetry.io/collector/pdata/testdata v0.108.1 h1:TpBDoBMBYvC/Ibswe3Ec2eof8XrRrEec6+tfnTeTSGk= +go.opentelemetry.io/collector/pdata/testdata v0.108.1/go.mod h1:PdUmBA4yDRD4Wf0fpCyrpdZexz9EDoHBw5Ot4iIUPRs= +go.opentelemetry.io/collector/receiver v0.108.1 h1:YQgDv69v3fgd6uoiGZ+vUdUPdNzoodbLzjB7XfdQvxs= +go.opentelemetry.io/collector/receiver v0.108.1/go.mod h1:eKe/VJgdvHr8JsBDma/PF3DlaheTRC2X6AmCUByJCNU= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= +go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= +go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/receiver/valkeyreceiver/internal/metadata/generated_config.go b/receiver/valkeyreceiver/internal/metadata/generated_config.go new file mode 100644 index 000000000000..269c888449ae --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_config.go @@ -0,0 +1,100 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/confmap" + "go.opentelemetry.io/collector/filter" +) + +// MetricConfig provides common config for a particular metric. +type MetricConfig struct { + Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (ms *MetricConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(ms) + if err != nil { + return err + } + ms.enabledSetByUser = parser.IsSet("enabled") + return nil +} + +// MetricsConfig provides config for valkey metrics. +type MetricsConfig struct { + ValkeyClientConnectionCount MetricConfig `mapstructure:"valkey.client.connection.count"` +} + +func DefaultMetricsConfig() MetricsConfig { + return MetricsConfig{ + ValkeyClientConnectionCount: MetricConfig{ + Enabled: true, + }, + } +} + +// ResourceAttributeConfig provides common config for a particular resource attribute. +type ResourceAttributeConfig struct { + Enabled bool `mapstructure:"enabled"` + // Experimental: MetricsInclude defines a list of filters for attribute values. + // If the list is not empty, only metrics with matching resource attribute values will be emitted. + MetricsInclude []filter.Config `mapstructure:"metrics_include"` + // Experimental: MetricsExclude defines a list of filters for attribute values. + // If the list is not empty, metrics with matching resource attribute values will not be emitted. + // MetricsInclude has higher priority than MetricsExclude. + MetricsExclude []filter.Config `mapstructure:"metrics_exclude"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil +} + +// ResourceAttributesConfig provides config for valkey resource attributes. +type ResourceAttributesConfig struct { + ServerAddress ResourceAttributeConfig `mapstructure:"server.address"` + ServerPort ResourceAttributeConfig `mapstructure:"server.port"` + ValkeyVersion ResourceAttributeConfig `mapstructure:"valkey.version"` +} + +func DefaultResourceAttributesConfig() ResourceAttributesConfig { + return ResourceAttributesConfig{ + ServerAddress: ResourceAttributeConfig{ + Enabled: false, + }, + ServerPort: ResourceAttributeConfig{ + Enabled: false, + }, + ValkeyVersion: ResourceAttributeConfig{ + Enabled: true, + }, + } +} + +// MetricsBuilderConfig is a configuration for valkey metrics builder. +type MetricsBuilderConfig struct { + Metrics MetricsConfig `mapstructure:"metrics"` + ResourceAttributes ResourceAttributesConfig `mapstructure:"resource_attributes"` +} + +func DefaultMetricsBuilderConfig() MetricsBuilderConfig { + return MetricsBuilderConfig{ + Metrics: DefaultMetricsConfig(), + ResourceAttributes: DefaultResourceAttributesConfig(), + } +} diff --git a/receiver/valkeyreceiver/internal/metadata/generated_config_test.go b/receiver/valkeyreceiver/internal/metadata/generated_config_test.go new file mode 100644 index 000000000000..9594bba4b6e6 --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_config_test.go @@ -0,0 +1,117 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "path/filepath" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/confmap/confmaptest" +) + +func TestMetricsBuilderConfig(t *testing.T) { + tests := []struct { + name string + want MetricsBuilderConfig + }{ + { + name: "default", + want: DefaultMetricsBuilderConfig(), + }, + { + name: "all_set", + want: MetricsBuilderConfig{ + Metrics: MetricsConfig{ + ValkeyClientConnectionCount: MetricConfig{Enabled: true}, + }, + ResourceAttributes: ResourceAttributesConfig{ + ServerAddress: ResourceAttributeConfig{Enabled: true}, + ServerPort: ResourceAttributeConfig{Enabled: true}, + ValkeyVersion: ResourceAttributeConfig{Enabled: true}, + }, + }, + }, + { + name: "none_set", + want: MetricsBuilderConfig{ + Metrics: MetricsConfig{ + ValkeyClientConnectionCount: MetricConfig{Enabled: false}, + }, + ResourceAttributes: ResourceAttributesConfig{ + ServerAddress: ResourceAttributeConfig{Enabled: false}, + ServerPort: ResourceAttributeConfig{Enabled: false}, + ValkeyVersion: ResourceAttributeConfig{Enabled: false}, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := loadMetricsBuilderConfig(t, tt.name) + if diff := cmp.Diff(tt.want, cfg, cmpopts.IgnoreUnexported(MetricConfig{}, ResourceAttributeConfig{})); diff != "" { + t.Errorf("Config mismatch (-expected +actual):\n%s", diff) + } + }) + } +} + +func loadMetricsBuilderConfig(t *testing.T, name string) MetricsBuilderConfig { + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) + require.NoError(t, err) + sub, err := cm.Sub(name) + require.NoError(t, err) + cfg := DefaultMetricsBuilderConfig() + require.NoError(t, sub.Unmarshal(&cfg)) + return cfg +} + +func TestResourceAttributesConfig(t *testing.T) { + tests := []struct { + name string + want ResourceAttributesConfig + }{ + { + name: "default", + want: DefaultResourceAttributesConfig(), + }, + { + name: "all_set", + want: ResourceAttributesConfig{ + ServerAddress: ResourceAttributeConfig{Enabled: true}, + ServerPort: ResourceAttributeConfig{Enabled: true}, + ValkeyVersion: ResourceAttributeConfig{Enabled: true}, + }, + }, + { + name: "none_set", + want: ResourceAttributesConfig{ + ServerAddress: ResourceAttributeConfig{Enabled: false}, + ServerPort: ResourceAttributeConfig{Enabled: false}, + ValkeyVersion: ResourceAttributeConfig{Enabled: false}, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := loadResourceAttributesConfig(t, tt.name) + if diff := cmp.Diff(tt.want, cfg, cmpopts.IgnoreUnexported(ResourceAttributeConfig{})); diff != "" { + t.Errorf("Config mismatch (-expected +actual):\n%s", diff) + } + }) + } +} + +func loadResourceAttributesConfig(t *testing.T, name string) ResourceAttributesConfig { + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) + require.NoError(t, err) + sub, err := cm.Sub(name) + require.NoError(t, err) + sub, err = sub.Sub("resource_attributes") + require.NoError(t, err) + cfg := DefaultResourceAttributesConfig() + require.NoError(t, sub.Unmarshal(&cfg)) + return cfg +} diff --git a/receiver/valkeyreceiver/internal/metadata/generated_metrics.go b/receiver/valkeyreceiver/internal/metadata/generated_metrics.go new file mode 100644 index 000000000000..7035f51ba248 --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_metrics.go @@ -0,0 +1,268 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "time" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/filter" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" + "go.opentelemetry.io/collector/receiver" +) + +// AttributeValkeyClientConnectionState specifies the a value valkey.client.connection.state attribute. +type AttributeValkeyClientConnectionState int + +const ( + _ AttributeValkeyClientConnectionState = iota + AttributeValkeyClientConnectionStateUsed + AttributeValkeyClientConnectionStateBlocked + AttributeValkeyClientConnectionStateTracking +) + +// String returns the string representation of the AttributeValkeyClientConnectionState. +func (av AttributeValkeyClientConnectionState) String() string { + switch av { + case AttributeValkeyClientConnectionStateUsed: + return "used" + case AttributeValkeyClientConnectionStateBlocked: + return "blocked" + case AttributeValkeyClientConnectionStateTracking: + return "tracking" + } + return "" +} + +// MapAttributeValkeyClientConnectionState is a helper map of string to AttributeValkeyClientConnectionState attribute value. +var MapAttributeValkeyClientConnectionState = map[string]AttributeValkeyClientConnectionState{ + "used": AttributeValkeyClientConnectionStateUsed, + "blocked": AttributeValkeyClientConnectionStateBlocked, + "tracking": AttributeValkeyClientConnectionStateTracking, +} + +type metricValkeyClientConnectionCount struct { + data pmetric.Metric // data buffer for generated metric. + config MetricConfig // metric config provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills valkey.client.connection.count metric with initial data. +func (m *metricValkeyClientConnectionCount) init() { + m.data.SetName("valkey.client.connection.count") + m.data.SetDescription("The number of connections that are currently in state described by the state attribute") + m.data.SetUnit("{connection}") + m.data.SetEmptyGauge() + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricValkeyClientConnectionCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, valkeyClientConnectionStateAttributeValue string) { + if !m.config.Enabled { + return + } + dp := m.data.Gauge().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntValue(val) + dp.Attributes().PutStr("valkey.client.connection.state", valkeyClientConnectionStateAttributeValue) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricValkeyClientConnectionCount) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricValkeyClientConnectionCount) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricValkeyClientConnectionCount(cfg MetricConfig) metricValkeyClientConnectionCount { + m := metricValkeyClientConnectionCount{config: cfg} + if cfg.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +// MetricsBuilder provides an interface for scrapers to report metrics while taking care of all the transformations +// required to produce metric representation defined in metadata and user config. +type MetricsBuilder struct { + config MetricsBuilderConfig // config of the metrics builder. + startTime pcommon.Timestamp // start time that will be applied to all recorded data points. + metricsCapacity int // maximum observed number of metrics per resource. + metricsBuffer pmetric.Metrics // accumulates metrics data before emitting. + buildInfo component.BuildInfo // contains version information. + resourceAttributeIncludeFilter map[string]filter.Filter + resourceAttributeExcludeFilter map[string]filter.Filter + metricValkeyClientConnectionCount metricValkeyClientConnectionCount +} + +// MetricBuilderOption applies changes to default metrics builder. +type MetricBuilderOption interface { + apply(*MetricsBuilder) +} + +type metricBuilderOptionFunc func(mb *MetricsBuilder) + +func (mbof metricBuilderOptionFunc) apply(mb *MetricsBuilder) { + mbof(mb) +} + +// WithStartTime sets startTime on the metrics builder. +func WithStartTime(startTime pcommon.Timestamp) MetricBuilderOption { + return metricBuilderOptionFunc(func(mb *MetricsBuilder) { + mb.startTime = startTime + }) +} + +func NewMetricsBuilder(mbc MetricsBuilderConfig, settings receiver.Settings, options ...MetricBuilderOption) *MetricsBuilder { + mb := &MetricsBuilder{ + config: mbc, + startTime: pcommon.NewTimestampFromTime(time.Now()), + metricsBuffer: pmetric.NewMetrics(), + buildInfo: settings.BuildInfo, + metricValkeyClientConnectionCount: newMetricValkeyClientConnectionCount(mbc.Metrics.ValkeyClientConnectionCount), + resourceAttributeIncludeFilter: make(map[string]filter.Filter), + resourceAttributeExcludeFilter: make(map[string]filter.Filter), + } + if mbc.ResourceAttributes.ServerAddress.MetricsInclude != nil { + mb.resourceAttributeIncludeFilter["server.address"] = filter.CreateFilter(mbc.ResourceAttributes.ServerAddress.MetricsInclude) + } + if mbc.ResourceAttributes.ServerAddress.MetricsExclude != nil { + mb.resourceAttributeExcludeFilter["server.address"] = filter.CreateFilter(mbc.ResourceAttributes.ServerAddress.MetricsExclude) + } + if mbc.ResourceAttributes.ServerPort.MetricsInclude != nil { + mb.resourceAttributeIncludeFilter["server.port"] = filter.CreateFilter(mbc.ResourceAttributes.ServerPort.MetricsInclude) + } + if mbc.ResourceAttributes.ServerPort.MetricsExclude != nil { + mb.resourceAttributeExcludeFilter["server.port"] = filter.CreateFilter(mbc.ResourceAttributes.ServerPort.MetricsExclude) + } + if mbc.ResourceAttributes.ValkeyVersion.MetricsInclude != nil { + mb.resourceAttributeIncludeFilter["valkey.version"] = filter.CreateFilter(mbc.ResourceAttributes.ValkeyVersion.MetricsInclude) + } + if mbc.ResourceAttributes.ValkeyVersion.MetricsExclude != nil { + mb.resourceAttributeExcludeFilter["valkey.version"] = filter.CreateFilter(mbc.ResourceAttributes.ValkeyVersion.MetricsExclude) + } + + for _, op := range options { + op.apply(mb) + } + return mb +} + +// NewResourceBuilder returns a new resource builder that should be used to build a resource associated with for the emitted metrics. +func (mb *MetricsBuilder) NewResourceBuilder() *ResourceBuilder { + return NewResourceBuilder(mb.config.ResourceAttributes) +} + +// updateCapacity updates max length of metrics and resource attributes that will be used for the slice capacity. +func (mb *MetricsBuilder) updateCapacity(rm pmetric.ResourceMetrics) { + if mb.metricsCapacity < rm.ScopeMetrics().At(0).Metrics().Len() { + mb.metricsCapacity = rm.ScopeMetrics().At(0).Metrics().Len() + } +} + +// ResourceMetricsOption applies changes to provided resource metrics. +type ResourceMetricsOption interface { + apply(pmetric.ResourceMetrics) +} + +type resourceMetricsOptionFunc func(pmetric.ResourceMetrics) + +func (rmof resourceMetricsOptionFunc) apply(rm pmetric.ResourceMetrics) { + rmof(rm) +} + +// WithResource sets the provided resource on the emitted ResourceMetrics. +// It's recommended to use ResourceBuilder to create the resource. +func WithResource(res pcommon.Resource) ResourceMetricsOption { + return resourceMetricsOptionFunc(func(rm pmetric.ResourceMetrics) { + res.CopyTo(rm.Resource()) + }) +} + +// WithStartTimeOverride overrides start time for all the resource metrics data points. +// This option should be only used if different start time has to be set on metrics coming from different resources. +func WithStartTimeOverride(start pcommon.Timestamp) ResourceMetricsOption { + return resourceMetricsOptionFunc(func(rm pmetric.ResourceMetrics) { + var dps pmetric.NumberDataPointSlice + metrics := rm.ScopeMetrics().At(0).Metrics() + for i := 0; i < metrics.Len(); i++ { + switch metrics.At(i).Type() { + case pmetric.MetricTypeGauge: + dps = metrics.At(i).Gauge().DataPoints() + case pmetric.MetricTypeSum: + dps = metrics.At(i).Sum().DataPoints() + } + for j := 0; j < dps.Len(); j++ { + dps.At(j).SetStartTimestamp(start) + } + } + }) +} + +// EmitForResource saves all the generated metrics under a new resource and updates the internal state to be ready for +// recording another set of data points as part of another resource. This function can be helpful when one scraper +// needs to emit metrics from several resources. Otherwise calling this function is not required, +// just `Emit` function can be called instead. +// Resource attributes should be provided as ResourceMetricsOption arguments. +func (mb *MetricsBuilder) EmitForResource(options ...ResourceMetricsOption) { + rm := pmetric.NewResourceMetrics() + ils := rm.ScopeMetrics().AppendEmpty() + ils.Scope().SetName("github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver") + ils.Scope().SetVersion(mb.buildInfo.Version) + ils.Metrics().EnsureCapacity(mb.metricsCapacity) + mb.metricValkeyClientConnectionCount.emit(ils.Metrics()) + + for _, op := range options { + op.apply(rm) + } + for attr, filter := range mb.resourceAttributeIncludeFilter { + if val, ok := rm.Resource().Attributes().Get(attr); ok && !filter.Matches(val.AsString()) { + return + } + } + for attr, filter := range mb.resourceAttributeExcludeFilter { + if val, ok := rm.Resource().Attributes().Get(attr); ok && filter.Matches(val.AsString()) { + return + } + } + + if ils.Metrics().Len() > 0 { + mb.updateCapacity(rm) + rm.MoveTo(mb.metricsBuffer.ResourceMetrics().AppendEmpty()) + } +} + +// Emit returns all the metrics accumulated by the metrics builder and updates the internal state to be ready for +// recording another set of metrics. This function will be responsible for applying all the transformations required to +// produce metric representation defined in metadata and user config, e.g. delta or cumulative. +func (mb *MetricsBuilder) Emit(options ...ResourceMetricsOption) pmetric.Metrics { + mb.EmitForResource(options...) + metrics := mb.metricsBuffer + mb.metricsBuffer = pmetric.NewMetrics() + return metrics +} + +// RecordValkeyClientConnectionCountDataPoint adds a data point to valkey.client.connection.count metric. +func (mb *MetricsBuilder) RecordValkeyClientConnectionCountDataPoint(ts pcommon.Timestamp, val int64, valkeyClientConnectionStateAttributeValue AttributeValkeyClientConnectionState) { + mb.metricValkeyClientConnectionCount.recordDataPoint(mb.startTime, ts, val, valkeyClientConnectionStateAttributeValue.String()) +} + +// Reset resets metrics builder to its initial state. It should be used when external metrics source is restarted, +// and metrics builder should update its startTime and reset it's internal state accordingly. +func (mb *MetricsBuilder) Reset(options ...MetricBuilderOption) { + mb.startTime = pcommon.NewTimestampFromTime(time.Now()) + for _, op := range options { + op.apply(mb) + } +} diff --git a/receiver/valkeyreceiver/internal/metadata/generated_metrics_test.go b/receiver/valkeyreceiver/internal/metadata/generated_metrics_test.go new file mode 100644 index 000000000000..5f8a707d68cb --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_metrics_test.go @@ -0,0 +1,120 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" + "go.opentelemetry.io/collector/receiver/receivertest" + "go.uber.org/zap" + "go.uber.org/zap/zaptest/observer" +) + +type testDataSet int + +const ( + testDataSetDefault testDataSet = iota + testDataSetAll + testDataSetNone +) + +func TestMetricsBuilder(t *testing.T) { + tests := []struct { + name string + metricsSet testDataSet + resAttrsSet testDataSet + expectEmpty bool + }{ + { + name: "default", + }, + { + name: "all_set", + metricsSet: testDataSetAll, + resAttrsSet: testDataSetAll, + }, + { + name: "none_set", + metricsSet: testDataSetNone, + resAttrsSet: testDataSetNone, + expectEmpty: true, + }, + { + name: "filter_set_include", + resAttrsSet: testDataSetAll, + }, + { + name: "filter_set_exclude", + resAttrsSet: testDataSetAll, + expectEmpty: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + start := pcommon.Timestamp(1_000_000_000) + ts := pcommon.Timestamp(1_000_001_000) + observedZapCore, observedLogs := observer.New(zap.WarnLevel) + settings := receivertest.NewNopSettings() + settings.Logger = zap.New(observedZapCore) + mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, tt.name), settings, WithStartTime(start)) + + expectedWarnings := 0 + + assert.Equal(t, expectedWarnings, observedLogs.Len()) + + defaultMetricsCount := 0 + allMetricsCount := 0 + + defaultMetricsCount++ + allMetricsCount++ + mb.RecordValkeyClientConnectionCountDataPoint(ts, 1, AttributeValkeyClientConnectionStateUsed) + + rb := mb.NewResourceBuilder() + rb.SetServerAddress("server.address-val") + rb.SetServerPort("server.port-val") + rb.SetValkeyVersion("valkey.version-val") + res := rb.Emit() + metrics := mb.Emit(WithResource(res)) + + if tt.expectEmpty { + assert.Equal(t, 0, metrics.ResourceMetrics().Len()) + return + } + + assert.Equal(t, 1, metrics.ResourceMetrics().Len()) + rm := metrics.ResourceMetrics().At(0) + assert.Equal(t, res, rm.Resource()) + assert.Equal(t, 1, rm.ScopeMetrics().Len()) + ms := rm.ScopeMetrics().At(0).Metrics() + if tt.metricsSet == testDataSetDefault { + assert.Equal(t, defaultMetricsCount, ms.Len()) + } + if tt.metricsSet == testDataSetAll { + assert.Equal(t, allMetricsCount, ms.Len()) + } + validatedMetrics := make(map[string]bool) + for i := 0; i < ms.Len(); i++ { + switch ms.At(i).Name() { + case "valkey.client.connection.count": + assert.False(t, validatedMetrics["valkey.client.connection.count"], "Found a duplicate in the metrics slice: valkey.client.connection.count") + validatedMetrics["valkey.client.connection.count"] = true + assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, "The number of connections that are currently in state described by the state attribute", ms.At(i).Description()) + assert.Equal(t, "{connection}", ms.At(i).Unit()) + dp := ms.At(i).Gauge().DataPoints().At(0) + assert.Equal(t, start, dp.StartTimestamp()) + assert.Equal(t, ts, dp.Timestamp()) + assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) + assert.Equal(t, int64(1), dp.IntValue()) + attrVal, ok := dp.Attributes().Get("valkey.client.connection.state") + assert.True(t, ok) + assert.EqualValues(t, "used", attrVal.Str()) + } + } + }) + } +} diff --git a/receiver/valkeyreceiver/internal/metadata/generated_resource.go b/receiver/valkeyreceiver/internal/metadata/generated_resource.go new file mode 100644 index 000000000000..555ef3ad1852 --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_resource.go @@ -0,0 +1,50 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/pdata/pcommon" +) + +// ResourceBuilder is a helper struct to build resources predefined in metadata.yaml. +// The ResourceBuilder is not thread-safe and must not to be used in multiple goroutines. +type ResourceBuilder struct { + config ResourceAttributesConfig + res pcommon.Resource +} + +// NewResourceBuilder creates a new ResourceBuilder. This method should be called on the start of the application. +func NewResourceBuilder(rac ResourceAttributesConfig) *ResourceBuilder { + return &ResourceBuilder{ + config: rac, + res: pcommon.NewResource(), + } +} + +// SetServerAddress sets provided value as "server.address" attribute. +func (rb *ResourceBuilder) SetServerAddress(val string) { + if rb.config.ServerAddress.Enabled { + rb.res.Attributes().PutStr("server.address", val) + } +} + +// SetServerPort sets provided value as "server.port" attribute. +func (rb *ResourceBuilder) SetServerPort(val string) { + if rb.config.ServerPort.Enabled { + rb.res.Attributes().PutStr("server.port", val) + } +} + +// SetValkeyVersion sets provided value as "valkey.version" attribute. +func (rb *ResourceBuilder) SetValkeyVersion(val string) { + if rb.config.ValkeyVersion.Enabled { + rb.res.Attributes().PutStr("valkey.version", val) + } +} + +// Emit returns the built resource and resets the internal builder state. +func (rb *ResourceBuilder) Emit() pcommon.Resource { + r := rb.res + rb.res = pcommon.NewResource() + return r +} diff --git a/receiver/valkeyreceiver/internal/metadata/generated_resource_test.go b/receiver/valkeyreceiver/internal/metadata/generated_resource_test.go new file mode 100644 index 000000000000..37ba21121260 --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_resource_test.go @@ -0,0 +1,52 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestResourceBuilder(t *testing.T) { + for _, tt := range []string{"default", "all_set", "none_set"} { + t.Run(tt, func(t *testing.T) { + cfg := loadResourceAttributesConfig(t, tt) + rb := NewResourceBuilder(cfg) + rb.SetServerAddress("server.address-val") + rb.SetServerPort("server.port-val") + rb.SetValkeyVersion("valkey.version-val") + + res := rb.Emit() + assert.Equal(t, 0, rb.Emit().Attributes().Len()) // Second call should return empty Resource + + switch tt { + case "default": + assert.Equal(t, 1, res.Attributes().Len()) + case "all_set": + assert.Equal(t, 3, res.Attributes().Len()) + case "none_set": + assert.Equal(t, 0, res.Attributes().Len()) + return + default: + assert.Failf(t, "unexpected test case: %s", tt) + } + + val, ok := res.Attributes().Get("server.address") + assert.Equal(t, tt == "all_set", ok) + if ok { + assert.EqualValues(t, "server.address-val", val.Str()) + } + val, ok = res.Attributes().Get("server.port") + assert.Equal(t, tt == "all_set", ok) + if ok { + assert.EqualValues(t, "server.port-val", val.Str()) + } + val, ok = res.Attributes().Get("valkey.version") + assert.True(t, ok) + if ok { + assert.EqualValues(t, "valkey.version-val", val.Str()) + } + }) + } +} diff --git a/receiver/valkeyreceiver/internal/metadata/generated_status.go b/receiver/valkeyreceiver/internal/metadata/generated_status.go new file mode 100644 index 000000000000..7b10b936b3ff --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/generated_status.go @@ -0,0 +1,16 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" +) + +var ( + Type = component.MustNewType("valkey") + ScopeName = "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" +) + +const ( + MetricsStability = component.StabilityLevelDevelopment +) diff --git a/receiver/valkeyreceiver/internal/metadata/testdata/config.yaml b/receiver/valkeyreceiver/internal/metadata/testdata/config.yaml new file mode 100644 index 000000000000..f3edf70b0ebe --- /dev/null +++ b/receiver/valkeyreceiver/internal/metadata/testdata/config.yaml @@ -0,0 +1,51 @@ +default: +all_set: + metrics: + valkey.client.connection.count: + enabled: true + resource_attributes: + server.address: + enabled: true + server.port: + enabled: true + valkey.version: + enabled: true +none_set: + metrics: + valkey.client.connection.count: + enabled: false + resource_attributes: + server.address: + enabled: false + server.port: + enabled: false + valkey.version: + enabled: false +filter_set_include: + resource_attributes: + server.address: + enabled: true + metrics_include: + - regexp: ".*" + server.port: + enabled: true + metrics_include: + - regexp: ".*" + valkey.version: + enabled: true + metrics_include: + - regexp: ".*" +filter_set_exclude: + resource_attributes: + server.address: + enabled: true + metrics_exclude: + - strict: "server.address-val" + server.port: + enabled: true + metrics_exclude: + - strict: "server.port-val" + valkey.version: + enabled: true + metrics_exclude: + - strict: "valkey.version-val" diff --git a/receiver/valkeyreceiver/metadata.yaml b/receiver/valkeyreceiver/metadata.yaml new file mode 100644 index 000000000000..466bd99999e5 --- /dev/null +++ b/receiver/valkeyreceiver/metadata.yaml @@ -0,0 +1,48 @@ +type: valkey + +status: + class: receiver + stability: + development: [metrics] + distributions: [contrib] + codeowners: + active: [] + +resource_attributes: + valkey.version: + description: Valkey server's version. + enabled: true + type: string + server.address: + description: Valkey server's address + enabled: false + type: string + server.port: + description: Valkey server's port + enabled: false + type: string + +attributes: + valkey.client.connection.state: + description: The state of a connection in the pool + type: string + enum: + - used + - blocked + - tracking + +metrics: + valkey.client.connection.count: + enabled: true + description: The number of connections that are currently in state described by the state attribute + unit: "{connection}" + gauge: + value_type: int + monotonic: false + aggregation_temporality: cumulative + attributes: [valkey.client.connection.state] + + +tests: + config: + endpoint: localhost:6379 diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go new file mode 100644 index 000000000000..b9cb79991891 --- /dev/null +++ b/receiver/valkeyreceiver/receiver.go @@ -0,0 +1,94 @@ +package valkeyreceiver + +import ( + "context" + "fmt" + "strconv" + "time" + + "github.com/valkey-io/valkey-go" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" + "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/scraperhelper" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" +) + +type valkeyScraper struct { + client client + settings component.TelemetrySettings + mb *metadata.MetricsBuilder + configInfo configInfo +} + +func newValkeyScraper(cfg *Config, settings receiver.Settings) (scraperhelper.Scraper, error) { + opts := valkey.ClientOption{ + InitAddress: []string{cfg.Endpoint}, + Username: cfg.Username, + Password: string(cfg.Password), + } + + var err error + if opts.TLSConfig, err = cfg.TLS.LoadTLSConfig(context.Background()); err != nil { + return nil, err + } + client, err := newValkeyClient(opts) + if err != nil { + return nil, err + } + + configInfo, err := newConfigInfo(cfg) + if err != nil { + return nil, err + } + + vs := &valkeyScraper{ + client: client, + settings: settings.TelemetrySettings, + mb: metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, settings), + configInfo: configInfo, + } + return scraperhelper.NewScraper( + metadata.Type.String(), + scraperhelper.ScrapeFunc(vs.scrape), + + scraperhelper.WithShutdown(vs.shutdown), + ) +} + +func (vs *valkeyScraper) shutdown(context.Context) error { + if vs.client != nil { + return vs.client.close() + } + return nil +} + +func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { + result, err := vs.client.retrieveInfo(ctx) + if err != nil { + return pmetric.Metrics{}, err + } + + // connected_clients + now := pcommon.NewTimestampFromTime(time.Now()) + vs.recordConnectionMetrics(now, result) + + fmt.Printf("%#v", result) + return vs.mb.Emit(), nil +} + +func (vs *valkeyScraper) recordConnectionMetrics(now pcommon.Timestamp, info map[string]string) { + recordConnection := func(infoKey string, attribute metadata.AttributeValkeyClientConnectionState) { + if val, ok := info[infoKey]; ok { + if i, err := strconv.ParseInt(val, 10, 64); err == nil { + vs.mb.RecordValkeyClientConnectionCountDataPoint(now, i, attribute) + } + } + } + + recordConnection("connected_clients", metadata.AttributeValkeyClientConnectionStateUsed) + recordConnection("blocked_clients", metadata.AttributeValkeyClientConnectionStateBlocked) + recordConnection("tracking_clients", metadata.AttributeValkeyClientConnectionStateTracking) +} diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go new file mode 100644 index 000000000000..6353fde9152d --- /dev/null +++ b/receiver/valkeyreceiver/receiver_test.go @@ -0,0 +1,25 @@ +package valkeyreceiver + +import ( + "context" + "fmt" + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/receiver/receivertest" +) + +func TestScrape(t *testing.T) { + settings := receivertest.NewNopSettings() + cfg := createDefaultConfig().(*Config) + cfg.Endpoint = "localhost:6379" + scraper, err := newValkeyScraper(cfg, settings) + require.NoError(t, err) + + metrics, err := scraper.Scrape(context.Background()) + require.NoError(t, err) + + fmt.Printf("%#v", metrics) + fmt.Printf("Total metrics: %#v", metrics.MetricCount()) + fmt.Printf("Total scope metrics: %#v", metrics.ResourceMetrics().At(0).ScopeMetrics().Len()) +} From df456b4af03b164c58a1cbb5eec79fe822019f46 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Sat, 7 Dec 2024 21:10:49 +0100 Subject: [PATCH 02/23] refactor receiver to 0.115.0 --- receiver/valkeyreceiver/doc.go | 2 +- receiver/valkeyreceiver/factory.go | 2 +- receiver/valkeyreceiver/go.mod | 66 ++++----- receiver/valkeyreceiver/go.sum | 138 ++++++++---------- .../metadata/generated_config_test.go | 10 +- receiver/valkeyreceiver/receiver.go | 48 +++--- receiver/valkeyreceiver/receiver_test.go | 2 +- 7 files changed, 127 insertions(+), 141 deletions(-) diff --git a/receiver/valkeyreceiver/doc.go b/receiver/valkeyreceiver/doc.go index 30cf0711f8c1..853b582df0b8 100644 --- a/receiver/valkeyreceiver/doc.go +++ b/receiver/valkeyreceiver/doc.go @@ -1,6 +1,6 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -//go:generate mdatagen metadata.yaml +//go:generate ../../.tools/mdatagen metadata.yaml package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" diff --git a/receiver/valkeyreceiver/factory.go b/receiver/valkeyreceiver/factory.go index db2bd97670b1..d6d55d0f2de6 100644 --- a/receiver/valkeyreceiver/factory.go +++ b/receiver/valkeyreceiver/factory.go @@ -53,5 +53,5 @@ func createMetricsReceiver( return nil, err } - return scraperhelper.NewScraperControllerReceiver(&oCfg.ControllerConfig, set, consumer, scraperhelper.AddScraper(scrp)) + return scraperhelper.NewScraperControllerReceiver(&oCfg.ControllerConfig, set, consumer, scraperhelper.AddScraper(metadata.Type, scrp)) } diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index 8cd9bbd0ca54..9ba8041cf93b 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -4,63 +4,59 @@ go 1.22.0 require ( github.com/google/go-cmp v0.6.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/valkey-io/valkey-go v1.0.45 - go.opentelemetry.io/collector/component v0.108.1 - go.opentelemetry.io/collector/config/confignet v0.108.1 + go.opentelemetry.io/collector/component v0.115.0 + go.opentelemetry.io/collector/component/componenttest v0.115.0 + go.opentelemetry.io/collector/config/confignet v1.21.0 go.opentelemetry.io/collector/config/configopaque v1.14.1 go.opentelemetry.io/collector/config/configtls v1.14.1 - go.opentelemetry.io/collector/confmap v1.14.1 - go.opentelemetry.io/collector/consumer v0.108.1 - go.opentelemetry.io/collector/consumer/consumertest v0.108.1 - go.opentelemetry.io/collector/filter v0.108.1 - go.opentelemetry.io/collector/pdata v1.14.1 - go.opentelemetry.io/collector/receiver v0.108.1 + go.opentelemetry.io/collector/confmap v1.21.0 + go.opentelemetry.io/collector/consumer v1.21.0 + go.opentelemetry.io/collector/consumer/consumertest v0.115.0 + go.opentelemetry.io/collector/filter v0.115.0 + go.opentelemetry.io/collector/pdata v1.21.0 + go.opentelemetry.io/collector/receiver v0.115.0 + go.opentelemetry.io/collector/receiver/receivertest v0.115.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-viper/mapstructure/v2 v2.1.0 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.9 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect github.com/knadh/koanf/providers/confmap v0.1.0 // indirect - github.com/knadh/koanf/v2 v2.1.1 // indirect + github.com/knadh/koanf/v2 v2.1.2 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - go.opentelemetry.io/collector v0.108.1 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.108.1 // indirect - go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.1 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.108.1 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.50.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.115.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.115.0 // indirect + go.opentelemetry.io/collector/consumer/consumerprofiles v0.115.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.115.0 // indirect + go.opentelemetry.io/collector/pipeline v0.115.0 // indirect + go.opentelemetry.io/collector/receiver/receiverprofiles v0.115.0 // indirect + go.opentelemetry.io/collector/scraper v0.115.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk v1.32.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/text v0.17.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index 4f288b5d9ae6..ebe423df74da 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -1,7 +1,3 @@ -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -12,8 +8,8 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-viper/mapstructure/v2 v2.1.0 h1:gHnMa2Y/pIxElCH2GlZZ1lZSsn6XMtufpGyP1XxdC/w= -github.com/go-viper/mapstructure/v2 v2.1.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -25,20 +21,16 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= -github.com/knadh/koanf/v2 v2.1.1/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= +github.com/knadh/koanf/v2 v2.1.2 h1:I2rtLRqXRy1p01m/utEtpZSSA6dcJbgGVuE27kW2PzQ= +github.com/knadh/koanf/v2 v2.1.2/go.mod h1:Gphfaen0q1Fc1HTgJgSTC4oRX9R2R5ErYMZJy8fLJBo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= @@ -48,72 +40,70 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/valkey-io/valkey-go v1.0.45 h1:d2ksu+FvKEy9pU9CCMZ94ABTLm2kNHU0jxEJZRqpFA4= github.com/valkey-io/valkey-go v1.0.45/go.mod h1:BXlVAPIL9rFQinSFM+N32JfWzfCaUAqBpZkc4vPY6fM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/collector v0.108.1 h1:c3JZU5g5KezDXaMgL7GDFB7ihuLNzXo6eBuaJOmBiDA= -go.opentelemetry.io/collector v0.108.1/go.mod h1:7GL32WiQkZzJjxHstHme9igzYumDsw1hFPep3v1guHQ= -go.opentelemetry.io/collector/component v0.108.1 h1:X+Afj07brX0NC36t6PvAq+ehaeUO/Q9eJNOUwhInpeY= -go.opentelemetry.io/collector/component v0.108.1/go.mod h1:qrP2TiJT5qw4sSiAKne+gb+hb1qTixLXuQRZjMCnLjY= -go.opentelemetry.io/collector/config/confignet v0.108.1 h1:gmcJI8136JZ0201v0BfGlHcFBxLNy09mGLPUr+GyfHU= -go.opentelemetry.io/collector/config/confignet v0.108.1/go.mod h1:o3v4joAEjvLwntqexg5ixMqRrU1+Vst+jWuCUaBNgOg= +go.opentelemetry.io/collector/component v0.115.0 h1:iLte1oCiXzjiCnaOBKdsXacfFiECecpWxW3/LeriMoo= +go.opentelemetry.io/collector/component v0.115.0/go.mod h1:oIUFiH7w1eOimdeYhFI+gAIxYSiLDocKVJ0PTvX7d6s= +go.opentelemetry.io/collector/component/componenttest v0.115.0 h1:9URDJ9VyP6tuij+YHjp/kSSMecnZOd7oGvzu+rw9SJY= +go.opentelemetry.io/collector/component/componenttest v0.115.0/go.mod h1:PzXvNqKLCiSADZGZFKH+IOHMkaQ0GTHuzysfVbTPKYY= +go.opentelemetry.io/collector/config/confignet v1.21.0 h1:PeQ5YrMnfftysFL/WVaSrjPOWjD6DfeABY50pf9CZxU= +go.opentelemetry.io/collector/config/confignet v1.21.0/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= go.opentelemetry.io/collector/config/configopaque v1.14.1 h1:5xAEa4ld+57xWKdU2gR5/6+rBa7LTCPfShJQFUxN0Zw= go.opentelemetry.io/collector/config/configopaque v1.14.1/go.mod h1:6zlLIyOoRpJJ+0bEKrlZOZon3rOp5Jrz9fMdR4twOS4= -go.opentelemetry.io/collector/config/configtelemetry v0.108.1 h1:jjdH1R6FMz4l1nSvY7F3H0F09xW9LKTke7k3ZAPcmSU= -go.opentelemetry.io/collector/config/configtelemetry v0.108.1/go.mod h1:R0MBUxjSMVMIhljuDHWIygzzJWQyZHXXWIgQNxcFwhc= +go.opentelemetry.io/collector/config/configtelemetry v0.115.0 h1:U07FinCDop+r2RjWQ3aP9ZWONC7r7kQIp1GkXQi6nsI= +go.opentelemetry.io/collector/config/configtelemetry v0.115.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= go.opentelemetry.io/collector/config/configtls v1.14.1 h1:cd5kNvLnIe+GVHUV6Fk6O5fkwS4at8dVCrFo7t0O8kE= go.opentelemetry.io/collector/config/configtls v1.14.1/go.mod h1:StxglrVWeRIFaqc2hpsF9xSsv2A5MOAx5GhG4WjFuP4= -go.opentelemetry.io/collector/confmap v1.14.1 h1:GPMa+q5ThiBFQaYKJ7xeomiw9tIokkTA1AiF1zwKJck= -go.opentelemetry.io/collector/confmap v1.14.1/go.mod h1:GrIZ12P/9DPOuTpe2PIS51a0P/ZM6iKtByVee1Uf3+k= -go.opentelemetry.io/collector/consumer v0.108.1 h1:75zHUpIDfgZMp3t9fYdpXXE6/wsBs9DwTZdfwS3+NDI= -go.opentelemetry.io/collector/consumer v0.108.1/go.mod h1:xu2pOTqK+uCFXZWd9RcU8s6sCRwK5GyuP64YuHLMzzA= -go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.1 h1:inFvEN7nB9ECFUjJzv+TsylCM8r1ocqOUrnNVdkMkZo= -go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.1/go.mod h1:F6Shxg3TqoDZe2+p2PkVRUsnJMqATQxbs4c1nfaJrAc= -go.opentelemetry.io/collector/consumer/consumertest v0.108.1 h1:WLvi27Vu5nkltjhmdN+pDO9EuRphYpOQxoqZ9A3RkKU= -go.opentelemetry.io/collector/consumer/consumertest v0.108.1/go.mod h1:tRqOtUukG76iBlPTAUwFSU87dDO+x33Gyn2x9mecfko= -go.opentelemetry.io/collector/filter v0.108.1 h1:ufGbKhP8v7weLrfLWlR0nVLdyW9yvsSpWtkCwv7CNE0= -go.opentelemetry.io/collector/filter v0.108.1/go.mod h1:iNMJ4W+R9LUqr8uyeEIthuOKVEQBMYS32ePBza3Ofbk= -go.opentelemetry.io/collector/pdata v1.14.1 h1:wXZjtQA7Vy5HFqco+yA95ENyMQU5heBB1IxMHQf6mUk= -go.opentelemetry.io/collector/pdata v1.14.1/go.mod h1:z1dTjwwtcoXxZx2/nkHysjxMeaxe9pEmYTEr4SMNIx8= -go.opentelemetry.io/collector/pdata/pprofile v0.108.1 h1:/XbunfZ+/jt1+d1p4zM4vZ/AgeaIJsayjYdlN1fV+tk= -go.opentelemetry.io/collector/pdata/pprofile v0.108.1/go.mod h1:/GvG2WcN9Dajlw4QaIOjgz7N32wSfPL3qxJ0BKOcVPo= -go.opentelemetry.io/collector/pdata/testdata v0.108.1 h1:TpBDoBMBYvC/Ibswe3Ec2eof8XrRrEec6+tfnTeTSGk= -go.opentelemetry.io/collector/pdata/testdata v0.108.1/go.mod h1:PdUmBA4yDRD4Wf0fpCyrpdZexz9EDoHBw5Ot4iIUPRs= -go.opentelemetry.io/collector/receiver v0.108.1 h1:YQgDv69v3fgd6uoiGZ+vUdUPdNzoodbLzjB7XfdQvxs= -go.opentelemetry.io/collector/receiver v0.108.1/go.mod h1:eKe/VJgdvHr8JsBDma/PF3DlaheTRC2X6AmCUByJCNU= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= -go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/collector/confmap v1.21.0 h1:1tIcx2/Suwg8VhuPmQw87ba0ludPmumpFCFRZZa6RXA= +go.opentelemetry.io/collector/confmap v1.21.0/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= +go.opentelemetry.io/collector/consumer v1.21.0 h1:THKZ2Vbi6GkamjTBI2hFq5Dc4kINZTWGwQNa8d/Ty9g= +go.opentelemetry.io/collector/consumer v1.21.0/go.mod h1:FQcC4ThMtRYY41dv+IPNK8POLLhAFY3r1YR5fuP7iiY= +go.opentelemetry.io/collector/consumer/consumererror v0.115.0 h1:yli//xBCQMPZKXNgNlXemo4dvqhnFrAmCZ11DvQgmcY= +go.opentelemetry.io/collector/consumer/consumererror v0.115.0/go.mod h1:LwVzAvQ6ZVNG7mbOvurbAo+W/rKws0IcjOwriuZXqPE= +go.opentelemetry.io/collector/consumer/consumerprofiles v0.115.0 h1:H3fDuyQW1t2HWHkz96WMBQJKUevypOCjBqnqtaAWyoA= +go.opentelemetry.io/collector/consumer/consumerprofiles v0.115.0/go.mod h1:IzEmZ91Tp7TBxVDq8Cc9xvLsmO7H08njr6Pu9P5d9ns= +go.opentelemetry.io/collector/consumer/consumertest v0.115.0 h1:hru0I2447y0TluCdwlKYFFtgcpyCnlM+LiOK1JZyA70= +go.opentelemetry.io/collector/consumer/consumertest v0.115.0/go.mod h1:ybjALRJWR6aKNOzEMy1T1ruCULVDEjj4omtOJMrH/kU= +go.opentelemetry.io/collector/filter v0.115.0 h1:pYnHUFDSHSjEIFZit+CU09itVkDXgV+WcV2HOkjvQcE= +go.opentelemetry.io/collector/filter v0.115.0/go.mod h1:aewQ+jmvpH88gPVWpNXiWSm+wwJVxTK4f23ex2NMd2c= +go.opentelemetry.io/collector/pdata v1.21.0 h1:PG+UbiFMJ35X/WcAR7Rf/PWmWtRdW0aHlOidsR6c5MA= +go.opentelemetry.io/collector/pdata v1.21.0/go.mod h1:GKb1/zocKJMvxKbS+sl0W85lxhYBTFJ6h6I1tphVyDU= +go.opentelemetry.io/collector/pdata/pprofile v0.115.0 h1:NI89hy13vNDw7EOnQf7Jtitks4HJFO0SUWznTssmP94= +go.opentelemetry.io/collector/pdata/pprofile v0.115.0/go.mod h1:jGzdNfO0XTtfLjXCL/uCC1livg1LlfR+ix2WE/z3RpQ= +go.opentelemetry.io/collector/pdata/testdata v0.115.0 h1:Rblz+AKXdo3fG626jS+KSd0OSA4uMXcTQfpwed6P8LI= +go.opentelemetry.io/collector/pdata/testdata v0.115.0/go.mod h1:inNnRt6S2Nn260EfCBEcjesjlKOSsr0jPwkPqpBkt4s= +go.opentelemetry.io/collector/pipeline v0.115.0 h1:bmACBqb0e8U9ag+vGGHUP7kCfAO7HHROdtzIEg8ulus= +go.opentelemetry.io/collector/pipeline v0.115.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= +go.opentelemetry.io/collector/receiver v0.115.0 h1:55Q3Jvj6zHCIA1psKqi/3kEMJO4OqUF5tNAEYNdB1U8= +go.opentelemetry.io/collector/receiver v0.115.0/go.mod h1:nBSCh2O/WUcfgpJ+Jpz+B0z0Hn5jHeRvF2WmLij5EIY= +go.opentelemetry.io/collector/receiver/receiverprofiles v0.115.0 h1:R9JLaj2Al93smIPUkbJshAkb/cY0H5JBOxIx+Zu0NG4= +go.opentelemetry.io/collector/receiver/receiverprofiles v0.115.0/go.mod h1:05E5hGujWeeXJmzKZwTdHyZ/+rRyrQlQB5p5Q2XY39M= +go.opentelemetry.io/collector/receiver/receivertest v0.115.0 h1:OiB684SbHQi6/Pd3ZH0cXjYvCpBS9ilQBfTQx0wVXHg= +go.opentelemetry.io/collector/receiver/receivertest v0.115.0/go.mod h1:Y8Z9U/bz9Xpyt8GI8DxZZgryw3mnnIw+AeKVLTD2cP8= +go.opentelemetry.io/collector/scraper v0.115.0 h1:hbfebO7x1Xm96OwqeuLz5w7QAaB3ZMlwOkUo0XzPadc= +go.opentelemetry.io/collector/scraper v0.115.0/go.mod h1:7YoCO6/4PeExLiX1FokcydJGCQUa7lUqZsqXokJ5VZ4= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -131,20 +121,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -153,12 +143,12 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd h1:6TEm2ZxXoQmFWFlt1vNxvVOa1Q0dXFQD1m/rYjXmS0E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/receiver/valkeyreceiver/internal/metadata/generated_config_test.go b/receiver/valkeyreceiver/internal/metadata/generated_config_test.go index 9594bba4b6e6..9890615031c4 100644 --- a/receiver/valkeyreceiver/internal/metadata/generated_config_test.go +++ b/receiver/valkeyreceiver/internal/metadata/generated_config_test.go @@ -51,9 +51,8 @@ func TestMetricsBuilderConfig(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { cfg := loadMetricsBuilderConfig(t, tt.name) - if diff := cmp.Diff(tt.want, cfg, cmpopts.IgnoreUnexported(MetricConfig{}, ResourceAttributeConfig{})); diff != "" { - t.Errorf("Config mismatch (-expected +actual):\n%s", diff) - } + diff := cmp.Diff(tt.want, cfg, cmpopts.IgnoreUnexported(MetricConfig{}, ResourceAttributeConfig{})) + require.Emptyf(t, diff, "Config mismatch (-expected +actual):\n%s", diff) }) } } @@ -97,9 +96,8 @@ func TestResourceAttributesConfig(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { cfg := loadResourceAttributesConfig(t, tt.name) - if diff := cmp.Diff(tt.want, cfg, cmpopts.IgnoreUnexported(ResourceAttributeConfig{})); diff != "" { - t.Errorf("Config mismatch (-expected +actual):\n%s", diff) - } + diff := cmp.Diff(tt.want, cfg, cmpopts.IgnoreUnexported(ResourceAttributeConfig{})) + require.Emptyf(t, diff, "Config mismatch (-expected +actual):\n%s", diff) }) } } diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index b9cb79991891..95faaec426ce 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -6,55 +6,40 @@ import ( "strconv" "time" - "github.com/valkey-io/valkey-go" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver" - "go.opentelemetry.io/collector/receiver/scraperhelper" + "go.opentelemetry.io/collector/scraper" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" + "github.com/valkey-io/valkey-go" ) type valkeyScraper struct { client client settings component.TelemetrySettings + cfg *Config mb *metadata.MetricsBuilder configInfo configInfo } -func newValkeyScraper(cfg *Config, settings receiver.Settings) (scraperhelper.Scraper, error) { - opts := valkey.ClientOption{ - InitAddress: []string{cfg.Endpoint}, - Username: cfg.Username, - Password: string(cfg.Password), - } - - var err error - if opts.TLSConfig, err = cfg.TLS.LoadTLSConfig(context.Background()); err != nil { - return nil, err - } - client, err := newValkeyClient(opts) - if err != nil { - return nil, err - } - +func newValkeyScraper(cfg *Config, settings receiver.Settings) (scraper.Metrics, error) { configInfo, err := newConfigInfo(cfg) if err != nil { return nil, err } vs := &valkeyScraper{ - client: client, + cfg: cfg, settings: settings.TelemetrySettings, mb: metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, settings), configInfo: configInfo, } - return scraperhelper.NewScraper( - metadata.Type.String(), - scraperhelper.ScrapeFunc(vs.scrape), + return scraper.NewMetrics( + scraper.ScrapeMetricsFunc(vs.scrape), - scraperhelper.WithShutdown(vs.shutdown), + scraper.WithShutdown(vs.shutdown), ) } @@ -66,6 +51,23 @@ func (vs *valkeyScraper) shutdown(context.Context) error { } func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { + if vs.client == nil { + opts := valkey.ClientOption{ + InitAddress: []string{vs.cfg.Endpoint}, + Username: vs.cfg.Username, + Password: string(vs.cfg.Password), + } + + var err error + if opts.TLSConfig, err = vs.cfg.TLS.LoadTLSConfig(context.Background()); err != nil { + return pmetric.Metrics{}, err + } + vs.client, err = newValkeyClient(opts) + if err != nil { + return pmetric.Metrics{}, err + } + } + result, err := vs.client.retrieveInfo(ctx) if err != nil { return pmetric.Metrics{}, err diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 6353fde9152d..0440d820d3f1 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -16,7 +16,7 @@ func TestScrape(t *testing.T) { scraper, err := newValkeyScraper(cfg, settings) require.NoError(t, err) - metrics, err := scraper.Scrape(context.Background()) + metrics, err := scraper.ScrapeMetrics(context.Background()) require.NoError(t, err) fmt.Printf("%#v", metrics) From bd9ffefe6511b2c1b86b16e939ee0676d079384a Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Tue, 24 Dec 2024 20:07:54 +0100 Subject: [PATCH 03/23] add integration tests --- receiver/valkeyreceiver/client.go | 14 +- receiver/valkeyreceiver/config.go | 6 +- receiver/valkeyreceiver/factory.go | 11 +- receiver/valkeyreceiver/go.mod | 94 +++++-- receiver/valkeyreceiver/go.sum | 219 +++++++++++++---- receiver/valkeyreceiver/receiver.go | 14 +- receiver/valkeyreceiver/receiver_test.go | 35 ++- .../testdata/all-metrics/output-metrics.yaml | 33 +++ .../testdata/all-metrics/raw_info.txt | 230 ++++++++++++++++++ 9 files changed, 555 insertions(+), 101 deletions(-) create mode 100644 receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml create mode 100644 receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt diff --git a/receiver/valkeyreceiver/client.go b/receiver/valkeyreceiver/client.go index 1f5d452b9b22..a36bdd136ed1 100644 --- a/receiver/valkeyreceiver/client.go +++ b/receiver/valkeyreceiver/client.go @@ -4,7 +4,6 @@ package valkeyreceiver import ( "context" - "fmt" "strings" "github.com/valkey-io/valkey-go" @@ -38,15 +37,18 @@ func newValkeyClient(options valkey.ClientOption) (client, error) { // Retrieve Valkey INFO. We retrieve all of the 'sections'. func (c *valkeyClient) retrieveInfo(ctx context.Context) (map[string]string, error) { - attrs := make(map[string]string) str, err := c.client.Do(ctx, c.client.B().Info().Build()).ToString() if err != nil { - return attrs, err + return nil, err } - lines := strings.Split(str, attrDelimiter) + return parseRawDataMap(str), nil +} + +func parseRawDataMap(data string) map[string]string { + attrs := make(map[string]string) + lines := strings.Split(data, attrDelimiter) for _, line := range lines { - fmt.Printf("Line: %s\n", line) if len(line) == 0 || strings.HasPrefix(line, "#") { continue } @@ -55,7 +57,7 @@ func (c *valkeyClient) retrieveInfo(ctx context.Context) (map[string]string, err attrs[pair[0]] = pair[1] } } - return attrs, nil + return attrs } // close client to release connention pool. diff --git a/receiver/valkeyreceiver/config.go b/receiver/valkeyreceiver/config.go index e2d7ce2a090f..ca987d45f43e 100644 --- a/receiver/valkeyreceiver/config.go +++ b/receiver/valkeyreceiver/config.go @@ -21,16 +21,14 @@ type Config struct { // The target endpoint. confignet.AddrConfig `mapstructure:",squash"` - // TODO allow users to add additional resource key value pairs? - // Optional username. Use the specified Username to authenticate the current connection // with one of the connections defined in the ACL list when connecting - // to a valkey 6.0 instance, or greater, that is using the valkey ACL system. + // to a valkey instance that is using the valkey ACL system. Username string `mapstructure:"username"` // Optional password. Must match the password specified in the // requirepass server configuration option, or the user's password when connecting - // to a valkey 6.0 instance, or greater, that is using the valkey ACL system. + // to a valkey instance that is using the valkey ACL system. Password configopaque.String `mapstructure:"password"` TLS configtls.ClientConfig `mapstructure:"tls,omitempty"` diff --git a/receiver/valkeyreceiver/factory.go b/receiver/valkeyreceiver/factory.go index d6d55d0f2de6..671a8369cf17 100644 --- a/receiver/valkeyreceiver/factory.go +++ b/receiver/valkeyreceiver/factory.go @@ -13,6 +13,7 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/scraperhelper" + "go.opentelemetry.io/collector/scraper" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" ) @@ -53,5 +54,13 @@ func createMetricsReceiver( return nil, err } - return scraperhelper.NewScraperControllerReceiver(&oCfg.ControllerConfig, set, consumer, scraperhelper.AddScraper(metadata.Type, scrp)) + scraper, err := scraper.NewMetrics( + scraper.ScrapeMetricsFunc(scrp.scrape), + scraper.WithShutdown(scrp.shutdown), + ) + if err != err { + return nil, err + } + + return scraperhelper.NewScraperControllerReceiver(&oCfg.ControllerConfig, set, consumer, scraperhelper.AddScraper(metadata.Type, scraper)) } diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index 9ba8041cf93b..13bc5dc94dc2 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -1,62 +1,108 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver -go 1.22.0 +go 1.22.7 + +toolchain go1.23.4 require ( github.com/google/go-cmp v0.6.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.116.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.116.0 github.com/stretchr/testify v1.10.0 + github.com/testcontainers/testcontainers-go v0.34.0 github.com/valkey-io/valkey-go v1.0.45 - go.opentelemetry.io/collector/component v0.115.0 - go.opentelemetry.io/collector/component/componenttest v0.115.0 + go.opentelemetry.io/collector/component v0.116.0 + go.opentelemetry.io/collector/component/componenttest v0.116.0 go.opentelemetry.io/collector/config/confignet v1.21.0 go.opentelemetry.io/collector/config/configopaque v1.14.1 go.opentelemetry.io/collector/config/configtls v1.14.1 go.opentelemetry.io/collector/confmap v1.21.0 - go.opentelemetry.io/collector/consumer v1.21.0 - go.opentelemetry.io/collector/consumer/consumertest v0.115.0 + go.opentelemetry.io/collector/consumer v1.22.0 + go.opentelemetry.io/collector/consumer/consumertest v0.116.0 go.opentelemetry.io/collector/filter v0.115.0 - go.opentelemetry.io/collector/pdata v1.21.0 - go.opentelemetry.io/collector/receiver v0.115.0 - go.opentelemetry.io/collector/receiver/receivertest v0.115.0 + go.opentelemetry.io/collector/pdata v1.22.0 + go.opentelemetry.io/collector/receiver v0.116.0 + go.opentelemetry.io/collector/receiver/receivertest v0.116.0 + go.opentelemetry.io/collector/scraper v0.116.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) require ( + dario.cat/mergo v1.0.0 // indirect + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v0.2.1 // indirect + github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/distribution/reference v0.6.0 // indirect + github.com/docker/docker v27.3.1+incompatible // indirect + github.com/docker/go-connections v0.5.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect github.com/knadh/koanf/providers/confmap v0.1.0 // indirect github.com/knadh/koanf/v2 v2.1.2 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.7 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/sequential v0.5.0 // indirect + github.com/moby/sys/user v0.1.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect + github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/morikuni/aec v1.0.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.115.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.115.0 // indirect - go.opentelemetry.io/collector/consumer/consumerprofiles v0.115.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.115.0 // indirect - go.opentelemetry.io/collector/pipeline v0.115.0 // indirect - go.opentelemetry.io/collector/receiver/receiverprofiles v0.115.0 // indirect - go.opentelemetry.io/collector/scraper v0.115.0 // indirect - go.opentelemetry.io/otel v1.32.0 // indirect - go.opentelemetry.io/otel/metric v1.32.0 // indirect - go.opentelemetry.io/otel/sdk v1.32.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shirou/gopsutil/v3 v3.24.5 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.116.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.116.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.116.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.116.0 // indirect + go.opentelemetry.io/collector/pipeline v0.116.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.116.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect + go.opentelemetry.io/otel/metric v1.33.0 // indirect + go.opentelemetry.io/otel/sdk v1.33.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect - go.opentelemetry.io/otel/trace v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.33.0 // indirect + go.opentelemetry.io/proto/otlp v1.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd // indirect - google.golang.org/grpc v1.67.1 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/grpc v1.68.1 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index ebe423df74da..83423a6dce98 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -1,6 +1,36 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= +github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= +github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -8,19 +38,28 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= @@ -31,79 +70,142 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= +github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0 h1:xDbf946Zm0rTzWcYEyUfU0Ft2KthhaH4xrNm303vpbI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0/go.mod h1:yuIyOGmQJOn37u6NVfG8yOCzVvwboqnt+pjOSTvDeLo= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.116.0 h1:YENvOsl67sj8Ovvl5R8hKMnpPvdW3q5B7+CYYgy/GvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.116.0/go.mod h1:D56LJWVbMc1Kdy7qa6HCrHH6ZOr4yr7YuVfp1rJn0es= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.116.0 h1:RlEK9MbxWyBHbLel8EJ1L7DbYVLai9dZL6Ljl2cBgyA= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.116.0/go.mod h1:AVUEyIjPb+0ARr7mhIkZkdNg3fd0ZcRhzAi53oZhl1Q= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0 h1:jwnZYRBuPJnsKXE5H6ZvTEm91bXW5VP8+tLewzl54eg= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0/go.mod h1:NT3Ag+DdnIAZQfD7l7OHwlYqnaAJ19SoPZ0nhD9yx4s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= +github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/valkey-io/valkey-go v1.0.45 h1:d2ksu+FvKEy9pU9CCMZ94ABTLm2kNHU0jxEJZRqpFA4= github.com/valkey-io/valkey-go v1.0.45/go.mod h1:BXlVAPIL9rFQinSFM+N32JfWzfCaUAqBpZkc4vPY6fM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/collector/component v0.115.0 h1:iLte1oCiXzjiCnaOBKdsXacfFiECecpWxW3/LeriMoo= -go.opentelemetry.io/collector/component v0.115.0/go.mod h1:oIUFiH7w1eOimdeYhFI+gAIxYSiLDocKVJ0PTvX7d6s= -go.opentelemetry.io/collector/component/componenttest v0.115.0 h1:9URDJ9VyP6tuij+YHjp/kSSMecnZOd7oGvzu+rw9SJY= -go.opentelemetry.io/collector/component/componenttest v0.115.0/go.mod h1:PzXvNqKLCiSADZGZFKH+IOHMkaQ0GTHuzysfVbTPKYY= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/collector/component v0.116.0 h1:SQE1YeVfYCN7bw1n4hknUwJE5U/1qJL552sDhAdSlaA= +go.opentelemetry.io/collector/component v0.116.0/go.mod h1:MYgXFZWDTq0uPgF1mkLSFibtpNqksRVAOrmihckOQEs= +go.opentelemetry.io/collector/component/componenttest v0.116.0 h1:UIcnx4Rrs/oDRYSAZNHRMUiYs2FBlwgV5Nc0oMYfR6A= +go.opentelemetry.io/collector/component/componenttest v0.116.0/go.mod h1:W40HaKPHdBFMVI7zzHE7dhdWC+CgAnAC9SmWetFBATY= go.opentelemetry.io/collector/config/confignet v1.21.0 h1:PeQ5YrMnfftysFL/WVaSrjPOWjD6DfeABY50pf9CZxU= go.opentelemetry.io/collector/config/confignet v1.21.0/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= go.opentelemetry.io/collector/config/configopaque v1.14.1 h1:5xAEa4ld+57xWKdU2gR5/6+rBa7LTCPfShJQFUxN0Zw= go.opentelemetry.io/collector/config/configopaque v1.14.1/go.mod h1:6zlLIyOoRpJJ+0bEKrlZOZon3rOp5Jrz9fMdR4twOS4= -go.opentelemetry.io/collector/config/configtelemetry v0.115.0 h1:U07FinCDop+r2RjWQ3aP9ZWONC7r7kQIp1GkXQi6nsI= -go.opentelemetry.io/collector/config/configtelemetry v0.115.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= +go.opentelemetry.io/collector/config/configtelemetry v0.116.0 h1:Vl49VCHQwBOeMswDpFwcl2HD8e9y94xlrfII3SR2VeQ= +go.opentelemetry.io/collector/config/configtelemetry v0.116.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= go.opentelemetry.io/collector/config/configtls v1.14.1 h1:cd5kNvLnIe+GVHUV6Fk6O5fkwS4at8dVCrFo7t0O8kE= go.opentelemetry.io/collector/config/configtls v1.14.1/go.mod h1:StxglrVWeRIFaqc2hpsF9xSsv2A5MOAx5GhG4WjFuP4= go.opentelemetry.io/collector/confmap v1.21.0 h1:1tIcx2/Suwg8VhuPmQw87ba0ludPmumpFCFRZZa6RXA= go.opentelemetry.io/collector/confmap v1.21.0/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= -go.opentelemetry.io/collector/consumer v1.21.0 h1:THKZ2Vbi6GkamjTBI2hFq5Dc4kINZTWGwQNa8d/Ty9g= -go.opentelemetry.io/collector/consumer v1.21.0/go.mod h1:FQcC4ThMtRYY41dv+IPNK8POLLhAFY3r1YR5fuP7iiY= -go.opentelemetry.io/collector/consumer/consumererror v0.115.0 h1:yli//xBCQMPZKXNgNlXemo4dvqhnFrAmCZ11DvQgmcY= -go.opentelemetry.io/collector/consumer/consumererror v0.115.0/go.mod h1:LwVzAvQ6ZVNG7mbOvurbAo+W/rKws0IcjOwriuZXqPE= -go.opentelemetry.io/collector/consumer/consumerprofiles v0.115.0 h1:H3fDuyQW1t2HWHkz96WMBQJKUevypOCjBqnqtaAWyoA= -go.opentelemetry.io/collector/consumer/consumerprofiles v0.115.0/go.mod h1:IzEmZ91Tp7TBxVDq8Cc9xvLsmO7H08njr6Pu9P5d9ns= -go.opentelemetry.io/collector/consumer/consumertest v0.115.0 h1:hru0I2447y0TluCdwlKYFFtgcpyCnlM+LiOK1JZyA70= -go.opentelemetry.io/collector/consumer/consumertest v0.115.0/go.mod h1:ybjALRJWR6aKNOzEMy1T1ruCULVDEjj4omtOJMrH/kU= +go.opentelemetry.io/collector/consumer v1.22.0 h1:QmfnNizyNZFt0uK3GG/EoT5h6PvZJ0dgVTc5hFEc1l0= +go.opentelemetry.io/collector/consumer v1.22.0/go.mod h1:tiz2khNceFAPokxxfzAuFfIpShBasMT2AL2Sbc7+m0I= +go.opentelemetry.io/collector/consumer/consumererror v0.116.0 h1:GRPnuvwxUeHKVTRzy35di8OFlxypY4YWrK+1nWMsExM= +go.opentelemetry.io/collector/consumer/consumererror v0.116.0/go.mod h1:OvQvQ2V7sHT4Vz+1/4mwdEajWZNoFUsY1NhOM8rGvXo= +go.opentelemetry.io/collector/consumer/consumertest v0.116.0 h1:pIVR7FtQMNAzfxBUSMEIC2dX5Lfo3O9ZBfx+sAwrrrM= +go.opentelemetry.io/collector/consumer/consumertest v0.116.0/go.mod h1:cV3cNDiPnls5JdhnOJJFVlclrClg9kPs04cXgYP9Gmk= +go.opentelemetry.io/collector/consumer/xconsumer v0.116.0 h1:ZrWvq7HumB0jRYmS2ztZ3hhXRNpUVBWPKMbPhsVGmZM= +go.opentelemetry.io/collector/consumer/xconsumer v0.116.0/go.mod h1:C+VFMk8vLzPun6XK8aMts6h4RaDjmzXHCPaiOxzRQzQ= go.opentelemetry.io/collector/filter v0.115.0 h1:pYnHUFDSHSjEIFZit+CU09itVkDXgV+WcV2HOkjvQcE= go.opentelemetry.io/collector/filter v0.115.0/go.mod h1:aewQ+jmvpH88gPVWpNXiWSm+wwJVxTK4f23ex2NMd2c= -go.opentelemetry.io/collector/pdata v1.21.0 h1:PG+UbiFMJ35X/WcAR7Rf/PWmWtRdW0aHlOidsR6c5MA= -go.opentelemetry.io/collector/pdata v1.21.0/go.mod h1:GKb1/zocKJMvxKbS+sl0W85lxhYBTFJ6h6I1tphVyDU= -go.opentelemetry.io/collector/pdata/pprofile v0.115.0 h1:NI89hy13vNDw7EOnQf7Jtitks4HJFO0SUWznTssmP94= -go.opentelemetry.io/collector/pdata/pprofile v0.115.0/go.mod h1:jGzdNfO0XTtfLjXCL/uCC1livg1LlfR+ix2WE/z3RpQ= -go.opentelemetry.io/collector/pdata/testdata v0.115.0 h1:Rblz+AKXdo3fG626jS+KSd0OSA4uMXcTQfpwed6P8LI= -go.opentelemetry.io/collector/pdata/testdata v0.115.0/go.mod h1:inNnRt6S2Nn260EfCBEcjesjlKOSsr0jPwkPqpBkt4s= -go.opentelemetry.io/collector/pipeline v0.115.0 h1:bmACBqb0e8U9ag+vGGHUP7kCfAO7HHROdtzIEg8ulus= -go.opentelemetry.io/collector/pipeline v0.115.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= -go.opentelemetry.io/collector/receiver v0.115.0 h1:55Q3Jvj6zHCIA1psKqi/3kEMJO4OqUF5tNAEYNdB1U8= -go.opentelemetry.io/collector/receiver v0.115.0/go.mod h1:nBSCh2O/WUcfgpJ+Jpz+B0z0Hn5jHeRvF2WmLij5EIY= -go.opentelemetry.io/collector/receiver/receiverprofiles v0.115.0 h1:R9JLaj2Al93smIPUkbJshAkb/cY0H5JBOxIx+Zu0NG4= -go.opentelemetry.io/collector/receiver/receiverprofiles v0.115.0/go.mod h1:05E5hGujWeeXJmzKZwTdHyZ/+rRyrQlQB5p5Q2XY39M= -go.opentelemetry.io/collector/receiver/receivertest v0.115.0 h1:OiB684SbHQi6/Pd3ZH0cXjYvCpBS9ilQBfTQx0wVXHg= -go.opentelemetry.io/collector/receiver/receivertest v0.115.0/go.mod h1:Y8Z9U/bz9Xpyt8GI8DxZZgryw3mnnIw+AeKVLTD2cP8= -go.opentelemetry.io/collector/scraper v0.115.0 h1:hbfebO7x1Xm96OwqeuLz5w7QAaB3ZMlwOkUo0XzPadc= -go.opentelemetry.io/collector/scraper v0.115.0/go.mod h1:7YoCO6/4PeExLiX1FokcydJGCQUa7lUqZsqXokJ5VZ4= -go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= -go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= -go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= -go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= -go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= -go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/collector/pdata v1.22.0 h1:3yhjL46NLdTMoP8rkkcE9B0pzjf2973crn0KKhX5UrI= +go.opentelemetry.io/collector/pdata v1.22.0/go.mod h1:nLLf6uDg8Kn5g3WNZwGyu8+kf77SwOqQvMTb5AXEbEY= +go.opentelemetry.io/collector/pdata/pprofile v0.116.0 h1:iE6lqkO7Hi6lTIIml1RI7yQ55CKqW12R2qHinwF5Zuk= +go.opentelemetry.io/collector/pdata/pprofile v0.116.0/go.mod h1:xQiPpjzIiXRFb+1fPxUy/3ygEZgo0Bu/xmLKOWu8vMQ= +go.opentelemetry.io/collector/pdata/testdata v0.116.0 h1:zmn1zpeX2BvzL6vt2dBF4OuAyFF2ml/OXcqflNgFiP0= +go.opentelemetry.io/collector/pdata/testdata v0.116.0/go.mod h1:ytWzICFN4XTDP6o65B4+Ed52JGdqgk9B8CpLHCeCpMo= +go.opentelemetry.io/collector/pipeline v0.116.0 h1:o8eKEuWEszmRpfShy7ElBoQ3Jo6kCi9ucm3yRgdNb9s= +go.opentelemetry.io/collector/pipeline v0.116.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= +go.opentelemetry.io/collector/receiver v0.116.0 h1:voiBluWLwe4lbyLVwxloK6CudqqszWF+bgYKHuxnETU= +go.opentelemetry.io/collector/receiver v0.116.0/go.mod h1:zb6m8l+knUuN62ASCDqQPIm9punK8PEX1mFrF/yzMI8= +go.opentelemetry.io/collector/receiver/receivertest v0.116.0 h1:ZF4QVcots0OUiutblkyPR02pc+g7v1QaJSFW8tOzHoQ= +go.opentelemetry.io/collector/receiver/receivertest v0.116.0/go.mod h1:7GGvtHhW3o6457/wGtSWXJtCtlW6VGFUZSlf6wboNTw= +go.opentelemetry.io/collector/receiver/xreceiver v0.116.0 h1:Kc+ixqgMjU2sHhzNrFn5TttVNiJlJwTLL3sQrM9uH6s= +go.opentelemetry.io/collector/receiver/xreceiver v0.116.0/go.mod h1:H2YGSNFoMbWMIDvB8tzkReHSVqvogihjtet+ppHfYv8= +go.opentelemetry.io/collector/scraper v0.116.0 h1:Gdg3v/QUZobHcAAewOlwlaE4XlkRQl3FFut906XuCiw= +go.opentelemetry.io/collector/scraper v0.116.0/go.mod h1:G4SmTIPG8RbxVhTF3zj4EFJx+1tceZbZxhS6mtXOeg0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= +go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= -go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= +go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -113,6 +215,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -121,20 +225,30 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -143,14 +257,19 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd h1:6TEm2ZxXoQmFWFlt1vNxvVOa1Q0dXFQD1m/rYjXmS0E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1:pgr/4QbFyktUv9CtQ/Fq4gzEE6/Xs7iCXbktaGzLHbQ= +google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index 95faaec426ce..1c84630f1726 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -2,7 +2,6 @@ package valkeyreceiver import ( "context" - "fmt" "strconv" "time" @@ -10,7 +9,6 @@ import ( "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver" - "go.opentelemetry.io/collector/scraper" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" "github.com/valkey-io/valkey-go" @@ -24,23 +22,18 @@ type valkeyScraper struct { configInfo configInfo } -func newValkeyScraper(cfg *Config, settings receiver.Settings) (scraper.Metrics, error) { +func newValkeyScraper(cfg *Config, settings receiver.Settings) (*valkeyScraper, error) { configInfo, err := newConfigInfo(cfg) if err != nil { return nil, err } - vs := &valkeyScraper{ + return &valkeyScraper{ cfg: cfg, settings: settings.TelemetrySettings, mb: metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, settings), configInfo: configInfo, - } - return scraper.NewMetrics( - scraper.ScrapeMetricsFunc(vs.scrape), - - scraper.WithShutdown(vs.shutdown), - ) + }, nil } func (vs *valkeyScraper) shutdown(context.Context) error { @@ -77,7 +70,6 @@ func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { now := pcommon.NewTimestampFromTime(time.Now()) vs.recordConnectionMetrics(now, result) - fmt.Printf("%#v", result) return vs.mb.Emit(), nil } diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 0440d820d3f1..67e3b50e4311 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -2,24 +2,49 @@ package valkeyreceiver import ( "context" - "fmt" + "path/filepath" "testing" + _ "embed" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pmetrictest" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/receiver/receivertest" ) +//go:embed testdata/all-metrics/raw_info.txt +var raw_info string + +type mockClient struct{} + +func (mockClient) retrieveInfo(context.Context) (map[string]string, error) { + return parseRawDataMap(raw_info), nil +} + +func (mockClient) close() error { + return nil +} + +var _ client = (*mockClient)(nil) + func TestScrape(t *testing.T) { + // TODO: change to test table for testing multiple clients output + goldenDir := filepath.Join("testdata/all-metrics") settings := receivertest.NewNopSettings() cfg := createDefaultConfig().(*Config) cfg.Endpoint = "localhost:6379" scraper, err := newValkeyScraper(cfg, settings) + defer scraper.shutdown(context.Background()) + + require.NoError(t, err) + scraper.client = mockClient{} + + metrics, err := scraper.scrape(context.Background()) require.NoError(t, err) - metrics, err := scraper.ScrapeMetrics(context.Background()) + expectedMetrics, err := golden.ReadMetrics(filepath.Join(goldenDir, "output-metrics.yaml")) require.NoError(t, err) - fmt.Printf("%#v", metrics) - fmt.Printf("Total metrics: %#v", metrics.MetricCount()) - fmt.Printf("Total scope metrics: %#v", metrics.ResourceMetrics().At(0).ScopeMetrics().Len()) + require.NoError(t, pmetrictest.CompareMetrics(expectedMetrics, metrics, pmetrictest.IgnoreMetricDataPointsOrder(), pmetrictest.IgnoreTimestamp(), pmetrictest.IgnoreStartTimestamp())) } diff --git a/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml b/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml new file mode 100644 index 000000000000..6b97a3678bcd --- /dev/null +++ b/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml @@ -0,0 +1,33 @@ +resourceMetrics: + - resource: {} + scopeMetrics: + - metrics: + - description: The number of connections that are currently in state described by the state attribute + gauge: + dataPoints: + - asInt: "0" + attributes: + - key: valkey.client.connection.state + value: + stringValue: blocked + startTimeUnixNano: "1000000" + timeUnixNano: "2000000" + - asInt: "1" + attributes: + - key: valkey.client.connection.state + value: + stringValue: tracking + startTimeUnixNano: "1000000" + timeUnixNano: "2000000" + - asInt: "1" + attributes: + - key: valkey.client.connection.state + value: + stringValue: used + startTimeUnixNano: "1000000" + timeUnixNano: "2000000" + name: valkey.client.connection.count + unit: '{connection}' + scope: + name: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver + version: latest diff --git a/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt b/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt new file mode 100644 index 000000000000..d2cd23c2ac39 --- /dev/null +++ b/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt @@ -0,0 +1,230 @@ +txt:# Server +redis_version:7.2.4 +server_name:valkey +valkey_version:8.0.1 +redis_git_sha1:00000000 +redis_git_dirty:0 +redis_build_id:b5fcc5ff6824bfbe +server_mode:standalone +os:Linux 6.12.4-arch1-1 x86_64 +arch_bits:64 +monotonic_clock:POSIX clock_gettime +multiplexing_api:epoll +gcc_version:12.2.0 +process_id:1 +process_supervised:no +run_id:4696ce3c4381c93858d03274ffff54a68db12f09 +tcp_port:6379 +server_time_usec:1735063850046939 +uptime_in_seconds:636 +uptime_in_days:0 +hz:10 +configured_hz:10 +lru_clock:7010602 +executable:/data/valkey-server +config_file: +io_threads_active:0 +availability_zone: +listener0:name=tcp,bind=*,bind=-::*,port=6379 + +# Clients +connected_clients:1 +cluster_connections:0 +maxclients:10000 +client_recent_max_input_buffer:0 +client_recent_max_output_buffer:0 +blocked_clients:0 +tracking_clients:1 +pubsub_clients:0 +watching_clients:0 +clients_in_timeout_table:0 +total_watched_keys:0 +total_blocking_keys:0 +total_blocking_keys_on_nokey:0 + +# Memory +used_memory:1101288 +used_memory_human:1.05M +used_memory_rss:16199680 +used_memory_rss_human:15.45M +used_memory_peak:1101288 +used_memory_peak_human:1.05M +used_memory_peak_perc:100.00% +used_memory_overhead:912128 +used_memory_startup:911944 +used_memory_dataset:189160 +used_memory_dataset_perc:99.90% +allocator_allocated:1780640 +allocator_active:1908736 +allocator_resident:7331840 +allocator_muzzy:0 +total_system_memory:33297350656 +total_system_memory_human:31.01G +used_memory_lua:31744 +used_memory_vm_eval:31744 +used_memory_lua_human:31.00K +used_memory_scripts_eval:0 +number_of_cached_scripts:0 +number_of_functions:0 +number_of_libraries:0 +used_memory_vm_functions:33792 +used_memory_vm_total:65536 +used_memory_vm_total_human:64.00K +used_memory_functions:184 +used_memory_scripts:184 +used_memory_scripts_human:184B +maxmemory:0 +maxmemory_human:0B +maxmemory_policy:noeviction +allocator_frag_ratio:1.07 +allocator_frag_bytes:128096 +allocator_rss_ratio:3.84 +allocator_rss_bytes:5423104 +rss_overhead_ratio:2.21 +rss_overhead_bytes:8867840 +mem_fragmentation_ratio:15.27 +mem_fragmentation_bytes:15138720 +mem_not_counted_for_evict:0 +mem_replication_backlog:0 +mem_total_replication_buffers:0 +mem_clients_slaves:0 +mem_clients_normal:0 +mem_cluster_links:0 +mem_aof_buffer:0 +mem_allocator:jemalloc-5.3.0 +mem_overhead_db_hashtable_rehashing:0 +active_defrag_running:0 +lazyfree_pending_objects:0 +lazyfreed_objects:0 + +# Persistence +loading:0 +async_loading:0 +current_cow_peak:0 +current_cow_size:0 +current_cow_size_age:0 +current_fork_perc:0.00 +current_save_keys_processed:0 +current_save_keys_total:0 +rdb_changes_since_last_save:0 +rdb_bgsave_in_progress:0 +rdb_last_save_time:1735063214 +rdb_last_bgsave_status:ok +rdb_last_bgsave_time_sec:-1 +rdb_current_bgsave_time_sec:-1 +rdb_saves:0 +rdb_last_cow_size:0 +rdb_last_load_keys_expired:0 +rdb_last_load_keys_loaded:0 +aof_enabled:0 +aof_rewrite_in_progress:0 +aof_rewrite_scheduled:0 +aof_last_rewrite_time_sec:-1 +aof_current_rewrite_time_sec:-1 +aof_last_bgrewrite_status:ok +aof_rewrites:0 +aof_rewrites_consecutive_failures:0 +aof_last_write_status:ok +aof_last_cow_size:0 +module_fork_in_progress:0 +module_fork_last_cow_size:0 + +# Stats +total_connections_received:5 +total_commands_processed:32 +instantaneous_ops_per_sec:0 +total_net_input_bytes:1157 +total_net_output_bytes:23927 +total_net_repl_input_bytes:0 +total_net_repl_output_bytes:0 +instantaneous_input_kbps:0.00 +instantaneous_output_kbps:0.00 +instantaneous_input_repl_kbps:0.00 +instantaneous_output_repl_kbps:0.00 +rejected_connections:0 +sync_full:0 +sync_partial_ok:0 +sync_partial_err:0 +expired_keys:0 +expired_stale_perc:0.00 +expired_time_cap_reached_count:0 +expire_cycle_cpu_milliseconds:6 +evicted_keys:0 +evicted_clients:0 +evicted_scripts:0 +total_eviction_exceeded_time:0 +current_eviction_exceeded_time:0 +keyspace_hits:0 +keyspace_misses:0 +pubsub_channels:0 +pubsub_patterns:0 +pubsubshard_channels:0 +latest_fork_usec:0 +total_forks:0 +migrate_cached_sockets:0 +slave_expires_tracked_keys:0 +active_defrag_hits:0 +active_defrag_misses:0 +active_defrag_key_hits:0 +active_defrag_key_misses:0 +total_active_defrag_time:0 +current_active_defrag_time:0 +tracking_total_keys:0 +tracking_total_items:0 +tracking_total_prefixes:0 +unexpected_error_replies:0 +total_error_replies:5 +dump_payload_sanitizations:0 +total_reads_processed:22 +total_writes_processed:17 +io_threaded_reads_processed:0 +io_threaded_writes_processed:0 +io_threaded_freed_objects:0 +io_threaded_poll_processed:0 +io_threaded_total_prefetch_batches:0 +io_threaded_total_prefetch_entries:0 +client_query_buffer_limit_disconnections:0 +client_output_buffer_limit_disconnections:0 +reply_buffer_shrinks:1 +reply_buffer_expands:0 +eventloop_cycles:6366 +eventloop_duration_sum:785038 +eventloop_duration_cmd_sum:192 +instantaneous_eventloop_cycles_per_sec:9 +instantaneous_eventloop_duration_usec:111 +acl_access_denied_auth:0 +acl_access_denied_cmd:0 +acl_access_denied_key:0 +acl_access_denied_channel:0 + +# Replication +role:master +connected_slaves:0 +replicas_waiting_psync:0 +master_failover_state:no-failover +master_replid:98fe17ad8267e5c4afdb732cbd69ac962f45a2b3 +master_replid2:0000000000000000000000000000000000000000 +master_repl_offset:0 +second_repl_offset:-1 +repl_backlog_active:0 +repl_backlog_size:10485760 +repl_backlog_first_byte_offset:0 +repl_backlog_histlen:0 + +# CPU +used_cpu_sys:0.317747 +used_cpu_user:0.516715 +used_cpu_sys_children:0.000000 +used_cpu_user_children:0.002436 +used_cpu_sys_main_thread:0.319071 +used_cpu_user_main_thread:0.514337 + +# Modules + +# Errorstats +errorstat_ERR:count=5 + +# Cluster +cluster_enabled:0 + +# Keyspace From 613dd313a966fdeaadb4f6fd2886746267a1b4b9 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 09:36:28 +0100 Subject: [PATCH 04/23] test: add container integration tests --- receiver/valkeyreceiver/integration_test.go | 58 +++++++++++++++++++ receiver/valkeyreceiver/receiver.go | 15 ++++- .../testdata/all-metrics/output-metrics.yaml | 12 +++- 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 receiver/valkeyreceiver/integration_test.go diff --git a/receiver/valkeyreceiver/integration_test.go b/receiver/valkeyreceiver/integration_test.go new file mode 100644 index 000000000000..faea6a342e04 --- /dev/null +++ b/receiver/valkeyreceiver/integration_test.go @@ -0,0 +1,58 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:build integration + +package valkeyreceiver + +import ( + "fmt" + "path/filepath" + "testing" + "time" + + "github.com/testcontainers/testcontainers-go" + "github.com/testcontainers/testcontainers-go/wait" + "go.opentelemetry.io/collector/component" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/scraperinttest" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pmetrictest" +) + +const valkeyPort = "6379" + +func TestIntegration(t *testing.T) { + t.Run("8", integrationTest("8.0")) +} + +func integrationTest(version string) func(*testing.T) { + return scraperinttest.NewIntegrationTest( + NewFactory(), + scraperinttest.WithContainerRequest( + testcontainers.ContainerRequest{ + Image: fmt.Sprintf("valkey/valkey:%s", version), + ExposedPorts: []string{valkeyPort}, + WaitingFor: wait.ForListeningPort(valkeyPort).WithStartupTimeout(2 * time.Minute), + }), + scraperinttest.WithCustomConfig( + func(t *testing.T, cfg component.Config, ci *scraperinttest.ContainerInfo) { + rCfg := cfg.(*Config) + rCfg.MetricsBuilderConfig.ResourceAttributes.ServerPort.Enabled = true + rCfg.MetricsBuilderConfig.ResourceAttributes.ServerAddress.Enabled = true + rCfg.Endpoint = fmt.Sprintf("%s:%s", ci.Host(t), ci.MappedPort(t, valkeyPort)) + }), + scraperinttest.WithExpectedFile(filepath.Join("testdata", "all-metrics", "output-metrics.yaml")), + scraperinttest.WithCompareOptions( + pmetrictest.IgnoreMetricValues(), + pmetrictest.IgnoreMetricDataPointsOrder(), + pmetrictest.IgnoreStartTimestamp(), + pmetrictest.IgnoreTimestamp(), + pmetrictest.ChangeResourceAttributeValue("server.address", func(_ string) string { + return "localhost" + }), + pmetrictest.ChangeResourceAttributeValue("server.port", func(_ string) string { + return valkeyPort + }), + ), + ).Run +} diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index 1c84630f1726..f05712f4bda9 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -70,7 +70,20 @@ func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { now := pcommon.NewTimestampFromTime(time.Now()) vs.recordConnectionMetrics(now, result) - return vs.mb.Emit(), nil + rb := vs.mb.NewResourceBuilder() + rb.SetValkeyVersion(getValkeyVersion(result)) + rb.SetServerAddress(vs.configInfo.Address) + rb.SetServerPort(vs.configInfo.Port) + return vs.mb.Emit(metadata.WithResource(rb.Emit())), nil +} + +// getValkeyVersion retrieves version string from 'redis_version' Valkey info key-value pairs +// e.g. "redis_version:5.0.7" +func getValkeyVersion(info map[string]string) string { + if str, ok := info["redis_version"]; ok { + return str + } + return "unknown" } func (vs *valkeyScraper) recordConnectionMetrics(now pcommon.Timestamp, info map[string]string) { diff --git a/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml b/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml index 6b97a3678bcd..be1345a3727f 100644 --- a/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml +++ b/receiver/valkeyreceiver/testdata/all-metrics/output-metrics.yaml @@ -1,5 +1,15 @@ resourceMetrics: - - resource: {} + - resource: + attributes: + - key: valkey.version + value: + stringValue: 7.2.4 + - key: server.address + value: + stringValue: localhost + - key: server.port + value: + stringValue: "32787" scopeMetrics: - metrics: - description: The number of connections that are currently in state described by the state attribute From 60963de10a6a6ac510e7605c9e070b962c079c24 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 09:39:03 +0100 Subject: [PATCH 05/23] chore: add changelog entry --- .chloggen/init_valkey_receiver.yaml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .chloggen/init_valkey_receiver.yaml diff --git a/.chloggen/init_valkey_receiver.yaml b/.chloggen/init_valkey_receiver.yaml new file mode 100644 index 000000000000..490eed2246a8 --- /dev/null +++ b/.chloggen/init_valkey_receiver.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: 'enchancement' + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: valkeyreceiver + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Init code for Valkey receiver + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [33787] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [] From 9898ae959ecdc14c876e7874a9b2114a0c722e6c Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 09:41:37 +0100 Subject: [PATCH 06/23] chore: remove raw data file --- .../testdata/all-metrics/raw_info.txt | 230 ------------------ 1 file changed, 230 deletions(-) delete mode 100644 receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt diff --git a/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt b/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt deleted file mode 100644 index d2cd23c2ac39..000000000000 --- a/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt +++ /dev/null @@ -1,230 +0,0 @@ -txt:# Server -redis_version:7.2.4 -server_name:valkey -valkey_version:8.0.1 -redis_git_sha1:00000000 -redis_git_dirty:0 -redis_build_id:b5fcc5ff6824bfbe -server_mode:standalone -os:Linux 6.12.4-arch1-1 x86_64 -arch_bits:64 -monotonic_clock:POSIX clock_gettime -multiplexing_api:epoll -gcc_version:12.2.0 -process_id:1 -process_supervised:no -run_id:4696ce3c4381c93858d03274ffff54a68db12f09 -tcp_port:6379 -server_time_usec:1735063850046939 -uptime_in_seconds:636 -uptime_in_days:0 -hz:10 -configured_hz:10 -lru_clock:7010602 -executable:/data/valkey-server -config_file: -io_threads_active:0 -availability_zone: -listener0:name=tcp,bind=*,bind=-::*,port=6379 - -# Clients -connected_clients:1 -cluster_connections:0 -maxclients:10000 -client_recent_max_input_buffer:0 -client_recent_max_output_buffer:0 -blocked_clients:0 -tracking_clients:1 -pubsub_clients:0 -watching_clients:0 -clients_in_timeout_table:0 -total_watched_keys:0 -total_blocking_keys:0 -total_blocking_keys_on_nokey:0 - -# Memory -used_memory:1101288 -used_memory_human:1.05M -used_memory_rss:16199680 -used_memory_rss_human:15.45M -used_memory_peak:1101288 -used_memory_peak_human:1.05M -used_memory_peak_perc:100.00% -used_memory_overhead:912128 -used_memory_startup:911944 -used_memory_dataset:189160 -used_memory_dataset_perc:99.90% -allocator_allocated:1780640 -allocator_active:1908736 -allocator_resident:7331840 -allocator_muzzy:0 -total_system_memory:33297350656 -total_system_memory_human:31.01G -used_memory_lua:31744 -used_memory_vm_eval:31744 -used_memory_lua_human:31.00K -used_memory_scripts_eval:0 -number_of_cached_scripts:0 -number_of_functions:0 -number_of_libraries:0 -used_memory_vm_functions:33792 -used_memory_vm_total:65536 -used_memory_vm_total_human:64.00K -used_memory_functions:184 -used_memory_scripts:184 -used_memory_scripts_human:184B -maxmemory:0 -maxmemory_human:0B -maxmemory_policy:noeviction -allocator_frag_ratio:1.07 -allocator_frag_bytes:128096 -allocator_rss_ratio:3.84 -allocator_rss_bytes:5423104 -rss_overhead_ratio:2.21 -rss_overhead_bytes:8867840 -mem_fragmentation_ratio:15.27 -mem_fragmentation_bytes:15138720 -mem_not_counted_for_evict:0 -mem_replication_backlog:0 -mem_total_replication_buffers:0 -mem_clients_slaves:0 -mem_clients_normal:0 -mem_cluster_links:0 -mem_aof_buffer:0 -mem_allocator:jemalloc-5.3.0 -mem_overhead_db_hashtable_rehashing:0 -active_defrag_running:0 -lazyfree_pending_objects:0 -lazyfreed_objects:0 - -# Persistence -loading:0 -async_loading:0 -current_cow_peak:0 -current_cow_size:0 -current_cow_size_age:0 -current_fork_perc:0.00 -current_save_keys_processed:0 -current_save_keys_total:0 -rdb_changes_since_last_save:0 -rdb_bgsave_in_progress:0 -rdb_last_save_time:1735063214 -rdb_last_bgsave_status:ok -rdb_last_bgsave_time_sec:-1 -rdb_current_bgsave_time_sec:-1 -rdb_saves:0 -rdb_last_cow_size:0 -rdb_last_load_keys_expired:0 -rdb_last_load_keys_loaded:0 -aof_enabled:0 -aof_rewrite_in_progress:0 -aof_rewrite_scheduled:0 -aof_last_rewrite_time_sec:-1 -aof_current_rewrite_time_sec:-1 -aof_last_bgrewrite_status:ok -aof_rewrites:0 -aof_rewrites_consecutive_failures:0 -aof_last_write_status:ok -aof_last_cow_size:0 -module_fork_in_progress:0 -module_fork_last_cow_size:0 - -# Stats -total_connections_received:5 -total_commands_processed:32 -instantaneous_ops_per_sec:0 -total_net_input_bytes:1157 -total_net_output_bytes:23927 -total_net_repl_input_bytes:0 -total_net_repl_output_bytes:0 -instantaneous_input_kbps:0.00 -instantaneous_output_kbps:0.00 -instantaneous_input_repl_kbps:0.00 -instantaneous_output_repl_kbps:0.00 -rejected_connections:0 -sync_full:0 -sync_partial_ok:0 -sync_partial_err:0 -expired_keys:0 -expired_stale_perc:0.00 -expired_time_cap_reached_count:0 -expire_cycle_cpu_milliseconds:6 -evicted_keys:0 -evicted_clients:0 -evicted_scripts:0 -total_eviction_exceeded_time:0 -current_eviction_exceeded_time:0 -keyspace_hits:0 -keyspace_misses:0 -pubsub_channels:0 -pubsub_patterns:0 -pubsubshard_channels:0 -latest_fork_usec:0 -total_forks:0 -migrate_cached_sockets:0 -slave_expires_tracked_keys:0 -active_defrag_hits:0 -active_defrag_misses:0 -active_defrag_key_hits:0 -active_defrag_key_misses:0 -total_active_defrag_time:0 -current_active_defrag_time:0 -tracking_total_keys:0 -tracking_total_items:0 -tracking_total_prefixes:0 -unexpected_error_replies:0 -total_error_replies:5 -dump_payload_sanitizations:0 -total_reads_processed:22 -total_writes_processed:17 -io_threaded_reads_processed:0 -io_threaded_writes_processed:0 -io_threaded_freed_objects:0 -io_threaded_poll_processed:0 -io_threaded_total_prefetch_batches:0 -io_threaded_total_prefetch_entries:0 -client_query_buffer_limit_disconnections:0 -client_output_buffer_limit_disconnections:0 -reply_buffer_shrinks:1 -reply_buffer_expands:0 -eventloop_cycles:6366 -eventloop_duration_sum:785038 -eventloop_duration_cmd_sum:192 -instantaneous_eventloop_cycles_per_sec:9 -instantaneous_eventloop_duration_usec:111 -acl_access_denied_auth:0 -acl_access_denied_cmd:0 -acl_access_denied_key:0 -acl_access_denied_channel:0 - -# Replication -role:master -connected_slaves:0 -replicas_waiting_psync:0 -master_failover_state:no-failover -master_replid:98fe17ad8267e5c4afdb732cbd69ac962f45a2b3 -master_replid2:0000000000000000000000000000000000000000 -master_repl_offset:0 -second_repl_offset:-1 -repl_backlog_active:0 -repl_backlog_size:10485760 -repl_backlog_first_byte_offset:0 -repl_backlog_histlen:0 - -# CPU -used_cpu_sys:0.317747 -used_cpu_user:0.516715 -used_cpu_sys_children:0.000000 -used_cpu_user_children:0.002436 -used_cpu_sys_main_thread:0.319071 -used_cpu_user_main_thread:0.514337 - -# Modules - -# Errorstats -errorstat_ERR:count=5 - -# Cluster -cluster_enabled:0 - -# Keyspace From 480f82c92d7149c0d6524c60950e0ea35880f8c8 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 09:53:39 +0100 Subject: [PATCH 07/23] fix: typo and core version --- .chloggen/init_valkey_receiver.yaml | 2 +- receiver/valkeyreceiver/go.mod | 34 +++++++-------- receiver/valkeyreceiver/go.sum | 68 ++++++++++++++--------------- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.chloggen/init_valkey_receiver.yaml b/.chloggen/init_valkey_receiver.yaml index 490eed2246a8..198dc34d0933 100644 --- a/.chloggen/init_valkey_receiver.yaml +++ b/.chloggen/init_valkey_receiver.yaml @@ -1,7 +1,7 @@ # Use this changelog template to create an entry for release notes. # One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: 'enchancement' +change_type: 'enhancement' # The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) component: valkeyreceiver diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index 13bc5dc94dc2..9aa93b02c02e 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -12,19 +12,19 @@ require ( github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.34.0 github.com/valkey-io/valkey-go v1.0.45 - go.opentelemetry.io/collector/component v0.116.0 - go.opentelemetry.io/collector/component/componenttest v0.116.0 - go.opentelemetry.io/collector/config/confignet v1.21.0 - go.opentelemetry.io/collector/config/configopaque v1.14.1 - go.opentelemetry.io/collector/config/configtls v1.14.1 - go.opentelemetry.io/collector/confmap v1.21.0 - go.opentelemetry.io/collector/consumer v1.22.0 - go.opentelemetry.io/collector/consumer/consumertest v0.116.0 - go.opentelemetry.io/collector/filter v0.115.0 - go.opentelemetry.io/collector/pdata v1.22.0 - go.opentelemetry.io/collector/receiver v0.116.0 - go.opentelemetry.io/collector/receiver/receivertest v0.116.0 - go.opentelemetry.io/collector/scraper v0.116.0 + go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) @@ -44,7 +44,7 @@ require ( github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect @@ -98,11 +98,11 @@ require ( go.opentelemetry.io/proto/otlp v1.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/grpc v1.68.1 // indirect - google.golang.org/protobuf v1.35.2 // indirect + google.golang.org/grpc v1.69.0 // indirect + google.golang.org/protobuf v1.36.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index 83423a6dce98..74bfbf1e05c0 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -31,8 +31,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -148,46 +148,46 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/component v0.116.0 h1:SQE1YeVfYCN7bw1n4hknUwJE5U/1qJL552sDhAdSlaA= -go.opentelemetry.io/collector/component v0.116.0/go.mod h1:MYgXFZWDTq0uPgF1mkLSFibtpNqksRVAOrmihckOQEs= -go.opentelemetry.io/collector/component/componenttest v0.116.0 h1:UIcnx4Rrs/oDRYSAZNHRMUiYs2FBlwgV5Nc0oMYfR6A= -go.opentelemetry.io/collector/component/componenttest v0.116.0/go.mod h1:W40HaKPHdBFMVI7zzHE7dhdWC+CgAnAC9SmWetFBATY= -go.opentelemetry.io/collector/config/confignet v1.21.0 h1:PeQ5YrMnfftysFL/WVaSrjPOWjD6DfeABY50pf9CZxU= -go.opentelemetry.io/collector/config/confignet v1.21.0/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= -go.opentelemetry.io/collector/config/configopaque v1.14.1 h1:5xAEa4ld+57xWKdU2gR5/6+rBa7LTCPfShJQFUxN0Zw= -go.opentelemetry.io/collector/config/configopaque v1.14.1/go.mod h1:6zlLIyOoRpJJ+0bEKrlZOZon3rOp5Jrz9fMdR4twOS4= +go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67 h1:yQp5VcaPVHSGbwbDUspEThk7w6k6GzyYH2E8mGxdOQk= +go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:HRkdqOVYd5eUNJISfwLt1a+EXP3rCdceDjqOJAifQnQ= +go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67 h1:jvaFLY4LxAOiiSM2nqd+r4S6CoJwj5F+9zqa+qFjDn4= +go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:CkLEiU14Gru21AKrpFhGCg3CqmrfzSTLFuIKfSfd/xc= +go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 h1:yTeR2OSVcmZ+mTUtwVIVjWUsLtr4ZpQyzNwjCwLqxN8= +go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= +go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 h1:3MHaSS/9aLxgo8p2xuq3dZshIAHT92BWoH04f5xiaLA= +go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:sW0t0iI/VfRL9VYX7Ik6XzVgPcR+Y5kejTLsYcMyDWs= go.opentelemetry.io/collector/config/configtelemetry v0.116.0 h1:Vl49VCHQwBOeMswDpFwcl2HD8e9y94xlrfII3SR2VeQ= go.opentelemetry.io/collector/config/configtelemetry v0.116.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= -go.opentelemetry.io/collector/config/configtls v1.14.1 h1:cd5kNvLnIe+GVHUV6Fk6O5fkwS4at8dVCrFo7t0O8kE= -go.opentelemetry.io/collector/config/configtls v1.14.1/go.mod h1:StxglrVWeRIFaqc2hpsF9xSsv2A5MOAx5GhG4WjFuP4= -go.opentelemetry.io/collector/confmap v1.21.0 h1:1tIcx2/Suwg8VhuPmQw87ba0ludPmumpFCFRZZa6RXA= -go.opentelemetry.io/collector/confmap v1.21.0/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= -go.opentelemetry.io/collector/consumer v1.22.0 h1:QmfnNizyNZFt0uK3GG/EoT5h6PvZJ0dgVTc5hFEc1l0= -go.opentelemetry.io/collector/consumer v1.22.0/go.mod h1:tiz2khNceFAPokxxfzAuFfIpShBasMT2AL2Sbc7+m0I= +go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 h1:PWYn7OGB1oE1x5t/cfEq9DplzAehjL/UjPJrgon3dEo= +go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:CYFyMvbf10EoWhoFG8EYyxzFy4jcIPGIRMc8/HWLNQM= +go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 h1:aH9/KGWNM5vN0sSYJZWSPl1BQAMtoqiy2V+ZMWt8MuE= +go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= +go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67 h1:wTvxJ1LkX4ErBlYNUkeu/RdV2CpS+f9AINtvPcezbMo= +go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:SXd1PETGjpCvR336mld7i+Nmq7srFENALfjeDKExgUE= go.opentelemetry.io/collector/consumer/consumererror v0.116.0 h1:GRPnuvwxUeHKVTRzy35di8OFlxypY4YWrK+1nWMsExM= go.opentelemetry.io/collector/consumer/consumererror v0.116.0/go.mod h1:OvQvQ2V7sHT4Vz+1/4mwdEajWZNoFUsY1NhOM8rGvXo= -go.opentelemetry.io/collector/consumer/consumertest v0.116.0 h1:pIVR7FtQMNAzfxBUSMEIC2dX5Lfo3O9ZBfx+sAwrrrM= -go.opentelemetry.io/collector/consumer/consumertest v0.116.0/go.mod h1:cV3cNDiPnls5JdhnOJJFVlclrClg9kPs04cXgYP9Gmk= +go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67 h1:35Wb/srRsTFaN1S1F53LQAQbXJHpl3O6WxmVRDUqXas= +go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:zznGaqot2BQUObyTnjILTBserFaV0OBBh6O3atyBhv0= go.opentelemetry.io/collector/consumer/xconsumer v0.116.0 h1:ZrWvq7HumB0jRYmS2ztZ3hhXRNpUVBWPKMbPhsVGmZM= go.opentelemetry.io/collector/consumer/xconsumer v0.116.0/go.mod h1:C+VFMk8vLzPun6XK8aMts6h4RaDjmzXHCPaiOxzRQzQ= -go.opentelemetry.io/collector/filter v0.115.0 h1:pYnHUFDSHSjEIFZit+CU09itVkDXgV+WcV2HOkjvQcE= -go.opentelemetry.io/collector/filter v0.115.0/go.mod h1:aewQ+jmvpH88gPVWpNXiWSm+wwJVxTK4f23ex2NMd2c= -go.opentelemetry.io/collector/pdata v1.22.0 h1:3yhjL46NLdTMoP8rkkcE9B0pzjf2973crn0KKhX5UrI= -go.opentelemetry.io/collector/pdata v1.22.0/go.mod h1:nLLf6uDg8Kn5g3WNZwGyu8+kf77SwOqQvMTb5AXEbEY= +go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 h1:7qNlquetAVJCuCXEUv+GF9e7tSX+aFmxURP2Po7NWWI= +go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:GoLxnSI6uE6QzmGOaiz0mkgirbQpj2A2Nb18bTKv5gI= +go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67 h1:qJ2VnulbhUdJhcHAqsQsbdxyPyskTGghL18m2EYo1Ws= +go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:u3EKrLq8yiwlpVNKpucpcDUqdl6RquaOqo3jXiN7jtg= go.opentelemetry.io/collector/pdata/pprofile v0.116.0 h1:iE6lqkO7Hi6lTIIml1RI7yQ55CKqW12R2qHinwF5Zuk= go.opentelemetry.io/collector/pdata/pprofile v0.116.0/go.mod h1:xQiPpjzIiXRFb+1fPxUy/3ygEZgo0Bu/xmLKOWu8vMQ= go.opentelemetry.io/collector/pdata/testdata v0.116.0 h1:zmn1zpeX2BvzL6vt2dBF4OuAyFF2ml/OXcqflNgFiP0= go.opentelemetry.io/collector/pdata/testdata v0.116.0/go.mod h1:ytWzICFN4XTDP6o65B4+Ed52JGdqgk9B8CpLHCeCpMo= go.opentelemetry.io/collector/pipeline v0.116.0 h1:o8eKEuWEszmRpfShy7ElBoQ3Jo6kCi9ucm3yRgdNb9s= go.opentelemetry.io/collector/pipeline v0.116.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= -go.opentelemetry.io/collector/receiver v0.116.0 h1:voiBluWLwe4lbyLVwxloK6CudqqszWF+bgYKHuxnETU= -go.opentelemetry.io/collector/receiver v0.116.0/go.mod h1:zb6m8l+knUuN62ASCDqQPIm9punK8PEX1mFrF/yzMI8= -go.opentelemetry.io/collector/receiver/receivertest v0.116.0 h1:ZF4QVcots0OUiutblkyPR02pc+g7v1QaJSFW8tOzHoQ= -go.opentelemetry.io/collector/receiver/receivertest v0.116.0/go.mod h1:7GGvtHhW3o6457/wGtSWXJtCtlW6VGFUZSlf6wboNTw= +go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67 h1:vI94xzkxabk9PHq5BGlM2YgciZ6ncJVdB2/d7JNV2ws= +go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:Yed4BYEfcF9lqKbozFfuutvGtwIzmj1xDZ/M9su78pw= +go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67 h1:TDyCd9SA/RZDQeaZXxbQN/g+1hjXXqUyK9H6Ge2iX2Y= +go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:B2EVj9VPLn484MngVq/53+XRv2fFBa/kXL3K2aum5pc= go.opentelemetry.io/collector/receiver/xreceiver v0.116.0 h1:Kc+ixqgMjU2sHhzNrFn5TttVNiJlJwTLL3sQrM9uH6s= go.opentelemetry.io/collector/receiver/xreceiver v0.116.0/go.mod h1:H2YGSNFoMbWMIDvB8tzkReHSVqvogihjtet+ppHfYv8= -go.opentelemetry.io/collector/scraper v0.116.0 h1:Gdg3v/QUZobHcAAewOlwlaE4XlkRQl3FFut906XuCiw= -go.opentelemetry.io/collector/scraper v0.116.0/go.mod h1:G4SmTIPG8RbxVhTF3zj4EFJx+1tceZbZxhS6mtXOeg0= +go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67 h1:ZO6cGA0v76qsfy2jcQhZoYnLBxOt18OHliZEQNbCCpI= +go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:dzcUpTlfqLFepOpCzuQEJW5Omvg+bVxi5jwSLO2nNs4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= @@ -225,8 +225,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -261,10 +261,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1: google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= -google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/grpc v1.69.0 h1:quSiOM1GJPmPH5XtU+BCoVXcDVJJAzNcoyfC2cCjGkI= +google.golang.org/grpc v1.69.0/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ= +google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= From d7ceb6dcdc8b118c5993c3db0c154099068c580e Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 09:54:49 +0100 Subject: [PATCH 08/23] Revert "chore: remove raw data file" This reverts commit 9898ae959ecdc14c876e7874a9b2114a0c722e6c. --- .../testdata/all-metrics/raw_info.txt | 230 ++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt diff --git a/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt b/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt new file mode 100644 index 000000000000..d2cd23c2ac39 --- /dev/null +++ b/receiver/valkeyreceiver/testdata/all-metrics/raw_info.txt @@ -0,0 +1,230 @@ +txt:# Server +redis_version:7.2.4 +server_name:valkey +valkey_version:8.0.1 +redis_git_sha1:00000000 +redis_git_dirty:0 +redis_build_id:b5fcc5ff6824bfbe +server_mode:standalone +os:Linux 6.12.4-arch1-1 x86_64 +arch_bits:64 +monotonic_clock:POSIX clock_gettime +multiplexing_api:epoll +gcc_version:12.2.0 +process_id:1 +process_supervised:no +run_id:4696ce3c4381c93858d03274ffff54a68db12f09 +tcp_port:6379 +server_time_usec:1735063850046939 +uptime_in_seconds:636 +uptime_in_days:0 +hz:10 +configured_hz:10 +lru_clock:7010602 +executable:/data/valkey-server +config_file: +io_threads_active:0 +availability_zone: +listener0:name=tcp,bind=*,bind=-::*,port=6379 + +# Clients +connected_clients:1 +cluster_connections:0 +maxclients:10000 +client_recent_max_input_buffer:0 +client_recent_max_output_buffer:0 +blocked_clients:0 +tracking_clients:1 +pubsub_clients:0 +watching_clients:0 +clients_in_timeout_table:0 +total_watched_keys:0 +total_blocking_keys:0 +total_blocking_keys_on_nokey:0 + +# Memory +used_memory:1101288 +used_memory_human:1.05M +used_memory_rss:16199680 +used_memory_rss_human:15.45M +used_memory_peak:1101288 +used_memory_peak_human:1.05M +used_memory_peak_perc:100.00% +used_memory_overhead:912128 +used_memory_startup:911944 +used_memory_dataset:189160 +used_memory_dataset_perc:99.90% +allocator_allocated:1780640 +allocator_active:1908736 +allocator_resident:7331840 +allocator_muzzy:0 +total_system_memory:33297350656 +total_system_memory_human:31.01G +used_memory_lua:31744 +used_memory_vm_eval:31744 +used_memory_lua_human:31.00K +used_memory_scripts_eval:0 +number_of_cached_scripts:0 +number_of_functions:0 +number_of_libraries:0 +used_memory_vm_functions:33792 +used_memory_vm_total:65536 +used_memory_vm_total_human:64.00K +used_memory_functions:184 +used_memory_scripts:184 +used_memory_scripts_human:184B +maxmemory:0 +maxmemory_human:0B +maxmemory_policy:noeviction +allocator_frag_ratio:1.07 +allocator_frag_bytes:128096 +allocator_rss_ratio:3.84 +allocator_rss_bytes:5423104 +rss_overhead_ratio:2.21 +rss_overhead_bytes:8867840 +mem_fragmentation_ratio:15.27 +mem_fragmentation_bytes:15138720 +mem_not_counted_for_evict:0 +mem_replication_backlog:0 +mem_total_replication_buffers:0 +mem_clients_slaves:0 +mem_clients_normal:0 +mem_cluster_links:0 +mem_aof_buffer:0 +mem_allocator:jemalloc-5.3.0 +mem_overhead_db_hashtable_rehashing:0 +active_defrag_running:0 +lazyfree_pending_objects:0 +lazyfreed_objects:0 + +# Persistence +loading:0 +async_loading:0 +current_cow_peak:0 +current_cow_size:0 +current_cow_size_age:0 +current_fork_perc:0.00 +current_save_keys_processed:0 +current_save_keys_total:0 +rdb_changes_since_last_save:0 +rdb_bgsave_in_progress:0 +rdb_last_save_time:1735063214 +rdb_last_bgsave_status:ok +rdb_last_bgsave_time_sec:-1 +rdb_current_bgsave_time_sec:-1 +rdb_saves:0 +rdb_last_cow_size:0 +rdb_last_load_keys_expired:0 +rdb_last_load_keys_loaded:0 +aof_enabled:0 +aof_rewrite_in_progress:0 +aof_rewrite_scheduled:0 +aof_last_rewrite_time_sec:-1 +aof_current_rewrite_time_sec:-1 +aof_last_bgrewrite_status:ok +aof_rewrites:0 +aof_rewrites_consecutive_failures:0 +aof_last_write_status:ok +aof_last_cow_size:0 +module_fork_in_progress:0 +module_fork_last_cow_size:0 + +# Stats +total_connections_received:5 +total_commands_processed:32 +instantaneous_ops_per_sec:0 +total_net_input_bytes:1157 +total_net_output_bytes:23927 +total_net_repl_input_bytes:0 +total_net_repl_output_bytes:0 +instantaneous_input_kbps:0.00 +instantaneous_output_kbps:0.00 +instantaneous_input_repl_kbps:0.00 +instantaneous_output_repl_kbps:0.00 +rejected_connections:0 +sync_full:0 +sync_partial_ok:0 +sync_partial_err:0 +expired_keys:0 +expired_stale_perc:0.00 +expired_time_cap_reached_count:0 +expire_cycle_cpu_milliseconds:6 +evicted_keys:0 +evicted_clients:0 +evicted_scripts:0 +total_eviction_exceeded_time:0 +current_eviction_exceeded_time:0 +keyspace_hits:0 +keyspace_misses:0 +pubsub_channels:0 +pubsub_patterns:0 +pubsubshard_channels:0 +latest_fork_usec:0 +total_forks:0 +migrate_cached_sockets:0 +slave_expires_tracked_keys:0 +active_defrag_hits:0 +active_defrag_misses:0 +active_defrag_key_hits:0 +active_defrag_key_misses:0 +total_active_defrag_time:0 +current_active_defrag_time:0 +tracking_total_keys:0 +tracking_total_items:0 +tracking_total_prefixes:0 +unexpected_error_replies:0 +total_error_replies:5 +dump_payload_sanitizations:0 +total_reads_processed:22 +total_writes_processed:17 +io_threaded_reads_processed:0 +io_threaded_writes_processed:0 +io_threaded_freed_objects:0 +io_threaded_poll_processed:0 +io_threaded_total_prefetch_batches:0 +io_threaded_total_prefetch_entries:0 +client_query_buffer_limit_disconnections:0 +client_output_buffer_limit_disconnections:0 +reply_buffer_shrinks:1 +reply_buffer_expands:0 +eventloop_cycles:6366 +eventloop_duration_sum:785038 +eventloop_duration_cmd_sum:192 +instantaneous_eventloop_cycles_per_sec:9 +instantaneous_eventloop_duration_usec:111 +acl_access_denied_auth:0 +acl_access_denied_cmd:0 +acl_access_denied_key:0 +acl_access_denied_channel:0 + +# Replication +role:master +connected_slaves:0 +replicas_waiting_psync:0 +master_failover_state:no-failover +master_replid:98fe17ad8267e5c4afdb732cbd69ac962f45a2b3 +master_replid2:0000000000000000000000000000000000000000 +master_repl_offset:0 +second_repl_offset:-1 +repl_backlog_active:0 +repl_backlog_size:10485760 +repl_backlog_first_byte_offset:0 +repl_backlog_histlen:0 + +# CPU +used_cpu_sys:0.317747 +used_cpu_user:0.516715 +used_cpu_sys_children:0.000000 +used_cpu_user_children:0.002436 +used_cpu_sys_main_thread:0.319071 +used_cpu_user_main_thread:0.514337 + +# Modules + +# Errorstats +errorstat_ERR:count=5 + +# Cluster +cluster_enabled:0 + +# Keyspace From 66856f7f20fe2cb5686ee099c94f5bd0e275f288 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 11:13:17 +0100 Subject: [PATCH 09/23] fix: header licenses --- receiver/valkeyreceiver/doc.go | 2 +- receiver/valkeyreceiver/receiver.go | 3 +++ receiver/valkeyreceiver/receiver_test.go | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/receiver/valkeyreceiver/doc.go b/receiver/valkeyreceiver/doc.go index 853b582df0b8..30cf0711f8c1 100644 --- a/receiver/valkeyreceiver/doc.go +++ b/receiver/valkeyreceiver/doc.go @@ -1,6 +1,6 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -//go:generate ../../.tools/mdatagen metadata.yaml +//go:generate mdatagen metadata.yaml package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index f05712f4bda9..9318bb7aa7e3 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -1,3 +1,6 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + package valkeyreceiver import ( diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 67e3b50e4311..127135506ce9 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -1,3 +1,6 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + package valkeyreceiver import ( From 8ec3e789c76e439f7aa5f8330db50bffb2b24b30 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 11:26:41 +0100 Subject: [PATCH 10/23] fix: crosslinks --- receiver/valkeyreceiver/go.mod | 20 ++++++++++++++------ receiver/valkeyreceiver/go.sum | 32 ++++++++++++-------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index 9aa93b02c02e..50baf782e628 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -82,12 +82,12 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.116.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.116.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.116.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.116.0 // indirect - go.opentelemetry.io/collector/pipeline v0.116.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.116.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.116.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/pipeline v0.116.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.116.1-0.20241220212031-7c2639723f67 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect @@ -106,3 +106,11 @@ require ( google.golang.org/protobuf v1.36.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil => ../../pkg/pdatautil + +replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => ../../internal/coreinternal + +replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest + +replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index 74bfbf1e05c0..ca73b4bf66cb 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -99,14 +99,6 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0 h1:xDbf946Zm0rTzWcYEyUfU0Ft2KthhaH4xrNm303vpbI= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0/go.mod h1:yuIyOGmQJOn37u6NVfG8yOCzVvwboqnt+pjOSTvDeLo= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.116.0 h1:YENvOsl67sj8Ovvl5R8hKMnpPvdW3q5B7+CYYgy/GvQ= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.116.0/go.mod h1:D56LJWVbMc1Kdy7qa6HCrHH6ZOr4yr7YuVfp1rJn0es= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.116.0 h1:RlEK9MbxWyBHbLel8EJ1L7DbYVLai9dZL6Ljl2cBgyA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.116.0/go.mod h1:AVUEyIjPb+0ARr7mhIkZkdNg3fd0ZcRhzAi53oZhl1Q= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0 h1:jwnZYRBuPJnsKXE5H6ZvTEm91bXW5VP8+tLewzl54eg= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0/go.mod h1:NT3Ag+DdnIAZQfD7l7OHwlYqnaAJ19SoPZ0nhD9yx4s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -156,36 +148,36 @@ go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c263972 go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 h1:3MHaSS/9aLxgo8p2xuq3dZshIAHT92BWoH04f5xiaLA= go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:sW0t0iI/VfRL9VYX7Ik6XzVgPcR+Y5kejTLsYcMyDWs= -go.opentelemetry.io/collector/config/configtelemetry v0.116.0 h1:Vl49VCHQwBOeMswDpFwcl2HD8e9y94xlrfII3SR2VeQ= -go.opentelemetry.io/collector/config/configtelemetry v0.116.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= +go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67 h1:LSVqRWyoDbaNgvzmNkuT2rUd3HOpCAi7Cs0HUpRvU10= +go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 h1:PWYn7OGB1oE1x5t/cfEq9DplzAehjL/UjPJrgon3dEo= go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:CYFyMvbf10EoWhoFG8EYyxzFy4jcIPGIRMc8/HWLNQM= go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 h1:aH9/KGWNM5vN0sSYJZWSPl1BQAMtoqiy2V+ZMWt8MuE= go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67 h1:wTvxJ1LkX4ErBlYNUkeu/RdV2CpS+f9AINtvPcezbMo= go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:SXd1PETGjpCvR336mld7i+Nmq7srFENALfjeDKExgUE= -go.opentelemetry.io/collector/consumer/consumererror v0.116.0 h1:GRPnuvwxUeHKVTRzy35di8OFlxypY4YWrK+1nWMsExM= -go.opentelemetry.io/collector/consumer/consumererror v0.116.0/go.mod h1:OvQvQ2V7sHT4Vz+1/4mwdEajWZNoFUsY1NhOM8rGvXo= +go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67 h1:+wgtyKttv71S2iGATEHvcdClpsP8anNaB50D8CtrhbY= +go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:wOAV90zpjQg7B8WWb3T+PAfn4erRI1UnYhEQaCMTOaA= go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67 h1:35Wb/srRsTFaN1S1F53LQAQbXJHpl3O6WxmVRDUqXas= go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:zznGaqot2BQUObyTnjILTBserFaV0OBBh6O3atyBhv0= -go.opentelemetry.io/collector/consumer/xconsumer v0.116.0 h1:ZrWvq7HumB0jRYmS2ztZ3hhXRNpUVBWPKMbPhsVGmZM= -go.opentelemetry.io/collector/consumer/xconsumer v0.116.0/go.mod h1:C+VFMk8vLzPun6XK8aMts6h4RaDjmzXHCPaiOxzRQzQ= +go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67 h1:UdNGjbmh33rj7Sim1Snl5KtfYCuQUz54rbF8jzVnyo4= +go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:8RKit/X7qLXEIsaeUFucuj9NgeBtIum8aSq19Ij4iI0= go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 h1:7qNlquetAVJCuCXEUv+GF9e7tSX+aFmxURP2Po7NWWI= go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:GoLxnSI6uE6QzmGOaiz0mkgirbQpj2A2Nb18bTKv5gI= go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67 h1:qJ2VnulbhUdJhcHAqsQsbdxyPyskTGghL18m2EYo1Ws= go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:u3EKrLq8yiwlpVNKpucpcDUqdl6RquaOqo3jXiN7jtg= -go.opentelemetry.io/collector/pdata/pprofile v0.116.0 h1:iE6lqkO7Hi6lTIIml1RI7yQ55CKqW12R2qHinwF5Zuk= -go.opentelemetry.io/collector/pdata/pprofile v0.116.0/go.mod h1:xQiPpjzIiXRFb+1fPxUy/3ygEZgo0Bu/xmLKOWu8vMQ= +go.opentelemetry.io/collector/pdata/pprofile v0.116.1-0.20241220212031-7c2639723f67 h1:BE8oNrfh2cvembF8+QDHayf94zKD1jc8v1n57n2nUjU= +go.opentelemetry.io/collector/pdata/pprofile v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:7/n2x/hdz00grs4NtJWRsPwzbqdkQSj0UfyJF5u41bs= go.opentelemetry.io/collector/pdata/testdata v0.116.0 h1:zmn1zpeX2BvzL6vt2dBF4OuAyFF2ml/OXcqflNgFiP0= go.opentelemetry.io/collector/pdata/testdata v0.116.0/go.mod h1:ytWzICFN4XTDP6o65B4+Ed52JGdqgk9B8CpLHCeCpMo= -go.opentelemetry.io/collector/pipeline v0.116.0 h1:o8eKEuWEszmRpfShy7ElBoQ3Jo6kCi9ucm3yRgdNb9s= -go.opentelemetry.io/collector/pipeline v0.116.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= +go.opentelemetry.io/collector/pipeline v0.116.1-0.20241220212031-7c2639723f67 h1:FVxoHfNfgHZ8gxdqvSOopWq7xrsHXOu6PYdPeyJtY10= +go.opentelemetry.io/collector/pipeline v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67 h1:vI94xzkxabk9PHq5BGlM2YgciZ6ncJVdB2/d7JNV2ws= go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:Yed4BYEfcF9lqKbozFfuutvGtwIzmj1xDZ/M9su78pw= go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67 h1:TDyCd9SA/RZDQeaZXxbQN/g+1hjXXqUyK9H6Ge2iX2Y= go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:B2EVj9VPLn484MngVq/53+XRv2fFBa/kXL3K2aum5pc= -go.opentelemetry.io/collector/receiver/xreceiver v0.116.0 h1:Kc+ixqgMjU2sHhzNrFn5TttVNiJlJwTLL3sQrM9uH6s= -go.opentelemetry.io/collector/receiver/xreceiver v0.116.0/go.mod h1:H2YGSNFoMbWMIDvB8tzkReHSVqvogihjtet+ppHfYv8= +go.opentelemetry.io/collector/receiver/xreceiver v0.116.1-0.20241220212031-7c2639723f67 h1:bSP9NT4CF6Jw0PHtL3tsVt2/HoS00hHRhVIyxG6t2kY= +go.opentelemetry.io/collector/receiver/xreceiver v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:TzpQxAe+ZDfYjkww0L0lVoJ17pnieUOR4KHRk0shXYM= go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67 h1:ZO6cGA0v76qsfy2jcQhZoYnLBxOt18OHliZEQNbCCpI= go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:dzcUpTlfqLFepOpCzuQEJW5Omvg+bVxi5jwSLO2nNs4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= From 4e81208fc1f5ca3a697858f67d378cd3a85bc22d Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 11:48:36 +0100 Subject: [PATCH 11/23] fix: scrape tests resource attributes --- receiver/valkeyreceiver/client.go | 2 +- receiver/valkeyreceiver/go.mod | 2 -- receiver/valkeyreceiver/receiver.go | 2 +- receiver/valkeyreceiver/receiver_test.go | 10 +++++++++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/receiver/valkeyreceiver/client.go b/receiver/valkeyreceiver/client.go index a36bdd136ed1..3132c7adabd3 100644 --- a/receiver/valkeyreceiver/client.go +++ b/receiver/valkeyreceiver/client.go @@ -1,6 +1,6 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -package valkeyreceiver +package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" import ( "context" diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index 50baf782e628..c09d1b74d3c1 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -2,8 +2,6 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkey go 1.22.7 -toolchain go1.23.4 - require ( github.com/google/go-cmp v0.6.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0 diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index 9318bb7aa7e3..a1ede3295bd5 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -1,7 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -package valkeyreceiver +package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" import ( "context" diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 127135506ce9..b4ffcf398821 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -37,6 +37,8 @@ func TestScrape(t *testing.T) { settings := receivertest.NewNopSettings() cfg := createDefaultConfig().(*Config) cfg.Endpoint = "localhost:6379" + cfg.MetricsBuilderConfig.ResourceAttributes.ServerPort.Enabled = true + cfg.MetricsBuilderConfig.ResourceAttributes.ServerAddress.Enabled = true scraper, err := newValkeyScraper(cfg, settings) defer scraper.shutdown(context.Background()) @@ -49,5 +51,11 @@ func TestScrape(t *testing.T) { expectedMetrics, err := golden.ReadMetrics(filepath.Join(goldenDir, "output-metrics.yaml")) require.NoError(t, err) - require.NoError(t, pmetrictest.CompareMetrics(expectedMetrics, metrics, pmetrictest.IgnoreMetricDataPointsOrder(), pmetrictest.IgnoreTimestamp(), pmetrictest.IgnoreStartTimestamp())) + require.NoError(t, pmetrictest.CompareMetrics(expectedMetrics, metrics, pmetrictest.IgnoreMetricDataPointsOrder(), pmetrictest.IgnoreTimestamp(), pmetrictest.IgnoreStartTimestamp(), pmetrictest.ChangeResourceAttributeValue("server.address", func(_ string) string { + return "localhost" + }), + pmetrictest.ChangeResourceAttributeValue("server.port", func(_ string) string { + return "6379" + }), + )) } From f8c2c527b65fd2a9975eded46c0ed9e98a1ef41c Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 13:07:33 +0100 Subject: [PATCH 12/23] chore: update CODEOWNERS file --- .github/CODEOWNERS | 1 + .github/ISSUE_TEMPLATE/bug_report.yaml | 1 + .github/ISSUE_TEMPLATE/feature_request.yaml | 1 + .github/ISSUE_TEMPLATE/other.yaml | 1 + .github/ISSUE_TEMPLATE/unmaintained.yaml | 1 + receiver/valkeyreceiver/README.md | 80 ++++++++++++++++++++- receiver/valkeyreceiver/doc.go | 2 +- receiver/valkeyreceiver/factory.go | 2 +- receiver/valkeyreceiver/metadata.yaml | 2 +- receiver/valkeyreceiver/receiver_test.go | 6 +- 10 files changed, 91 insertions(+), 6 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d82af9183bc3..849b876575a2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -289,6 +289,7 @@ receiver/systemdreceiver/ @open-telemetry/collector-cont receiver/tcplogreceiver/ @open-telemetry/collector-contrib-approvers @djaglowski receiver/tlscheckreceiver/ @open-telemetry/collector-contrib-approvers @atoulme @michael-burt receiver/udplogreceiver/ @open-telemetry/collector-contrib-approvers @djaglowski +receiver/valkeyreceiver/ @open-telemetry/collector-contrib-approvers @dmitryax @rogercoll receiver/vcenterreceiver/ @open-telemetry/collector-contrib-approvers @schmikei @StefanKurek receiver/wavefrontreceiver/ @open-telemetry/collector-contrib-approvers @samiura receiver/webhookeventreceiver/ @open-telemetry/collector-contrib-approvers @atoulme @shalper2 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index ea469c572bcb..c4b2355a7bfe 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -287,6 +287,7 @@ body: - receiver/tcplog - receiver/tlscheck - receiver/udplog + - receiver/valkey - receiver/vcenter - receiver/wavefront - receiver/webhookevent diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 99f72f1c13b1..639636314f0c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -281,6 +281,7 @@ body: - receiver/tcplog - receiver/tlscheck - receiver/udplog + - receiver/valkey - receiver/vcenter - receiver/wavefront - receiver/webhookevent diff --git a/.github/ISSUE_TEMPLATE/other.yaml b/.github/ISSUE_TEMPLATE/other.yaml index c65b1b3fa089..84238042709d 100644 --- a/.github/ISSUE_TEMPLATE/other.yaml +++ b/.github/ISSUE_TEMPLATE/other.yaml @@ -281,6 +281,7 @@ body: - receiver/tcplog - receiver/tlscheck - receiver/udplog + - receiver/valkey - receiver/vcenter - receiver/wavefront - receiver/webhookevent diff --git a/.github/ISSUE_TEMPLATE/unmaintained.yaml b/.github/ISSUE_TEMPLATE/unmaintained.yaml index a6402ed0e246..81630f39d164 100644 --- a/.github/ISSUE_TEMPLATE/unmaintained.yaml +++ b/.github/ISSUE_TEMPLATE/unmaintained.yaml @@ -286,6 +286,7 @@ body: - receiver/tcplog - receiver/tlscheck - receiver/udplog + - receiver/valkey - receiver/vcenter - receiver/wavefront - receiver/webhookevent diff --git a/receiver/valkeyreceiver/README.md b/receiver/valkeyreceiver/README.md index 09b0d3f28605..e64f72039a5f 100644 --- a/receiver/valkeyreceiver/README.md +++ b/receiver/valkeyreceiver/README.md @@ -1 +1,79 @@ -https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-metrics.md#metric-dbclientconnectioncount +# Valkey Receiver + + +| Status | | +| ------------- |-----------| +| Stability | [development]: metrics | +| Distributions | [contrib] | +| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Areceiver%2Fvalkey%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Areceiver%2Fvalkey) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Areceiver%2Fvalkey%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Areceiver%2Fvalkey) | +| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@dmitryax](https://www.github.com/dmitryax), [@rogercoll](https://www.github.com/rogercoll) | + +[development]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#development +[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib + + +The Valkey receiver is designed to retrieve Valkey INFO data from a single +Valkey instance, build metrics from that data, and send them to the next consumer at a +configurable interval. + +## Details + +The Valkey INFO command returns information and statistics about a Valkey +server (see [https://valkey.io/commands/info/](https://valkey.io/commands/info/) for +details). The Valkey receiver extracts values from the result and converts them to open +telemetry metrics. Details about the metrics produced by the Valkey receiver +can be found by browsing [the metadata file](./metadata.yaml). + +## Configuration + +> :information_source: This receiver is in beta and configuration fields are subject to change. + +The following settings are required: + +- `endpoint` (no default): The hostname and port of the Valkey instance, +separated by a colon. + +The following settings are optional: + +- `collection_interval` (default = `10s`): This receiver runs on an interval. +Each time it runs, it queries Valkey, creates metrics, and sends them to the +next consumer. The `collection_interval` configuration option tells this +receiver the duration between runs. This value must be a string readable by +Golang's `ParseDuration` function (example: `1h30m`). Valid time units are +`ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. +- `username` (no default): Client username used to connect to a Valkey >=6.0 instance that is using the Valkey ACL system. +- `password` (no default): The password used to access the Valkey instance; +must match the password specified in the `requirepass` server configuration option in Valkey <6.0. +For Valkey >=6.0, the user's password when connecting using the Valkey ACL system. +- `transport` (default = `tcp`) Defines the network to use for connecting to the server. Valid Values are `tcp` or `Unix` +- `tls`: + - `insecure` (default = true): whether to disable client transport security for the exporter's connection. + - `ca_file`: path to the CA cert. For a client this verifies the server certificate. Should only be used if `insecure` is set to false. + - `cert_file`: path to the TLS cert to use for TLS required connections. Should only be used if `insecure` is set to false. + - `key_file`: path to the TLS key to use for TLS required connections. Should only be used if `insecure` is set to false. + +Example: + +```yaml +receivers: + redis: + endpoint: "localhost:6379" + collection_interval: 10s + password: ${env:VALKEY_PASSWORD} +``` + +> :information_source: As with all Open Telemetry configuration values, a +reference to an environment variable is supported. For example, to pick up +the value of an environment variable `VALKEY_PASSWORD`, you could use a +configuration like the following: + +```yaml +receivers: + redis: + endpoint: "localhost:6379" + collection_interval: 10s + password: ${env:VALKEY_PASSWORD} +``` + +The full list of settings exposed for this receiver are documented [here](./config.go) +with detailed sample configurations [here](./testdata/config.yaml). diff --git a/receiver/valkeyreceiver/doc.go b/receiver/valkeyreceiver/doc.go index 30cf0711f8c1..853b582df0b8 100644 --- a/receiver/valkeyreceiver/doc.go +++ b/receiver/valkeyreceiver/doc.go @@ -1,6 +1,6 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -//go:generate mdatagen metadata.yaml +//go:generate ../../.tools/mdatagen metadata.yaml package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver" diff --git a/receiver/valkeyreceiver/factory.go b/receiver/valkeyreceiver/factory.go index 671a8369cf17..0e5aa7f3dbe3 100644 --- a/receiver/valkeyreceiver/factory.go +++ b/receiver/valkeyreceiver/factory.go @@ -58,7 +58,7 @@ func createMetricsReceiver( scraper.ScrapeMetricsFunc(scrp.scrape), scraper.WithShutdown(scrp.shutdown), ) - if err != err { + if err != nil { return nil, err } diff --git a/receiver/valkeyreceiver/metadata.yaml b/receiver/valkeyreceiver/metadata.yaml index 466bd99999e5..a3afccf1c46f 100644 --- a/receiver/valkeyreceiver/metadata.yaml +++ b/receiver/valkeyreceiver/metadata.yaml @@ -6,7 +6,7 @@ status: development: [metrics] distributions: [contrib] codeowners: - active: [] + active: [dmitryax, rogercoll] resource_attributes: valkey.version: diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index b4ffcf398821..7f5356f5c987 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -33,14 +33,13 @@ var _ client = (*mockClient)(nil) func TestScrape(t *testing.T) { // TODO: change to test table for testing multiple clients output - goldenDir := filepath.Join("testdata/all-metrics") + goldenDir := filepath.Join("testdata", "all-metrics") settings := receivertest.NewNopSettings() cfg := createDefaultConfig().(*Config) cfg.Endpoint = "localhost:6379" cfg.MetricsBuilderConfig.ResourceAttributes.ServerPort.Enabled = true cfg.MetricsBuilderConfig.ResourceAttributes.ServerAddress.Enabled = true scraper, err := newValkeyScraper(cfg, settings) - defer scraper.shutdown(context.Background()) require.NoError(t, err) scraper.client = mockClient{} @@ -58,4 +57,7 @@ func TestScrape(t *testing.T) { return "6379" }), )) + + err = scraper.shutdown(context.Background()) + require.NoError(t, err) } From a64d888753fd4b309f0ee4c417702a1d24aa7504 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 13:17:31 +0100 Subject: [PATCH 13/23] fix: reference links --- receiver/valkeyreceiver/README.md | 3 +-- reports/distributions/contrib.yaml | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/receiver/valkeyreceiver/README.md b/receiver/valkeyreceiver/README.md index e64f72039a5f..0e4230b53207 100644 --- a/receiver/valkeyreceiver/README.md +++ b/receiver/valkeyreceiver/README.md @@ -75,5 +75,4 @@ receivers: password: ${env:VALKEY_PASSWORD} ``` -The full list of settings exposed for this receiver are documented [here](./config.go) -with detailed sample configurations [here](./testdata/config.yaml). +The full list of settings exposed for this receiver are documented [here](./config.go). diff --git a/reports/distributions/contrib.yaml b/reports/distributions/contrib.yaml index a4f0c3b4b075..0389f49f3b86 100644 --- a/reports/distributions/contrib.yaml +++ b/reports/distributions/contrib.yaml @@ -193,6 +193,7 @@ components: - tcplog - tlscheck - udplog + - valkey - vcenter - wavefront - webhookevent From c48db20d30113a995b678b980b6a912a47e9a5fc Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 14:14:32 +0100 Subject: [PATCH 14/23] chore: remove user/password configurations --- receiver/valkeyreceiver/README.md | 21 +-------------------- receiver/valkeyreceiver/config.go | 13 +------------ receiver/valkeyreceiver/receiver.go | 2 -- 3 files changed, 2 insertions(+), 34 deletions(-) diff --git a/receiver/valkeyreceiver/README.md b/receiver/valkeyreceiver/README.md index 0e4230b53207..9e2794ba238e 100644 --- a/receiver/valkeyreceiver/README.md +++ b/receiver/valkeyreceiver/README.md @@ -41,11 +41,6 @@ next consumer. The `collection_interval` configuration option tells this receiver the duration between runs. This value must be a string readable by Golang's `ParseDuration` function (example: `1h30m`). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. -- `username` (no default): Client username used to connect to a Valkey >=6.0 instance that is using the Valkey ACL system. -- `password` (no default): The password used to access the Valkey instance; -must match the password specified in the `requirepass` server configuration option in Valkey <6.0. -For Valkey >=6.0, the user's password when connecting using the Valkey ACL system. -- `transport` (default = `tcp`) Defines the network to use for connecting to the server. Valid Values are `tcp` or `Unix` - `tls`: - `insecure` (default = true): whether to disable client transport security for the exporter's connection. - `ca_file`: path to the CA cert. For a client this verifies the server certificate. Should only be used if `insecure` is set to false. @@ -56,23 +51,9 @@ Example: ```yaml receivers: - redis: + valkey: endpoint: "localhost:6379" collection_interval: 10s - password: ${env:VALKEY_PASSWORD} -``` - -> :information_source: As with all Open Telemetry configuration values, a -reference to an environment variable is supported. For example, to pick up -the value of an environment variable `VALKEY_PASSWORD`, you could use a -configuration like the following: - -```yaml -receivers: - redis: - endpoint: "localhost:6379" - collection_interval: 10s - password: ${env:VALKEY_PASSWORD} ``` The full list of settings exposed for this receiver are documented [here](./config.go). diff --git a/receiver/valkeyreceiver/config.go b/receiver/valkeyreceiver/config.go index ca987d45f43e..9dd74567495f 100644 --- a/receiver/valkeyreceiver/config.go +++ b/receiver/valkeyreceiver/config.go @@ -8,7 +8,6 @@ import ( "net" "go.opentelemetry.io/collector/config/confignet" - "go.opentelemetry.io/collector/config/configopaque" "go.opentelemetry.io/collector/config/configtls" "go.opentelemetry.io/collector/receiver/scraperhelper" @@ -17,20 +16,10 @@ import ( type Config struct { scraperhelper.ControllerConfig `mapstructure:",squash"` - // TODO: Use one of the configs from core. + // The target endpoint. confignet.AddrConfig `mapstructure:",squash"` - // Optional username. Use the specified Username to authenticate the current connection - // with one of the connections defined in the ACL list when connecting - // to a valkey instance that is using the valkey ACL system. - Username string `mapstructure:"username"` - - // Optional password. Must match the password specified in the - // requirepass server configuration option, or the user's password when connecting - // to a valkey instance that is using the valkey ACL system. - Password configopaque.String `mapstructure:"password"` - TLS configtls.ClientConfig `mapstructure:"tls,omitempty"` MetricsBuilderConfig metadata.MetricsBuilderConfig `mapstructure:",squash"` diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index a1ede3295bd5..c2d5c1131e91 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -50,8 +50,6 @@ func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { if vs.client == nil { opts := valkey.ClientOption{ InitAddress: []string{vs.cfg.Endpoint}, - Username: vs.cfg.Username, - Password: string(vs.cfg.Password), } var err error From 1644903f2d664c186610e9b4aec7c64c0549b12c Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 2 Jan 2025 14:41:12 +0100 Subject: [PATCH 15/23] fix linter --- cmd/otelcontribcol/builder-config.yaml | 2 ++ receiver/valkeyreceiver/generated_package_test.go | 3 ++- receiver/valkeyreceiver/go.mod | 2 +- receiver/valkeyreceiver/receiver.go | 2 +- receiver/valkeyreceiver/receiver_test.go | 6 +++--- versions.yaml | 3 ++- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/otelcontribcol/builder-config.yaml b/cmd/otelcontribcol/builder-config.yaml index 7c8a2e9181c0..56f620a97f40 100644 --- a/cmd/otelcontribcol/builder-config.yaml +++ b/cmd/otelcontribcol/builder-config.yaml @@ -213,6 +213,7 @@ receivers: - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.116.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.116.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.116.0 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver v0.116.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.116.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver v0.116.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/webhookeventreceiver v0.116.0 @@ -343,6 +344,7 @@ replaces: - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza => ../../pkg/stanza - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver => ../../receiver/fluentforwardreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver => ../../receiver/redisreceiver + - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver => ../../receiver/valkeyreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension => ../../extension/basicauthextension - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/influxdbexporter => ../../exporter/influxdbexporter - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alertmanagerexporter => ../../exporter/alertmanagerexporter diff --git a/receiver/valkeyreceiver/generated_package_test.go b/receiver/valkeyreceiver/generated_package_test.go index 427c4c582346..7a4005cd7a77 100644 --- a/receiver/valkeyreceiver/generated_package_test.go +++ b/receiver/valkeyreceiver/generated_package_test.go @@ -3,8 +3,9 @@ package valkeyreceiver import ( - "go.uber.org/goleak" "testing" + + "go.uber.org/goleak" ) func TestMain(m *testing.M) { diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index c09d1b74d3c1..ec6d63ff99f7 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -13,7 +13,6 @@ require ( go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67 @@ -80,6 +79,7 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 // indirect go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67 // indirect go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67 // indirect go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67 // indirect diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index c2d5c1131e91..278d86632a5a 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -8,13 +8,13 @@ import ( "strconv" "time" + "github.com/valkey-io/valkey-go" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" - "github.com/valkey-io/valkey-go" ) type valkeyScraper struct { diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 7f5356f5c987..6fa3b399f857 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -5,15 +5,15 @@ package valkeyreceiver import ( "context" + _ "embed" "path/filepath" "testing" - _ "embed" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/receiver/receivertest" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pmetrictest" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/receiver/receivertest" ) //go:embed testdata/all-metrics/raw_info.txt diff --git a/versions.yaml b/versions.yaml index 8ca31258c189..d62481bd69db 100644 --- a/versions.yaml +++ b/versions.yaml @@ -225,7 +225,7 @@ module-sets: - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudspannerreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/haproxyreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver - - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/huaweicloudcesreceiver + - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/huaweicloudcesreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/influxdbreceiver @@ -285,6 +285,7 @@ module-sets: - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tlscheckreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver + - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/webhookeventreceiver From 3c08b49b3ea45414dfd155c9b5a951c1320087bb Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Fri, 3 Jan 2025 11:09:39 +0100 Subject: [PATCH 16/23] Update receiver/valkeyreceiver/client.go Co-authored-by: Sam DeHaan --- receiver/valkeyreceiver/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/valkeyreceiver/client.go b/receiver/valkeyreceiver/client.go index 3132c7adabd3..8d9ec693dc8f 100644 --- a/receiver/valkeyreceiver/client.go +++ b/receiver/valkeyreceiver/client.go @@ -60,7 +60,7 @@ func parseRawDataMap(data string) map[string]string { return attrs } -// close client to release connention pool. +// close client to release connection pool. func (c *valkeyClient) close() error { c.client.Close() return nil From fc0f24bdd1fcd9a5173c2a447e02570ec051ea66 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Fri, 3 Jan 2025 11:35:58 +0100 Subject: [PATCH 17/23] feat: return error if error on split --- receiver/valkeyreceiver/client.go | 12 ++++++++---- receiver/valkeyreceiver/receiver.go | 9 +++++++-- receiver/valkeyreceiver/receiver_test.go | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/receiver/valkeyreceiver/client.go b/receiver/valkeyreceiver/client.go index 8d9ec693dc8f..520f629cfa89 100644 --- a/receiver/valkeyreceiver/client.go +++ b/receiver/valkeyreceiver/client.go @@ -4,9 +4,11 @@ package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collec import ( "context" + "fmt" "strings" "github.com/valkey-io/valkey-go" + "go.uber.org/zap" ) var attrDelimiter = "\r\n" @@ -27,7 +29,7 @@ type valkeyClient struct { var _ client = (*valkeyClient)(nil) // Creates a new real Valkey client from the passed-in valkey.Options. -func newValkeyClient(options valkey.ClientOption) (client, error) { +func newValkeyClient(options valkey.ClientOption, logger *zap.Logger) (client, error) { innerClient, err := valkey.NewClient(options) if err != nil { return nil, err @@ -42,10 +44,10 @@ func (c *valkeyClient) retrieveInfo(ctx context.Context) (map[string]string, err return nil, err } - return parseRawDataMap(str), nil + return parseRawDataMap(str) } -func parseRawDataMap(data string) map[string]string { +func parseRawDataMap(data string) (map[string]string, error) { attrs := make(map[string]string) lines := strings.Split(data, attrDelimiter) for _, line := range lines { @@ -55,9 +57,11 @@ func parseRawDataMap(data string) map[string]string { pair := strings.Split(line, ":") if len(pair) == 2 { // defensive, should always == 2 attrs[pair[0]] = pair[1] + } else { + fmt.Errorf("could not split line %q using \":\" as delimiter", line) } } - return attrs + return attrs, nil } // close client to release connection pool. diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index 278d86632a5a..04059208bd09 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -5,6 +5,7 @@ package valkeyreceiver // import "github.com/open-telemetry/opentelemetry-collec import ( "context" + "fmt" "strconv" "time" @@ -13,6 +14,7 @@ import ( "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver" + "go.uber.org/zap" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" ) @@ -23,6 +25,7 @@ type valkeyScraper struct { cfg *Config mb *metadata.MetricsBuilder configInfo configInfo + logger *zap.Logger } func newValkeyScraper(cfg *Config, settings receiver.Settings) (*valkeyScraper, error) { @@ -36,6 +39,7 @@ func newValkeyScraper(cfg *Config, settings receiver.Settings) (*valkeyScraper, settings: settings.TelemetrySettings, mb: metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, settings), configInfo: configInfo, + logger: settings.Logger, }, nil } @@ -56,8 +60,7 @@ func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { if opts.TLSConfig, err = vs.cfg.TLS.LoadTLSConfig(context.Background()); err != nil { return pmetric.Metrics{}, err } - vs.client, err = newValkeyClient(opts) - if err != nil { + if vs.client, err = newValkeyClient(opts, vs.logger); err != nil { return pmetric.Metrics{}, err } } @@ -92,6 +95,8 @@ func (vs *valkeyScraper) recordConnectionMetrics(now pcommon.Timestamp, info map if val, ok := info[infoKey]; ok { if i, err := strconv.ParseInt(val, 10, 64); err == nil { vs.mb.RecordValkeyClientConnectionCountDataPoint(now, i, attribute) + } else { + vs.logger.Error(fmt.Errorf("could not parse field %s from key %s as integer: %w", val, infoKey, err).Error()) } } } diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 6fa3b399f857..5266b11a5fd4 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -22,7 +22,7 @@ var raw_info string type mockClient struct{} func (mockClient) retrieveInfo(context.Context) (map[string]string, error) { - return parseRawDataMap(raw_info), nil + return parseRawDataMap(raw_info) } func (mockClient) close() error { From 1a76c237301b3515c50dbeab0b27a9ddb4a00883 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Fri, 3 Jan 2025 11:54:43 +0100 Subject: [PATCH 18/23] fix: use strings.Cut instead of strings.Split --- receiver/valkeyreceiver/client.go | 12 +++++------- receiver/valkeyreceiver/receiver.go | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/receiver/valkeyreceiver/client.go b/receiver/valkeyreceiver/client.go index 520f629cfa89..e52d551a0d45 100644 --- a/receiver/valkeyreceiver/client.go +++ b/receiver/valkeyreceiver/client.go @@ -8,7 +8,6 @@ import ( "strings" "github.com/valkey-io/valkey-go" - "go.uber.org/zap" ) var attrDelimiter = "\r\n" @@ -29,7 +28,7 @@ type valkeyClient struct { var _ client = (*valkeyClient)(nil) // Creates a new real Valkey client from the passed-in valkey.Options. -func newValkeyClient(options valkey.ClientOption, logger *zap.Logger) (client, error) { +func newValkeyClient(options valkey.ClientOption) (client, error) { innerClient, err := valkey.NewClient(options) if err != nil { return nil, err @@ -54,12 +53,11 @@ func parseRawDataMap(data string) (map[string]string, error) { if len(line) == 0 || strings.HasPrefix(line, "#") { continue } - pair := strings.Split(line, ":") - if len(pair) == 2 { // defensive, should always == 2 - attrs[pair[0]] = pair[1] - } else { - fmt.Errorf("could not split line %q using \":\" as delimiter", line) + key, value, found := strings.Cut(line, ":") + if !found { + return nil, fmt.Errorf("could not cut line %q using \":\" as delimiter", line) } + attrs[key] = value } return attrs, nil } diff --git a/receiver/valkeyreceiver/receiver.go b/receiver/valkeyreceiver/receiver.go index 04059208bd09..5eec2d520150 100644 --- a/receiver/valkeyreceiver/receiver.go +++ b/receiver/valkeyreceiver/receiver.go @@ -60,7 +60,7 @@ func (vs *valkeyScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { if opts.TLSConfig, err = vs.cfg.TLS.LoadTLSConfig(context.Background()); err != nil { return pmetric.Metrics{}, err } - if vs.client, err = newValkeyClient(opts, vs.logger); err != nil { + if vs.client, err = newValkeyClient(opts); err != nil { return pmetric.Metrics{}, err } } From 018a5e481fba9a318dfe275f08b2f7b311be5976 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Tue, 7 Jan 2025 09:40:46 +0100 Subject: [PATCH 19/23] docs: link configtls and remove redundant section --- receiver/valkeyreceiver/README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/receiver/valkeyreceiver/README.md b/receiver/valkeyreceiver/README.md index 9e2794ba238e..1d0162776ad4 100644 --- a/receiver/valkeyreceiver/README.md +++ b/receiver/valkeyreceiver/README.md @@ -26,8 +26,6 @@ can be found by browsing [the metadata file](./metadata.yaml). ## Configuration -> :information_source: This receiver is in beta and configuration fields are subject to change. - The following settings are required: - `endpoint` (no default): The hostname and port of the Valkey instance, @@ -41,11 +39,7 @@ next consumer. The `collection_interval` configuration option tells this receiver the duration between runs. This value must be a string readable by Golang's `ParseDuration` function (example: `1h30m`). Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. -- `tls`: - - `insecure` (default = true): whether to disable client transport security for the exporter's connection. - - `ca_file`: path to the CA cert. For a client this verifies the server certificate. Should only be used if `insecure` is set to false. - - `cert_file`: path to the TLS cert to use for TLS required connections. Should only be used if `insecure` is set to false. - - `key_file`: path to the TLS key to use for TLS required connections. Should only be used if `insecure` is set to false. +- `tls`: see [TLS Configuration Settings](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configtls/README.md#tls-configuration-settings) for the full set of available options. Example: From db230b1730f20bb70f4cbbb3626ae46cdb3b7888 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Tue, 7 Jan 2025 11:53:56 +0100 Subject: [PATCH 20/23] chore: new_component changelog --- .chloggen/init_valkey_receiver.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.chloggen/init_valkey_receiver.yaml b/.chloggen/init_valkey_receiver.yaml index 198dc34d0933..b2560285058d 100644 --- a/.chloggen/init_valkey_receiver.yaml +++ b/.chloggen/init_valkey_receiver.yaml @@ -1,7 +1,7 @@ # Use this changelog template to create an entry for release notes. # One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: 'enhancement' +change_type: 'new_component' # The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) component: valkeyreceiver From 123aa3eecb4f8ae69e9b871d27d4dc37bbd32ea9 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 9 Jan 2025 17:19:38 +0100 Subject: [PATCH 21/23] fix: linter and replace deprecated scraper --- receiver/valkeyreceiver/config.go | 2 +- receiver/valkeyreceiver/factory.go | 2 +- receiver/valkeyreceiver/go.mod | 39 ++++++------- receiver/valkeyreceiver/go.sum | 70 ++++++++++++------------ receiver/valkeyreceiver/receiver_test.go | 4 +- 5 files changed, 60 insertions(+), 57 deletions(-) diff --git a/receiver/valkeyreceiver/config.go b/receiver/valkeyreceiver/config.go index 9dd74567495f..ba7308914777 100644 --- a/receiver/valkeyreceiver/config.go +++ b/receiver/valkeyreceiver/config.go @@ -9,7 +9,7 @@ import ( "go.opentelemetry.io/collector/config/confignet" "go.opentelemetry.io/collector/config/configtls" - "go.opentelemetry.io/collector/receiver/scraperhelper" + "go.opentelemetry.io/collector/scraper/scraperhelper" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" ) diff --git a/receiver/valkeyreceiver/factory.go b/receiver/valkeyreceiver/factory.go index 0e5aa7f3dbe3..261748ef24ca 100644 --- a/receiver/valkeyreceiver/factory.go +++ b/receiver/valkeyreceiver/factory.go @@ -12,8 +12,8 @@ import ( "go.opentelemetry.io/collector/config/configtls" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/receiver" - "go.opentelemetry.io/collector/receiver/scraperhelper" "go.opentelemetry.io/collector/scraper" + "go.opentelemetry.io/collector/scraper/scraperhelper" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/valkeyreceiver/internal/metadata" ) diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index ec6d63ff99f7..5ac1f3876882 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -5,23 +5,23 @@ go 1.22.7 require ( github.com/google/go-cmp v0.6.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.116.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.116.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.117.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.117.0 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.34.0 github.com/valkey-io/valkey-go v1.0.45 - go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/component v0.117.0 + go.opentelemetry.io/collector/component/componenttest v0.117.0 go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/consumer v1.23.0 + go.opentelemetry.io/collector/consumer/consumertest v0.117.0 go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/pdata v1.23.0 + go.opentelemetry.io/collector/receiver v0.117.0 + go.opentelemetry.io/collector/receiver/receivertest v0.117.0 + go.opentelemetry.io/collector/scraper v0.117.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) @@ -66,7 +66,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.117.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -80,12 +80,13 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.116.1-0.20241220212031-7c2639723f67 // indirect - go.opentelemetry.io/collector/pipeline v0.116.1-0.20241220212031-7c2639723f67 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.116.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.117.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.117.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.117.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.117.0 // indirect + go.opentelemetry.io/collector/pipeline v0.117.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.117.0 // indirect + go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect @@ -100,8 +101,8 @@ require ( golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/grpc v1.69.0 // indirect - google.golang.org/protobuf v1.36.0 // indirect + google.golang.org/grpc v1.69.2 // indirect + google.golang.org/protobuf v1.36.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index ca73b4bf66cb..c5f55d1405bd 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -140,46 +140,48 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67 h1:yQp5VcaPVHSGbwbDUspEThk7w6k6GzyYH2E8mGxdOQk= -go.opentelemetry.io/collector/component v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:HRkdqOVYd5eUNJISfwLt1a+EXP3rCdceDjqOJAifQnQ= -go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67 h1:jvaFLY4LxAOiiSM2nqd+r4S6CoJwj5F+9zqa+qFjDn4= -go.opentelemetry.io/collector/component/componenttest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:CkLEiU14Gru21AKrpFhGCg3CqmrfzSTLFuIKfSfd/xc= +go.opentelemetry.io/collector/component v0.117.0 h1:A3Im4PqLyfduAdVyUgbOZdUs7J/USegdpnkoIAOuN3Y= +go.opentelemetry.io/collector/component v0.117.0/go.mod h1:+SxJgeMwNV6y3aKNR2sP0PfovcUlRwC0+pEv4tTYdXA= +go.opentelemetry.io/collector/component/componenttest v0.117.0 h1:r3k0BsU/cJlqVQRtgFjxfduNEGaM2qCAU7JitIGkRds= +go.opentelemetry.io/collector/component/componenttest v0.117.0/go.mod h1:MoBWSGb3KwGc5FAIO+htez/QWK2uqJ4fnbEnfHB384c= go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 h1:yTeR2OSVcmZ+mTUtwVIVjWUsLtr4ZpQyzNwjCwLqxN8= go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 h1:3MHaSS/9aLxgo8p2xuq3dZshIAHT92BWoH04f5xiaLA= go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:sW0t0iI/VfRL9VYX7Ik6XzVgPcR+Y5kejTLsYcMyDWs= -go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67 h1:LSVqRWyoDbaNgvzmNkuT2rUd3HOpCAi7Cs0HUpRvU10= -go.opentelemetry.io/collector/config/configtelemetry v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= +go.opentelemetry.io/collector/config/configtelemetry v0.117.0 h1:xsMfc89VByIF2fJzWuxs/2eqy44DWfNBAysReG4TAr8= +go.opentelemetry.io/collector/config/configtelemetry v0.117.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 h1:PWYn7OGB1oE1x5t/cfEq9DplzAehjL/UjPJrgon3dEo= go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:CYFyMvbf10EoWhoFG8EYyxzFy4jcIPGIRMc8/HWLNQM= go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 h1:aH9/KGWNM5vN0sSYJZWSPl1BQAMtoqiy2V+ZMWt8MuE= go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= -go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67 h1:wTvxJ1LkX4ErBlYNUkeu/RdV2CpS+f9AINtvPcezbMo= -go.opentelemetry.io/collector/consumer v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:SXd1PETGjpCvR336mld7i+Nmq7srFENALfjeDKExgUE= -go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67 h1:+wgtyKttv71S2iGATEHvcdClpsP8anNaB50D8CtrhbY= -go.opentelemetry.io/collector/consumer/consumererror v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:wOAV90zpjQg7B8WWb3T+PAfn4erRI1UnYhEQaCMTOaA= -go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67 h1:35Wb/srRsTFaN1S1F53LQAQbXJHpl3O6WxmVRDUqXas= -go.opentelemetry.io/collector/consumer/consumertest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:zznGaqot2BQUObyTnjILTBserFaV0OBBh6O3atyBhv0= -go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67 h1:UdNGjbmh33rj7Sim1Snl5KtfYCuQUz54rbF8jzVnyo4= -go.opentelemetry.io/collector/consumer/xconsumer v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:8RKit/X7qLXEIsaeUFucuj9NgeBtIum8aSq19Ij4iI0= +go.opentelemetry.io/collector/consumer v1.23.0 h1:JT0nE1vikL5yIk97IHBGzwx8co3w1WsAd3GFEl8r9XA= +go.opentelemetry.io/collector/consumer v1.23.0/go.mod h1:8d0uQ6gq64LbPktV4sc888lRj1cQCmrdl13hRIEURgA= +go.opentelemetry.io/collector/consumer/consumererror v0.117.0 h1:PPIZCcYZcENnyIrpRV4ERvMUoPSTV0zIP0QPzJvz80g= +go.opentelemetry.io/collector/consumer/consumererror v0.117.0/go.mod h1:L47xOVC+Vzos8350j3SWtU43w7rzms6UDhb6IrFxymY= +go.opentelemetry.io/collector/consumer/consumertest v0.117.0 h1:9WFyyjLudvfJDEuUaGsQyNRd1m6D1iRg8Iyg3xliFko= +go.opentelemetry.io/collector/consumer/consumertest v0.117.0/go.mod h1:B7A+OS76QKAzM8W7cmvlfVynFELj9Sa444hSm1SILFw= +go.opentelemetry.io/collector/consumer/xconsumer v0.117.0 h1:vsBNJGaEbYqgMU3PEsOcqjMxX5ul++Cxda44sttoi8c= +go.opentelemetry.io/collector/consumer/xconsumer v0.117.0/go.mod h1:dTr+Tms53lRLvR3OAzYic0yhcwldhTUdVIwJNSDmBmw= go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 h1:7qNlquetAVJCuCXEUv+GF9e7tSX+aFmxURP2Po7NWWI= go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:GoLxnSI6uE6QzmGOaiz0mkgirbQpj2A2Nb18bTKv5gI= -go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67 h1:qJ2VnulbhUdJhcHAqsQsbdxyPyskTGghL18m2EYo1Ws= -go.opentelemetry.io/collector/pdata v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:u3EKrLq8yiwlpVNKpucpcDUqdl6RquaOqo3jXiN7jtg= -go.opentelemetry.io/collector/pdata/pprofile v0.116.1-0.20241220212031-7c2639723f67 h1:BE8oNrfh2cvembF8+QDHayf94zKD1jc8v1n57n2nUjU= -go.opentelemetry.io/collector/pdata/pprofile v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:7/n2x/hdz00grs4NtJWRsPwzbqdkQSj0UfyJF5u41bs= -go.opentelemetry.io/collector/pdata/testdata v0.116.0 h1:zmn1zpeX2BvzL6vt2dBF4OuAyFF2ml/OXcqflNgFiP0= -go.opentelemetry.io/collector/pdata/testdata v0.116.0/go.mod h1:ytWzICFN4XTDP6o65B4+Ed52JGdqgk9B8CpLHCeCpMo= -go.opentelemetry.io/collector/pipeline v0.116.1-0.20241220212031-7c2639723f67 h1:FVxoHfNfgHZ8gxdqvSOopWq7xrsHXOu6PYdPeyJtY10= -go.opentelemetry.io/collector/pipeline v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= -go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67 h1:vI94xzkxabk9PHq5BGlM2YgciZ6ncJVdB2/d7JNV2ws= -go.opentelemetry.io/collector/receiver v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:Yed4BYEfcF9lqKbozFfuutvGtwIzmj1xDZ/M9su78pw= -go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67 h1:TDyCd9SA/RZDQeaZXxbQN/g+1hjXXqUyK9H6Ge2iX2Y= -go.opentelemetry.io/collector/receiver/receivertest v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:B2EVj9VPLn484MngVq/53+XRv2fFBa/kXL3K2aum5pc= -go.opentelemetry.io/collector/receiver/xreceiver v0.116.1-0.20241220212031-7c2639723f67 h1:bSP9NT4CF6Jw0PHtL3tsVt2/HoS00hHRhVIyxG6t2kY= -go.opentelemetry.io/collector/receiver/xreceiver v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:TzpQxAe+ZDfYjkww0L0lVoJ17pnieUOR4KHRk0shXYM= -go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67 h1:ZO6cGA0v76qsfy2jcQhZoYnLBxOt18OHliZEQNbCCpI= -go.opentelemetry.io/collector/scraper v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:dzcUpTlfqLFepOpCzuQEJW5Omvg+bVxi5jwSLO2nNs4= +go.opentelemetry.io/collector/pdata v1.23.0 h1:tEk0dkfB8RdSukoOMfEa8duB938gfZowdfRkrJxGDrw= +go.opentelemetry.io/collector/pdata v1.23.0/go.mod h1:I2jggpBMiO8A+7TXhzNpcJZkJtvi1cU0iVNIi+6bc+o= +go.opentelemetry.io/collector/pdata/pprofile v0.117.0 h1:AyOK+rkNGeawmLGUqF84wYks22BSGJtEV++3YSfvD1I= +go.opentelemetry.io/collector/pdata/pprofile v0.117.0/go.mod h1:eh7TLIkLrSI79/R3RL+sZsKpLS0k+83WntucPtXC5Ak= +go.opentelemetry.io/collector/pdata/testdata v0.117.0 h1:ainpacShKHaDkPK6lcvgJ0aPKYUD/E3+I0gYJZleedo= +go.opentelemetry.io/collector/pdata/testdata v0.117.0/go.mod h1:LZAymmRKHQEqJqJUSO15rej3+V1rNRyBMF5mWCKCMBY= +go.opentelemetry.io/collector/pipeline v0.117.0 h1:CSv0Dd3n9AQNQ73e7PdEkgexkSMRZliKATxkoZKUFcY= +go.opentelemetry.io/collector/pipeline v0.117.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= +go.opentelemetry.io/collector/receiver v0.117.0 h1:jm+b2G2IKKwGE213lB9cviKEdeATvYtNSY1kO0XdpMM= +go.opentelemetry.io/collector/receiver v0.117.0/go.mod h1:fZXigB3afp54OE+ogPcup/RPwI7j+CwZh9Mz6ObB/Cg= +go.opentelemetry.io/collector/receiver/receivertest v0.117.0 h1:aN4zOuWsiARa+RG9f89JyIrJbx5wsQ71Y0giiHsO1z8= +go.opentelemetry.io/collector/receiver/receivertest v0.117.0/go.mod h1:1wnGEowDmlO89feq1P+b4tQI2G/+iJxRrMallw7zeJE= +go.opentelemetry.io/collector/receiver/xreceiver v0.117.0 h1:HJjBj6P3/WQoYaRKZkWZHnUUCVFpBieqGKzKHcT6HUw= +go.opentelemetry.io/collector/receiver/xreceiver v0.117.0/go.mod h1:K1qMjIiAg6i3vHA+/EpM8nkhna3uIgoEellE2yuhz7A= +go.opentelemetry.io/collector/scraper v0.117.0 h1:FFBM6Pzc3L0sTronrceanvqxT74Nurbi8usUSImexJ0= +go.opentelemetry.io/collector/scraper v0.117.0/go.mod h1:6dM+85+aNPWfu63H+m8ZZutxDYCrWVXJ1yylR0jB9kA= +go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0 h1:jyQ7cdanR541XKSryExBNYKZVvVw27Sos1Rb88Sf/II= +go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0/go.mod h1:zt7M+HIlYJHdnFC5smM8AaczZevVHYkaG1yjnq26/i8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= @@ -253,10 +255,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1: google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.69.0 h1:quSiOM1GJPmPH5XtU+BCoVXcDVJJAzNcoyfC2cCjGkI= -google.golang.org/grpc v1.69.0/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= -google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ= -google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= +google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/receiver/valkeyreceiver/receiver_test.go b/receiver/valkeyreceiver/receiver_test.go index 5266b11a5fd4..142207a3510f 100644 --- a/receiver/valkeyreceiver/receiver_test.go +++ b/receiver/valkeyreceiver/receiver_test.go @@ -17,12 +17,12 @@ import ( ) //go:embed testdata/all-metrics/raw_info.txt -var raw_info string +var rawInfo string type mockClient struct{} func (mockClient) retrieveInfo(context.Context) (map[string]string, error) { - return parseRawDataMap(raw_info) + return parseRawDataMap(rawInfo) } func (mockClient) close() error { From 8309e1cd3707236c5e915feaee68266d1073e3ae Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Thu, 9 Jan 2025 17:31:08 +0100 Subject: [PATCH 22/23] fix: bump internal versions --- receiver/valkeyreceiver/go.mod | 14 ++++++------- receiver/valkeyreceiver/go.sum | 20 +++++++++---------- .../internal/metadata/generated_metrics.go | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index 5ac1f3876882..d7fae3c796ff 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -4,7 +4,7 @@ go 1.22.7 require ( github.com/google/go-cmp v0.6.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.116.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.117.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.117.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.117.0 github.com/stretchr/testify v1.10.0 @@ -12,16 +12,17 @@ require ( github.com/valkey-io/valkey-go v1.0.45 go.opentelemetry.io/collector/component v0.117.0 go.opentelemetry.io/collector/component/componenttest v0.117.0 - go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 - go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/config/confignet v1.23.0 + go.opentelemetry.io/collector/config/configtls v1.23.0 + go.opentelemetry.io/collector/confmap v1.23.0 go.opentelemetry.io/collector/consumer v1.23.0 go.opentelemetry.io/collector/consumer/consumertest v0.117.0 - go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 + go.opentelemetry.io/collector/filter v0.117.0 go.opentelemetry.io/collector/pdata v1.23.0 go.opentelemetry.io/collector/receiver v0.117.0 go.opentelemetry.io/collector/receiver/receivertest v0.117.0 go.opentelemetry.io/collector/scraper v0.117.0 + go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) @@ -79,14 +80,13 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 // indirect + go.opentelemetry.io/collector/config/configopaque v1.23.0 // indirect go.opentelemetry.io/collector/config/configtelemetry v0.117.0 // indirect go.opentelemetry.io/collector/consumer/consumererror v0.117.0 // indirect go.opentelemetry.io/collector/consumer/xconsumer v0.117.0 // indirect go.opentelemetry.io/collector/pdata/pprofile v0.117.0 // indirect go.opentelemetry.io/collector/pipeline v0.117.0 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.117.0 // indirect - go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index c5f55d1405bd..d375f93d0e83 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -144,16 +144,16 @@ go.opentelemetry.io/collector/component v0.117.0 h1:A3Im4PqLyfduAdVyUgbOZdUs7J/U go.opentelemetry.io/collector/component v0.117.0/go.mod h1:+SxJgeMwNV6y3aKNR2sP0PfovcUlRwC0+pEv4tTYdXA= go.opentelemetry.io/collector/component/componenttest v0.117.0 h1:r3k0BsU/cJlqVQRtgFjxfduNEGaM2qCAU7JitIGkRds= go.opentelemetry.io/collector/component/componenttest v0.117.0/go.mod h1:MoBWSGb3KwGc5FAIO+htez/QWK2uqJ4fnbEnfHB384c= -go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67 h1:yTeR2OSVcmZ+mTUtwVIVjWUsLtr4ZpQyzNwjCwLqxN8= -go.opentelemetry.io/collector/config/confignet v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= -go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67 h1:3MHaSS/9aLxgo8p2xuq3dZshIAHT92BWoH04f5xiaLA= -go.opentelemetry.io/collector/config/configopaque v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:sW0t0iI/VfRL9VYX7Ik6XzVgPcR+Y5kejTLsYcMyDWs= +go.opentelemetry.io/collector/config/confignet v1.23.0 h1:gq90GDgQFSjAeFkDeIkstkBwYrD8feUjqEWCrIJhFGA= +go.opentelemetry.io/collector/config/confignet v1.23.0/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= +go.opentelemetry.io/collector/config/configopaque v1.23.0 h1:SEnEzOHufGc4KGOjQq8zKIQuDBmRFl9ncZ3qs1SRpJk= +go.opentelemetry.io/collector/config/configopaque v1.23.0/go.mod h1:sW0t0iI/VfRL9VYX7Ik6XzVgPcR+Y5kejTLsYcMyDWs= go.opentelemetry.io/collector/config/configtelemetry v0.117.0 h1:xsMfc89VByIF2fJzWuxs/2eqy44DWfNBAysReG4TAr8= go.opentelemetry.io/collector/config/configtelemetry v0.117.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= -go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67 h1:PWYn7OGB1oE1x5t/cfEq9DplzAehjL/UjPJrgon3dEo= -go.opentelemetry.io/collector/config/configtls v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:CYFyMvbf10EoWhoFG8EYyxzFy4jcIPGIRMc8/HWLNQM= -go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67 h1:aH9/KGWNM5vN0sSYJZWSPl1BQAMtoqiy2V+ZMWt8MuE= -go.opentelemetry.io/collector/confmap v1.22.1-0.20241220212031-7c2639723f67/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= +go.opentelemetry.io/collector/config/configtls v1.23.0 h1:52q9dAV923hHn1aoYQyKGnrRXCPvTTT3DXurtxcpZaQ= +go.opentelemetry.io/collector/config/configtls v1.23.0/go.mod h1:cjMoqKm4MX9sc9qyEW5/kRepiKLuDYqFofGa0f/rqFE= +go.opentelemetry.io/collector/confmap v1.23.0 h1:EY+auc0kbyZ4HIfkLYeJyLDCZIFzMA1u8QRGW4bC1Ag= +go.opentelemetry.io/collector/confmap v1.23.0/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= go.opentelemetry.io/collector/consumer v1.23.0 h1:JT0nE1vikL5yIk97IHBGzwx8co3w1WsAd3GFEl8r9XA= go.opentelemetry.io/collector/consumer v1.23.0/go.mod h1:8d0uQ6gq64LbPktV4sc888lRj1cQCmrdl13hRIEURgA= go.opentelemetry.io/collector/consumer/consumererror v0.117.0 h1:PPIZCcYZcENnyIrpRV4ERvMUoPSTV0zIP0QPzJvz80g= @@ -162,8 +162,8 @@ go.opentelemetry.io/collector/consumer/consumertest v0.117.0 h1:9WFyyjLudvfJDEuU go.opentelemetry.io/collector/consumer/consumertest v0.117.0/go.mod h1:B7A+OS76QKAzM8W7cmvlfVynFELj9Sa444hSm1SILFw= go.opentelemetry.io/collector/consumer/xconsumer v0.117.0 h1:vsBNJGaEbYqgMU3PEsOcqjMxX5ul++Cxda44sttoi8c= go.opentelemetry.io/collector/consumer/xconsumer v0.117.0/go.mod h1:dTr+Tms53lRLvR3OAzYic0yhcwldhTUdVIwJNSDmBmw= -go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67 h1:7qNlquetAVJCuCXEUv+GF9e7tSX+aFmxURP2Po7NWWI= -go.opentelemetry.io/collector/filter v0.116.1-0.20241220212031-7c2639723f67/go.mod h1:GoLxnSI6uE6QzmGOaiz0mkgirbQpj2A2Nb18bTKv5gI= +go.opentelemetry.io/collector/filter v0.117.0 h1:iQAbrho8TzcOxoroJDiQnvy1KvfTqwwNAhtg/sXYYAE= +go.opentelemetry.io/collector/filter v0.117.0/go.mod h1:MUyBRsy3IKVixSWIfA9BXzHhx24LHo4y38uQmFlqddA= go.opentelemetry.io/collector/pdata v1.23.0 h1:tEk0dkfB8RdSukoOMfEa8duB938gfZowdfRkrJxGDrw= go.opentelemetry.io/collector/pdata v1.23.0/go.mod h1:I2jggpBMiO8A+7TXhzNpcJZkJtvi1cU0iVNIi+6bc+o= go.opentelemetry.io/collector/pdata/pprofile v0.117.0 h1:AyOK+rkNGeawmLGUqF84wYks22BSGJtEV++3YSfvD1I= diff --git a/receiver/valkeyreceiver/internal/metadata/generated_metrics.go b/receiver/valkeyreceiver/internal/metadata/generated_metrics.go index 7035f51ba248..1ce4786f7e54 100644 --- a/receiver/valkeyreceiver/internal/metadata/generated_metrics.go +++ b/receiver/valkeyreceiver/internal/metadata/generated_metrics.go @@ -12,7 +12,7 @@ import ( "go.opentelemetry.io/collector/receiver" ) -// AttributeValkeyClientConnectionState specifies the a value valkey.client.connection.state attribute. +// AttributeValkeyClientConnectionState specifies the value valkey.client.connection.state attribute. type AttributeValkeyClientConnectionState int const ( From 7b7df5c66ce900a859fa9b59b9156e6994396fc9 Mon Sep 17 00:00:00 2001 From: Roger Coll Date: Tue, 28 Jan 2025 20:09:29 +0100 Subject: [PATCH 23/23] fix: go modules --- receiver/valkeyreceiver/go.mod | 50 +++++++++--------- receiver/valkeyreceiver/go.sum | 92 +++++++++++++++++----------------- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/receiver/valkeyreceiver/go.mod b/receiver/valkeyreceiver/go.mod index d7fae3c796ff..281f204b3efb 100644 --- a/receiver/valkeyreceiver/go.mod +++ b/receiver/valkeyreceiver/go.mod @@ -5,22 +5,22 @@ go 1.22.7 require ( github.com/google/go-cmp v0.6.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.117.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.117.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.117.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.118.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.118.0 github.com/stretchr/testify v1.10.0 - github.com/testcontainers/testcontainers-go v0.34.0 + github.com/testcontainers/testcontainers-go v0.35.0 github.com/valkey-io/valkey-go v1.0.45 - go.opentelemetry.io/collector/component v0.117.0 - go.opentelemetry.io/collector/component/componenttest v0.117.0 + go.opentelemetry.io/collector/component v0.118.1-0.20250123125445-24f88da7b583 + go.opentelemetry.io/collector/component/componenttest v0.118.1-0.20250123125445-24f88da7b583 go.opentelemetry.io/collector/config/confignet v1.23.0 go.opentelemetry.io/collector/config/configtls v1.23.0 go.opentelemetry.io/collector/confmap v1.23.0 - go.opentelemetry.io/collector/consumer v1.23.0 - go.opentelemetry.io/collector/consumer/consumertest v0.117.0 + go.opentelemetry.io/collector/consumer v1.24.1-0.20250123125445-24f88da7b583 + go.opentelemetry.io/collector/consumer/consumertest v0.118.1-0.20250123125445-24f88da7b583 go.opentelemetry.io/collector/filter v0.117.0 - go.opentelemetry.io/collector/pdata v1.23.0 - go.opentelemetry.io/collector/receiver v0.117.0 - go.opentelemetry.io/collector/receiver/receivertest v0.117.0 + go.opentelemetry.io/collector/pdata v1.24.1-0.20250123125445-24f88da7b583 + go.opentelemetry.io/collector/receiver v0.118.1-0.20250123125445-24f88da7b583 + go.opentelemetry.io/collector/receiver/receivertest v0.118.1-0.20250123125445-24f88da7b583 go.opentelemetry.io/collector/scraper v0.117.0 go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0 go.uber.org/goleak v1.3.0 @@ -67,7 +67,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.117.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.118.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -81,28 +81,28 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/collector/config/configopaque v1.23.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.117.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.117.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.117.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.117.0 // indirect - go.opentelemetry.io/collector/pipeline v0.117.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.117.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.118.1-0.20250123125445-24f88da7b583 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.118.1-0.20250123125445-24f88da7b583 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.118.1-0.20250123125445-24f88da7b583 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.118.1-0.20250123125445-24f88da7b583 // indirect + go.opentelemetry.io/collector/pipeline v0.118.1-0.20250123125445-24f88da7b583 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.118.1-0.20250123125445-24f88da7b583 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect - go.opentelemetry.io/otel/metric v1.33.0 // indirect - go.opentelemetry.io/otel/sdk v1.33.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect - go.opentelemetry.io/otel/trace v1.33.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.opentelemetry.io/proto/otlp v1.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.31.0 // indirect golang.org/x/net v0.33.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/grpc v1.69.2 // indirect - google.golang.org/protobuf v1.36.2 // indirect + google.golang.org/grpc v1.69.4 // indirect + google.golang.org/protobuf v1.36.3 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/receiver/valkeyreceiver/go.sum b/receiver/valkeyreceiver/go.sum index d375f93d0e83..2111559d4b7e 100644 --- a/receiver/valkeyreceiver/go.sum +++ b/receiver/valkeyreceiver/go.sum @@ -126,8 +126,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= -github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= +github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= +github.com/testcontainers/testcontainers-go v0.35.0/go.mod h1:oEVBj5zrfJTrgjwONs1SsRbnBtH9OKl+IGl3UMcr2B4= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= @@ -140,64 +140,64 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/component v0.117.0 h1:A3Im4PqLyfduAdVyUgbOZdUs7J/USegdpnkoIAOuN3Y= -go.opentelemetry.io/collector/component v0.117.0/go.mod h1:+SxJgeMwNV6y3aKNR2sP0PfovcUlRwC0+pEv4tTYdXA= -go.opentelemetry.io/collector/component/componenttest v0.117.0 h1:r3k0BsU/cJlqVQRtgFjxfduNEGaM2qCAU7JitIGkRds= -go.opentelemetry.io/collector/component/componenttest v0.117.0/go.mod h1:MoBWSGb3KwGc5FAIO+htez/QWK2uqJ4fnbEnfHB384c= +go.opentelemetry.io/collector/component v0.118.1-0.20250123125445-24f88da7b583 h1:j8aeyY8Zhv2jzxyqFysoZ1RRGDFMV8UlGdOx4/8V5/w= +go.opentelemetry.io/collector/component v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:/fqrkzmOXsqm4boZaVtxi5YIz39/i8K8Wqd9oryz8Iw= +go.opentelemetry.io/collector/component/componenttest v0.118.1-0.20250123125445-24f88da7b583 h1:dQ/TorvDpM6JDmO5h9+STjEKlc5EHJ0J580/NkFed4o= +go.opentelemetry.io/collector/component/componenttest v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:eug78n4rxt5hdCSDWZ50wpYZXAl0ho/w6IsNtVZzQII= go.opentelemetry.io/collector/config/confignet v1.23.0 h1:gq90GDgQFSjAeFkDeIkstkBwYrD8feUjqEWCrIJhFGA= go.opentelemetry.io/collector/config/confignet v1.23.0/go.mod h1:ZppUH1hgUJOubawEsxsQ9MzEYFytqo2GnVSS7d4CVxc= go.opentelemetry.io/collector/config/configopaque v1.23.0 h1:SEnEzOHufGc4KGOjQq8zKIQuDBmRFl9ncZ3qs1SRpJk= go.opentelemetry.io/collector/config/configopaque v1.23.0/go.mod h1:sW0t0iI/VfRL9VYX7Ik6XzVgPcR+Y5kejTLsYcMyDWs= -go.opentelemetry.io/collector/config/configtelemetry v0.117.0 h1:xsMfc89VByIF2fJzWuxs/2eqy44DWfNBAysReG4TAr8= -go.opentelemetry.io/collector/config/configtelemetry v0.117.0/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= +go.opentelemetry.io/collector/config/configtelemetry v0.118.1-0.20250123125445-24f88da7b583 h1:Zn/SsRcYWqoFHeLAU4ZPmqj086yS/RZI8OWM8Srr0oA= +go.opentelemetry.io/collector/config/configtelemetry v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:SlBEwQg0qly75rXZ6W1Ig8jN25KBVBkFIIAUI1GiAAE= go.opentelemetry.io/collector/config/configtls v1.23.0 h1:52q9dAV923hHn1aoYQyKGnrRXCPvTTT3DXurtxcpZaQ= go.opentelemetry.io/collector/config/configtls v1.23.0/go.mod h1:cjMoqKm4MX9sc9qyEW5/kRepiKLuDYqFofGa0f/rqFE= go.opentelemetry.io/collector/confmap v1.23.0 h1:EY+auc0kbyZ4HIfkLYeJyLDCZIFzMA1u8QRGW4bC1Ag= go.opentelemetry.io/collector/confmap v1.23.0/go.mod h1:Rrhs+MWoaP6AswZp+ReQ2VO9dfOfcUjdjiSHBsG+nec= -go.opentelemetry.io/collector/consumer v1.23.0 h1:JT0nE1vikL5yIk97IHBGzwx8co3w1WsAd3GFEl8r9XA= -go.opentelemetry.io/collector/consumer v1.23.0/go.mod h1:8d0uQ6gq64LbPktV4sc888lRj1cQCmrdl13hRIEURgA= -go.opentelemetry.io/collector/consumer/consumererror v0.117.0 h1:PPIZCcYZcENnyIrpRV4ERvMUoPSTV0zIP0QPzJvz80g= -go.opentelemetry.io/collector/consumer/consumererror v0.117.0/go.mod h1:L47xOVC+Vzos8350j3SWtU43w7rzms6UDhb6IrFxymY= -go.opentelemetry.io/collector/consumer/consumertest v0.117.0 h1:9WFyyjLudvfJDEuUaGsQyNRd1m6D1iRg8Iyg3xliFko= -go.opentelemetry.io/collector/consumer/consumertest v0.117.0/go.mod h1:B7A+OS76QKAzM8W7cmvlfVynFELj9Sa444hSm1SILFw= -go.opentelemetry.io/collector/consumer/xconsumer v0.117.0 h1:vsBNJGaEbYqgMU3PEsOcqjMxX5ul++Cxda44sttoi8c= -go.opentelemetry.io/collector/consumer/xconsumer v0.117.0/go.mod h1:dTr+Tms53lRLvR3OAzYic0yhcwldhTUdVIwJNSDmBmw= +go.opentelemetry.io/collector/consumer v1.24.1-0.20250123125445-24f88da7b583 h1:TbnwJmdaKaGztRZ0tWeJ7pCRirNdz9MeDwwk+WZslHs= +go.opentelemetry.io/collector/consumer v1.24.1-0.20250123125445-24f88da7b583/go.mod h1:YyTWeyBUYlVi983ylJAY5qHnCajq67on3A59OpS6A/I= +go.opentelemetry.io/collector/consumer/consumererror v0.118.1-0.20250123125445-24f88da7b583 h1:Cr3hudfh+YNB6F+wWlsLzZza3XvdkYApQsOgQ1Z739g= +go.opentelemetry.io/collector/consumer/consumererror v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:/fhqEIxH0hmnDa6zm38XzsdURr5GrlC9oKO70JVorHU= +go.opentelemetry.io/collector/consumer/consumertest v0.118.1-0.20250123125445-24f88da7b583 h1:QV2iN4kyzyTJq/472xHM9xDv8FZ2u3eSCnMSDhdfB54= +go.opentelemetry.io/collector/consumer/consumertest v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:fOVRcSFNghbaDpTJtTVHvFEQHeAAW8WEX0dYWbPpgBc= +go.opentelemetry.io/collector/consumer/xconsumer v0.118.1-0.20250123125445-24f88da7b583 h1:kVq7l/BjtuqjWSBuYAA6pEB2ucYF/6qOXGOyrFgKhzk= +go.opentelemetry.io/collector/consumer/xconsumer v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:Ij9o9d7hZb4be6ql6yqMR7xy5fcFR0SSD6RRIYWlu88= go.opentelemetry.io/collector/filter v0.117.0 h1:iQAbrho8TzcOxoroJDiQnvy1KvfTqwwNAhtg/sXYYAE= go.opentelemetry.io/collector/filter v0.117.0/go.mod h1:MUyBRsy3IKVixSWIfA9BXzHhx24LHo4y38uQmFlqddA= -go.opentelemetry.io/collector/pdata v1.23.0 h1:tEk0dkfB8RdSukoOMfEa8duB938gfZowdfRkrJxGDrw= -go.opentelemetry.io/collector/pdata v1.23.0/go.mod h1:I2jggpBMiO8A+7TXhzNpcJZkJtvi1cU0iVNIi+6bc+o= -go.opentelemetry.io/collector/pdata/pprofile v0.117.0 h1:AyOK+rkNGeawmLGUqF84wYks22BSGJtEV++3YSfvD1I= -go.opentelemetry.io/collector/pdata/pprofile v0.117.0/go.mod h1:eh7TLIkLrSI79/R3RL+sZsKpLS0k+83WntucPtXC5Ak= -go.opentelemetry.io/collector/pdata/testdata v0.117.0 h1:ainpacShKHaDkPK6lcvgJ0aPKYUD/E3+I0gYJZleedo= -go.opentelemetry.io/collector/pdata/testdata v0.117.0/go.mod h1:LZAymmRKHQEqJqJUSO15rej3+V1rNRyBMF5mWCKCMBY= -go.opentelemetry.io/collector/pipeline v0.117.0 h1:CSv0Dd3n9AQNQ73e7PdEkgexkSMRZliKATxkoZKUFcY= -go.opentelemetry.io/collector/pipeline v0.117.0/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= -go.opentelemetry.io/collector/receiver v0.117.0 h1:jm+b2G2IKKwGE213lB9cviKEdeATvYtNSY1kO0XdpMM= -go.opentelemetry.io/collector/receiver v0.117.0/go.mod h1:fZXigB3afp54OE+ogPcup/RPwI7j+CwZh9Mz6ObB/Cg= -go.opentelemetry.io/collector/receiver/receivertest v0.117.0 h1:aN4zOuWsiARa+RG9f89JyIrJbx5wsQ71Y0giiHsO1z8= -go.opentelemetry.io/collector/receiver/receivertest v0.117.0/go.mod h1:1wnGEowDmlO89feq1P+b4tQI2G/+iJxRrMallw7zeJE= -go.opentelemetry.io/collector/receiver/xreceiver v0.117.0 h1:HJjBj6P3/WQoYaRKZkWZHnUUCVFpBieqGKzKHcT6HUw= -go.opentelemetry.io/collector/receiver/xreceiver v0.117.0/go.mod h1:K1qMjIiAg6i3vHA+/EpM8nkhna3uIgoEellE2yuhz7A= +go.opentelemetry.io/collector/pdata v1.24.1-0.20250123125445-24f88da7b583 h1:dXIRezA9B0F1c0enm5U0jzTu4BDbxankZHpRbTiKItc= +go.opentelemetry.io/collector/pdata v1.24.1-0.20250123125445-24f88da7b583/go.mod h1:6lE9r5x41Z9GyvTSBetXSHRikhiZZK5ApmFtX35ZbXc= +go.opentelemetry.io/collector/pdata/pprofile v0.118.1-0.20250123125445-24f88da7b583 h1:INMmM3orAT8nI5LO6T+BvTgM00vL/O8ttCDTljn17sU= +go.opentelemetry.io/collector/pdata/pprofile v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:iD66/nCk+xHh4q/1FBcYBQTEZKZuejggZBkm14/cobA= +go.opentelemetry.io/collector/pdata/testdata v0.118.0 h1:5N0w1SX9KIRkwvtkrpzQgXy9eGk3vfNG0ds6mhEPMIM= +go.opentelemetry.io/collector/pdata/testdata v0.118.0/go.mod h1:UY+GHV5bOC1BnFburOZ0wiHReJj1XbW12mi2Ogbc5Lw= +go.opentelemetry.io/collector/pipeline v0.118.1-0.20250123125445-24f88da7b583 h1:RKMWMoxRzs5x11tKmU5MhoCzu+Ms1cIBwe2y/dpDPWo= +go.opentelemetry.io/collector/pipeline v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:qE3DmoB05AW0C3lmPvdxZqd/H4po84NPzd5MrqgtL74= +go.opentelemetry.io/collector/receiver v0.118.1-0.20250123125445-24f88da7b583 h1:EFwikkSzWBqYw9dRc6cbsXxEMGh0cAF3Y8MfPd+HWmE= +go.opentelemetry.io/collector/receiver v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:w9MEboroi3iac6nRLdAyTxX9C2+WMdMfWm4UZJnX1UY= +go.opentelemetry.io/collector/receiver/receivertest v0.118.1-0.20250123125445-24f88da7b583 h1:24Tp2Qmxilsm4LkwcOosANkznMzV4jzhI2H4Tz58n3E= +go.opentelemetry.io/collector/receiver/receivertest v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:x9N91YI3onF0+enjYegcHYOb50Of2xO05c8EyE/baJ0= +go.opentelemetry.io/collector/receiver/xreceiver v0.118.1-0.20250123125445-24f88da7b583 h1:J4Pqe4mB7+clH50XeXqfAStYD7a/9Y0mG6C7aFi0k/w= +go.opentelemetry.io/collector/receiver/xreceiver v0.118.1-0.20250123125445-24f88da7b583/go.mod h1:WLPXXIuodY7quBgqCz3OIsPNdBMLDej5nUIbiyyfoUc= go.opentelemetry.io/collector/scraper v0.117.0 h1:FFBM6Pzc3L0sTronrceanvqxT74Nurbi8usUSImexJ0= go.opentelemetry.io/collector/scraper v0.117.0/go.mod h1:6dM+85+aNPWfu63H+m8ZZutxDYCrWVXJ1yylR0jB9kA= go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0 h1:jyQ7cdanR541XKSryExBNYKZVvVw27Sos1Rb88Sf/II= go.opentelemetry.io/collector/scraper/scraperhelper v0.117.0/go.mod h1:zt7M+HIlYJHdnFC5smM8AaczZevVHYkaG1yjnq26/i8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= -go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= -go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= -go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= -go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= -go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= -go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -233,8 +233,8 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -255,10 +255,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1: google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= -google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= -google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= -google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A= +google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=