diff --git a/cfg/envconfig/envconfig.go b/cfg/envconfig/envconfig.go index a0cd44327c..2a41595961 100644 --- a/cfg/envconfig/envconfig.go +++ b/cfg/envconfig/envconfig.go @@ -30,6 +30,7 @@ const ( PodName = "POD_NAME" HostIP = "HOST_IP" CWConfigContent = "CW_CONFIG_CONTENT" + CWAgentMergedOtelConfig = "CWAGENT_MERGED_OTEL_CONFIG" ) const ( diff --git a/cmd/amazon-cloudwatch-agent/amazon-cloudwatch-agent.go b/cmd/amazon-cloudwatch-agent/amazon-cloudwatch-agent.go index b538875596..039ea54794 100644 --- a/cmd/amazon-cloudwatch-agent/amazon-cloudwatch-agent.go +++ b/cmd/amazon-cloudwatch-agent/amazon-cloudwatch-agent.go @@ -36,6 +36,8 @@ import ( "github.com/aws/amazon-cloudwatch-agent/cfg/envconfig" "github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent/internal" "github.com/aws/amazon-cloudwatch-agent/extension/agenthealth/handler/useragent" + "github.com/aws/amazon-cloudwatch-agent/internal/mapstructure" + "github.com/aws/amazon-cloudwatch-agent/internal/merge/confmap" "github.com/aws/amazon-cloudwatch-agent/internal/version" cwaLogger "github.com/aws/amazon-cloudwatch-agent/logger" "github.com/aws/amazon-cloudwatch-agent/logs" @@ -46,6 +48,7 @@ import ( "github.com/aws/amazon-cloudwatch-agent/service/defaultcomponents" "github.com/aws/amazon-cloudwatch-agent/service/registry" "github.com/aws/amazon-cloudwatch-agent/tool/paths" + "github.com/aws/amazon-cloudwatch-agent/translator/tocwconfig/toyamlconfig" ) const ( @@ -62,7 +65,7 @@ var fTest = flag.Bool("test", false, "enable test mode: gather metrics, print th var fTestWait = flag.Int("test-wait", 0, "wait up to this many seconds for service inputs to complete in test mode") var fSchemaTest = flag.Bool("schematest", false, "validate the toml file schema") var fTomlConfig = flag.String("config", "", "configuration file to load") -var fOtelConfig = flag.String("otelconfig", paths.YamlConfigPath, "YAML configuration file to run OTel pipeline") +var fOtelConfigs configprovider.OtelConfigFlags var fEnvConfig = flag.String("envconfig", "", "env configuration file to load") var fConfigDirectory = flag.String("config-directory", "", "directory containing additional *.conf files") @@ -184,7 +187,7 @@ func reloadLoop( _ = f.Close() } } - log.Fatalf("E! [telegraf] Error running agent: %v", err) + log.Fatalf("E! Error running agent: %v", err) } } } @@ -312,35 +315,65 @@ func runAgent(ctx context.Context, // Always run logAgent as goroutine regardless of whether starting OTEL or Telegraf. go logAgent.Run(ctx) - // If OTEL config does not exist, then ASSUME just monitoring logs. + // If only the default CWAgent config yaml is provided and does not exist, then ASSUME + // just monitoring logs since this is the default when no OTEL config flag is provided. // So just start Telegraf. - _, err = os.Stat(*fOtelConfig) - if errors.Is(err, os.ErrNotExist) { - useragent.Get().SetComponents(&otelcol.Config{}, c) - return ag.Run(ctx) + if len(fOtelConfigs) == 1 && fOtelConfigs[0] == paths.YamlConfigPath { + _, err = os.Stat(fOtelConfigs[0]) + if errors.Is(err, os.ErrNotExist) { + useragent.Get().SetComponents(&otelcol.Config{}, c) + return ag.Run(ctx) + } } } // Else start OTEL and rely on adapter package to start the logfile plugin. - yamlConfigPath := *fOtelConfig level := cwaLogger.ConvertToAtomicLevel(wlog.LogLevel()) logger, loggerOptions := cwaLogger.NewLogger(writer, level) - providerSettings := configprovider.GetSettings(yamlConfigPath, logger) + + uris := fOtelConfigs + // merge configs together + if len(uris) > 1 { + log.Printf("D! Merging multiple OTEL configurations: %s", uris) + result := confmap.New() + for _, path := range fOtelConfigs { + conf, err := confmap.LoadConf(path) + if err != nil { + return fmt.Errorf("failed to load OTEL configs: %w", err) + } + if err = result.Merge(conf); err != nil { + return fmt.Errorf("failed to merge OTEL configs: %w", err) + } + } + _ = os.Setenv(envconfig.CWAgentMergedOtelConfig, toyamlconfig.ToYamlConfig(result.ToStringMap())) + uris = []string{"env:" + envconfig.CWAgentMergedOtelConfig} + } else { + _ = os.Unsetenv(envconfig.CWAgentMergedOtelConfig) + } + + providerSettings := configprovider.GetSettings(uris, logger) provider, err := otelcol.NewConfigProvider(providerSettings) if err != nil { - log.Printf("E! Error while initializing config provider: %v\n", err) - return err + return fmt.Errorf("error while initializing config provider: %v", err) } factories, err := components(c) if err != nil { - log.Printf("E! Error while adapting telegraf input plugins: %v\n", err) - return err + return fmt.Errorf("error while adapting telegraf input plugins: %v", err) } cfg, err := provider.Get(ctx, factories) if err != nil { return err } + + if _, ok := os.LookupEnv(envconfig.CWAgentMergedOtelConfig); ok { + result, err := mapstructure.Marshal(cfg) + if err != nil { + return fmt.Errorf("failed to marshal OTEL configuration: %v", err) + } + log.Printf("I! Merged OTEL configuration: \n%s\n", toyamlconfig.ToYamlConfig(result)) + } + useragent.Get().SetComponents(cfg, c) params := getCollectorParams(factories, providerSettings, loggerOptions) @@ -352,7 +385,10 @@ func runAgent(ctx context.Context, // The config path below here is actually used that was set in the settings above. // docs: https://github.com/open-telemetry/opentelemetry-collector/blob/93cbae436ae61b832279dbbb18a0d99214b7d305/otelcol/command.go#L63 // ************************************************************************************************* - e := []string{"--config=" + yamlConfigPath} + var e []string + for _, uri := range uris { + e = append(e, "--config="+uri) + } cmd.SetArgs(e) return cmd.Execute() } @@ -422,7 +458,11 @@ func (p *program) Stop(_ service.Service) error { } func main() { + flag.Var(&fOtelConfigs, configprovider.OtelConfigFlagName, "YAML configuration files to run OTel pipeline") flag.Parse() + if len(fOtelConfigs) == 0 { + _ = fOtelConfigs.Set(paths.YamlConfigPath) + } args := flag.Args() sectionFilters, inputFilters, outputFilters := []string{}, []string{}, []string{} if *fSectionFilters != "" { diff --git a/cmd/config-downloader/downloader.go b/cmd/config-downloader/downloader.go index baa86eb74a..21a8aa0338 100644 --- a/cmd/config-downloader/downloader.go +++ b/cmd/config-downloader/downloader.go @@ -18,8 +18,8 @@ import ( configaws "github.com/aws/amazon-cloudwatch-agent/cfg/aws" "github.com/aws/amazon-cloudwatch-agent/cfg/commonconfig" + "github.com/aws/amazon-cloudwatch-agent/internal/constants" "github.com/aws/amazon-cloudwatch-agent/translator/config" - "github.com/aws/amazon-cloudwatch-agent/translator/context" "github.com/aws/amazon-cloudwatch-agent/translator/util" sdkutil "github.com/aws/amazon-cloudwatch-agent/translator/util" ) @@ -173,7 +173,7 @@ func main() { return filepath.SkipDir } } - if filepath.Ext(path) == context.TmpFileSuffix { + if filepath.Ext(path) == constants.FileSuffixTmp { return os.Remove(path) } return nil @@ -211,7 +211,7 @@ func main() { } if multiConfig != "remove" { - outputFilePath = filepath.Join(outputDir, outputFilePath+context.TmpFileSuffix) + outputFilePath = filepath.Join(outputDir, outputFilePath+constants.FileSuffixTmp) err = os.WriteFile(outputFilePath, []byte(config), 0644) if err != nil { log.Panicf("E! Failed to write the json file %v: %v", outputFilePath, err) diff --git a/cmd/start-amazon-cloudwatch-agent/path.go b/cmd/start-amazon-cloudwatch-agent/path.go index b94c055a73..ff6904e345 100644 --- a/cmd/start-amazon-cloudwatch-agent/path.go +++ b/cmd/start-amazon-cloudwatch-agent/path.go @@ -17,6 +17,7 @@ import ( "github.com/BurntSushi/toml" "github.com/aws/amazon-cloudwatch-agent/cfg/envconfig" + "github.com/aws/amazon-cloudwatch-agent/internal/util/config" "github.com/aws/amazon-cloudwatch-agent/internal/util/user" "github.com/aws/amazon-cloudwatch-agent/tool/paths" ) @@ -28,9 +29,9 @@ func startAgent(writer io.WriteCloser) error { paths.AgentBinaryPath, // when using syscall.Exec, must pass binary name as args[0] "-config", paths.TomlConfigPath, "-envconfig", paths.EnvConfigPath, - "-otelconfig", paths.YamlConfigPath, - "-pidfile", paths.AgentDir + "/var/amazon-cloudwatch-agent.pid", } + execArgs = append(execArgs, config.GetOTELConfigArgs(paths.CONFIG_DIR_IN_CONTAINER)...) + execArgs = append(execArgs, "-pidfile", paths.AgentDir+"/var/amazon-cloudwatch-agent.pid") if err := syscall.Exec(paths.AgentBinaryPath, execArgs, os.Environ()); err != nil { return fmt.Errorf("error exec as agent binary: %w", err) } @@ -69,9 +70,9 @@ func startAgent(writer io.WriteCloser) error { paths.AgentBinaryPath, "-config", paths.TomlConfigPath, "-envconfig", paths.EnvConfigPath, - "-otelconfig", paths.YamlConfigPath, - "-pidfile", paths.AgentDir + "/var/amazon-cloudwatch-agent.pid", } + agentCmd = append(agentCmd, config.GetOTELConfigArgs(paths.ConfigDirPath)...) + agentCmd = append(agentCmd, "-pidfile", paths.AgentDir+"/var/amazon-cloudwatch-agent.pid") if err = syscall.Exec(name, agentCmd, os.Environ()); err != nil { // log file is closed, so use fmt here fmt.Printf("E! Exec failed: %v \n", err) diff --git a/cmd/start-amazon-cloudwatch-agent/path_windows.go b/cmd/start-amazon-cloudwatch-agent/path_windows.go index a253348f64..488ac331b7 100644 --- a/cmd/start-amazon-cloudwatch-agent/path_windows.go +++ b/cmd/start-amazon-cloudwatch-agent/path_windows.go @@ -14,6 +14,7 @@ import ( "os/exec" "github.com/aws/amazon-cloudwatch-agent/cfg/envconfig" + "github.com/aws/amazon-cloudwatch-agent/internal/util/config" "github.com/aws/amazon-cloudwatch-agent/tool/paths" ) @@ -23,24 +24,24 @@ func startAgent(writer io.WriteCloser) error { log.Printf("E! Cannot close the log file, ERROR is %v \n", err) return err } - cmd := exec.Command( - paths.AgentBinaryPath, + execArgs := []string{ "-config", paths.TomlConfigPath, "-envconfig", paths.EnvConfigPath, - "-otelconfig", paths.YamlConfigPath, - ) + } + execArgs = append(execArgs, config.GetOTELConfigArgs(paths.ConfigDirPath)...) + cmd := exec.Command(paths.AgentBinaryPath, execArgs...) stdoutStderr, err := cmd.CombinedOutput() // log file is closed, so use fmt here fmt.Printf("%s \n", stdoutStderr) return err } else { - cmd := exec.Command( - paths.AgentBinaryPath, + execArgs := []string{ "-config", paths.TomlConfigPath, "-envconfig", paths.EnvConfigPath, - "-otelconfig", paths.YamlConfigPath, - "-console", "true", - ) + } + execArgs = append(execArgs, config.GetOTELConfigArgs(paths.CONFIG_DIR_IN_CONTAINER)...) + execArgs = append(execArgs, "-console", "true") + cmd := exec.Command(paths.AgentBinaryPath, execArgs...) cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr diff --git a/cmd/start-amazon-cloudwatch-agent/start-amazon-cloudwatch-agent.go b/cmd/start-amazon-cloudwatch-agent/start-amazon-cloudwatch-agent.go index 39abcb6a9f..7aba8c8351 100644 --- a/cmd/start-amazon-cloudwatch-agent/start-amazon-cloudwatch-agent.go +++ b/cmd/start-amazon-cloudwatch-agent/start-amazon-cloudwatch-agent.go @@ -24,7 +24,7 @@ func translateConfig() error { if envconfig.IsRunningInContainer() { args = append(args, "--input-dir", paths.CONFIG_DIR_IN_CONTAINER) } else { - args = append(args, "--input", paths.JsonConfigPath, "--input-dir", paths.JsonDirPath, "--config", paths.CommonConfigPath) + args = append(args, "--input", paths.JsonConfigPath, "--input-dir", paths.ConfigDirPath, "--config", paths.CommonConfigPath) } cmd := exec.Command(paths.TranslatorBinaryPath, args...) cmd.Stdout = os.Stdout diff --git a/go.mod b/go.mod index 96b7819884..872f5d7021 100644 --- a/go.mod +++ b/go.mod @@ -105,6 +105,8 @@ require ( github.com/influxdata/wlog v0.0.0-20160411224016-7c63b0a71ef8 github.com/jellydator/ttlcache/v3 v3.2.0 github.com/kardianos/service v1.2.1 // Keep this pinned to v1.2.1. v1.2.2 causes the agent to not register as a service on Windows + github.com/knadh/koanf v1.5.0 + github.com/knadh/koanf/v2 v2.1.1 github.com/kr/pretty v0.3.1 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c github.com/oklog/run v1.1.0 @@ -112,19 +114,39 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/filestorage v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.103.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.103.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.19.1 github.com/prometheus/common v0.54.0 @@ -139,15 +161,19 @@ require ( go.opentelemetry.io/collector/config/configtls v0.103.0 go.opentelemetry.io/collector/confmap v0.103.0 go.opentelemetry.io/collector/confmap/converter/expandconverter v0.103.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v0.103.0 go.opentelemetry.io/collector/confmap/provider/fileprovider v0.103.0 go.opentelemetry.io/collector/consumer v0.103.0 go.opentelemetry.io/collector/exporter v0.103.0 go.opentelemetry.io/collector/exporter/debugexporter v0.103.0 go.opentelemetry.io/collector/extension v0.103.0 + go.opentelemetry.io/collector/extension/ballastextension v0.103.0 + go.opentelemetry.io/collector/extension/zpagesextension v0.103.0 go.opentelemetry.io/collector/otelcol v0.103.0 go.opentelemetry.io/collector/pdata v1.10.0 go.opentelemetry.io/collector/processor v0.103.0 go.opentelemetry.io/collector/processor/batchprocessor v0.103.0 + go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.103.0 go.opentelemetry.io/collector/receiver v0.103.0 go.opentelemetry.io/collector/receiver/otlpreceiver v0.103.0 go.opentelemetry.io/collector/semconv v0.103.0 @@ -186,7 +212,8 @@ require ( github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/Code-Hex/go-generics-cache v1.3.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/IBM/sarama v1.43.2 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Microsoft/hcsshim v0.12.0-rc.3 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/alecthomas/participle v0.4.1 // indirect @@ -198,18 +225,25 @@ require ( github.com/antchfx/xpath v1.2.0 // indirect github.com/apache/arrow/go/v12 v12.0.1 // indirect github.com/apache/arrow/go/v14 v14.0.2 // indirect - github.com/apache/thrift v0.17.0 // indirect + github.com/apache/thrift v0.20.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go-v2 v1.23.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.25.1 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.16.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.25.2 // indirect - github.com/aws/smithy-go v1.17.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.27.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.27.16 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.16 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.9 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 // indirect + github.com/aws/smithy-go v1.20.2 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect github.com/caio/go-tdigest v3.1.0+incompatible // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -231,6 +265,9 @@ require ( github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/doclambda/protobufquery v0.0.0-20210317203640-88ffabe06a60 // indirect + github.com/eapache/go-resiliency v1.6.0 // indirect + github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect + github.com/eapache/queue v1.1.0 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/envoyproxy/go-control-plane v0.12.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect @@ -241,7 +278,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // 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-openapi/jsonpointer v0.20.2 // indirect @@ -251,6 +288,7 @@ require ( github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/go-zookeeper/zk v1.0.3 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect @@ -265,6 +303,7 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.2 // indirect github.com/gophercloud/gophercloud v1.8.0 // indirect + github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/gosnmp/gosnmp v1.34.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect @@ -277,6 +316,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/nomad/api v0.0.0-20240306004928-3e7191ccb702 // indirect @@ -288,6 +328,12 @@ require ( github.com/influxdata/line-protocol/v2 v2.2.1 // indirect github.com/influxdata/toml v0.0.0-20190415235208-270119a8ce65 // indirect github.com/ionos-cloud/sdk-go/v6 v6.1.11 // indirect + github.com/jaegertracing/jaeger v1.58.0 // indirect + github.com/jcmturner/aescts/v2 v2.0.0 // indirect + github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect + github.com/jcmturner/gofork v1.7.6 // indirect + github.com/jcmturner/gokrb5/v8 v8.4.4 // indirect + github.com/jcmturner/rpc/v2 v2.0.3 // indirect github.com/jhump/protoreflect v1.8.3-0.20210616212123-6cc1efa697ca // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -295,15 +341,14 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/karrick/godirwalk v1.17.0 // indirect github.com/klauspost/compress v1.17.9 // indirect - github.com/knadh/koanf v1.5.0 // indirect - github.com/knadh/koanf/v2 v2.1.1 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-syslog/v4 v4.1.0 // indirect github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b // indirect + github.com/lightstep/go-expohisto v1.0.0 // indirect github.com/linode/linodego v1.33.0 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -323,6 +368,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/naoina/go-stringutil v0.1.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs v0.103.0 // indirect @@ -335,13 +381,18 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/pdatautil v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.103.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.103.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.103.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.103.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/opencontainers/runc v1.1.12 // indirect @@ -349,14 +400,18 @@ require ( github.com/opencontainers/selinux v1.11.0 // indirect github.com/openshift/api v3.9.0+incompatible // indirect github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142 // indirect + github.com/openzipkin/zipkin-go v0.4.3 // indirect github.com/ovh/go-ovh v1.4.3 // indirect github.com/philhofer/fwd v1.1.1 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect github.com/prometheus/procfs v0.15.0 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/relvacode/iso8601 v1.4.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.11.0 // indirect github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1 // indirect @@ -382,9 +437,13 @@ require ( github.com/vjeantet/grok v1.0.1 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/wavefronthq/wavefront-sdk-go v0.9.10 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.2 // indirect + github.com/xdg-go/stringprep v1.0.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.etcd.io/bbolt v1.3.10 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector v0.103.0 // indirect go.opentelemetry.io/collector/config/configauth v0.103.0 // indirect @@ -394,7 +453,6 @@ require ( go.opentelemetry.io/collector/config/confignet v0.103.0 // indirect go.opentelemetry.io/collector/config/configretry v0.103.0 // indirect go.opentelemetry.io/collector/config/internal v0.103.0 // indirect - go.opentelemetry.io/collector/confmap/provider/envprovider v0.103.0 // indirect go.opentelemetry.io/collector/confmap/provider/httpprovider v0.103.0 // indirect go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.103.0 // indirect go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.103.0 // indirect @@ -406,6 +464,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.27.0 // indirect + go.opentelemetry.io/contrib/zpages v0.52.0 // indirect go.opentelemetry.io/otel v1.27.0 // indirect go.opentelemetry.io/otel/bridge/opencensus v1.27.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0 // indirect diff --git a/go.sum b/go.sum index 46f91ff6ee..c2253ef76b 100644 --- a/go.sum +++ b/go.sum @@ -129,7 +129,10 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0 h1:yRhWveg9NbJcJYoJL4FoSauT2dxnt4N9MIAJ7tvU/mQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0/go.mod h1:p2puVVSKjQ84Qb1gzw2XHLs34WQyHTYFZLaVxypAFYs= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/IBM/sarama v1.43.2 h1:HABeEqRUh32z8yzY2hGB/j8mHSzC/HA9zlEjqFNCzSw= +github.com/IBM/sarama v1.43.2/go.mod h1:Kyo4WkF24Z+1nz7xeVUFWIuKVV8RS3wM8mkvPKMdXFQ= github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo= github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= @@ -137,8 +140,8 @@ github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0 github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Mellanox/rdmamap v0.0.0-20191106181932-7c3c4763a6ee h1:atI/FFjXh6hIVlPE1Jup9m8N4B9q/OSbMUe2EBahs+w= github.com/Mellanox/rdmamap v0.0.0-20191106181932-7c3c4763a6ee/go.mod h1:jDA6v0TUYrFEIAE5uGJ29LQOeONIgMdP4Rkqb8HUnPM= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.12.0-rc.3 h1:5GNGrobGs/sN/0nFO21W9k4lFn+iXXZAE8fCZbmdRak= github.com/Microsoft/hcsshim v0.12.0-rc.3/go.mod h1:WuNfcaYNaw+KpCEsZCIM6HCEmu0c5HfXpi+dDSmveP0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -146,8 +149,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/sarama v1.32.0 h1:P+RUjEaRU0GMMbYexGMDyrMkLhbbBVUVISDywi+IlFU= -github.com/Shopify/sarama v1.32.0/go.mod h1:+EmJJKZWVT/faR9RcOxJerP+LId4iWdQPBGLy1Y1Njs= +github.com/Shopify/sarama v1.37.2 h1:LoBbU0yJPte0cE5TZCGdlzZRmMgMtZU/XgnUKZg9Cv4= +github.com/Shopify/sarama v1.37.2/go.mod h1:Nxye/E+YPru//Bpaorfhc3JsSGYwCaDDj+R4bK52U5o= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM= github.com/Showmax/go-fqdn v1.0.0/go.mod h1:SfrFBzmDCtCGrnHhoDjuvFnKsWjEQX/Q9ARZvOrJAko= @@ -237,8 +240,8 @@ github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/ github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw= github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO5IONw= github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= -github.com/apache/thrift v0.17.0 h1:cMd2aj52n+8VoAtvSvLn4kDC3aZ6IAkBuqWQ2IDu7wo= -github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q= +github.com/apache/thrift v0.20.0 h1:631+KvYbsBZxmuJjYwhezVsrfc/TbqtZV4QcxOX1fOI= +github.com/apache/thrift v0.20.0/go.mod h1:hOk1BQqcp2OLzGsyVXdfMk7YFlMxK3aoEVhjD06QhB8= github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3 h1:Bmjk+DjIi3tTAU0wxGaFbfjGUqlxxSXARq9A96Kgoos= github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3/go.mod h1:KASm+qXFKs/xjSoWn30NrWBBvdTTQq+UjkhjEJHfSFA= github.com/aristanetworks/goarista v0.0.0-20190325233358-a123909ec740 h1:FD4/ikKOFxwP8muWDypbmBWc634+YcAs3eBrYAmRdZY= @@ -255,30 +258,30 @@ github.com/aws/aws-sdk-go v1.48.6 h1:hnL/TE3eRigirDLrdRE9AWE1ALZSVLAsC4wK8TGsMqk github.com/aws/aws-sdk-go v1.48.6/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.23.0 h1:PiHAzmiQQr6JULBUdvR8fKlA+UPKLT/8KbiqpFBWiAo= -github.com/aws/aws-sdk-go-v2 v1.23.0/go.mod h1:i1XDttT4rnf6vxc9AuskLc6s7XBee8rlLilKlc03uAA= +github.com/aws/aws-sdk-go-v2 v1.27.0 h1:7bZWKoXhzI+mMR/HjdMx8ZCC5+6fY0lS5tr0bbgiLlo= +github.com/aws/aws-sdk-go-v2 v1.27.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13 h1:OPLEkmhXf6xFPiz0bLeDArZIDx1NNS4oJyG4nv3Gct0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13/go.mod h1:gpAbvyDGQFozTEmlTFO8XcQKHzubdq0LzRyJpG6MiXM= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/config v1.25.1 h1:YsjngBOl2mx4l3egkVWndr6/6TqtkdsWJFZIsQ924Ek= -github.com/aws/aws-sdk-go-v2/config v1.25.1/go.mod h1:yV6h7TRVzhdIFmUk9WWDRpWwYGg1woEzKr0k1IYz2Tk= +github.com/aws/aws-sdk-go-v2/config v1.27.16 h1:knpCuH7laFVGYTNd99Ns5t+8PuRjDn4HnnZK48csipM= +github.com/aws/aws-sdk-go-v2/config v1.27.16/go.mod h1:vutqgRhDUktwSge3hrC3nkuirzkJ4E/mLj5GvI0BQas= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/credentials v1.16.1 h1:WessyrdgyFN5TB+eLQdrFSlN/3oMnqukIFhDxK6z8h0= -github.com/aws/aws-sdk-go-v2/credentials v1.16.1/go.mod h1:RQJyPxKcr+m4ArlIG1LUhMOrjposVfzbX6H8oR6oCgE= +github.com/aws/aws-sdk-go-v2/credentials v1.17.16 h1:7d2QxY83uYl0l58ceyiSpxg9bSbStqBC6BeEeHEchwo= +github.com/aws/aws-sdk-go-v2/credentials v1.17.16/go.mod h1:Ae6li/6Yc6eMzysRL2BXlPYvnrLLBg3D11/AmOjw50k= github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.2.0 h1:8kvinmbIDObqsWegKP0JjeanYPiA4GUVpAtciNWE+jw= github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.2.0/go.mod h1:UVFtSYSWCHj2+brBLDHUdlJXmz8LxUpZhA+Ewypc+xQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4 h1:9wKDWEjwSnXZre0/O3+ZwbBl1SmlgWYBbrTV10X/H1s= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4/go.mod h1:t4i+yGHMCcUNIX1x7YVYa6bH/Do7civ5I6cG/6PMfyA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3 h1:dQLK4TjtnlRGb0czOht2CevZ5l6RSyRWAnKeGd7VAFE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.3/go.mod h1:TL79f2P6+8Q7dTsILpiVST+AL9lkF6PPGI167Ny0Cjw= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59 h1:E3Y+OfzOK1+rmRo/K2G0ml8Vs+Xqk0kOnf4nS0kUtBc= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59/go.mod h1:1M4PLSBUVfBI0aP+C9XI7SM6kZPCGYyI6izWz0TGprE= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3 h1:DUwbD79T8gyQ23qVXFUthjzVMTviSHi3y4z58KvghhM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3/go.mod h1:7sGSz1JCKHWWBHq98m6sMtWQikmYPpxjqOydDemiVoM= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3 h1:AplLJCtIaUZDCbr6+gLYdsYNxne4iuaboJhVt9d+WXI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3/go.mod h1:ify42Rb7nKeDDPkFjKn7q1bPscVPu/+gmHH8d2c+anU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7 h1:lf/8VTF2cM+N4SLzaYJERKEWAXq8MOMpZfU6wEPWsPk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.7/go.mod h1:4SjkU7QiqK2M9oozyMzfZ/23LmUY+h3oFqhdeP5OMiI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7 h1:4OYVp0705xu8yjdyoWix0r9wPIRXnIzzOoUpQVHIJ/g= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.7/go.mod h1:vd7ESTEvI76T2Na050gODNmNU7+OyKrIKroYTu4ABiI= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0 h1:usgqiJtamuGIBj+OvYmMq89+Z1hIKkMJToz1WpoeNUY= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.4 h1:6lJvvkQ9HmbHZ4h/IEwclwv2mrTW8Uq1SOB/kXy0mfw= github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.4/go.mod h1:1PrKYwxTM+zjpw9Y41KFtoJCQrJ34Z47Y4VgVbfndjo= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= @@ -291,15 +294,15 @@ github.com/aws/aws-sdk-go-v2/service/dynamodb v1.14.0 h1:P+eF8PKkeaiTfN/VBe5GI3u github.com/aws/aws-sdk-go-v2/service/dynamodb v1.14.0/go.mod h1:15NiwrGGBpsC7C3zScmoaqNo1QJ9SRjdM5jxEPnCUR8= github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.4.0 h1:QbFWJr2SAyVYvyoOHvJU6sCGLnqNT94ZbWElJMEI1JY= github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.4.0/go.mod h1:bYsEP8w5YnbYyrx/Zi5hy4hTwRRQISSJS3RWrsGRijg= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1 h1:rpkF4n0CyFcrJUG/rNNohoTmhtWlFTRI4BsZOh9PvLs= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1/go.mod h1:l9ymW25HOqymeU2m1gbUQ3rUIsTwKs8gYHXkqDQUhiI= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.36 h1:eev2yZX7esGRjqRbnVk1UxMLw4CyVZDpZXRCcy75oQk= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.36/go.mod h1:lGnOkH9NJATw0XEPcAknFBj3zzNTEGRHtSw+CwC1YTg= github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.6 h1:JGrc3+kkyr848/wpG2+kWuzHK3H4Fyxj2jnXj8ijQ/Y= github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.6/go.mod h1:zwvTysbXES8GDwFcwCPB8NkC+bCdio1abH+E+BRe/xg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3 h1:kJOolE8xBAD13xTCgOakByZkyP4D/owNmvEiioeUNAg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3/go.mod h1:Owv1I59vaghv1Ax8zz8ELY8DN7/Y0rGS+WWAmjgi950= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9/go.mod h1:aVMHdE0aHO3v+f/iw01fmXV/5DbfQ3Bi9nN7nd9bE9Y= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4 h1:v0jkRigbSD6uOdwcaUQmgEwG1BkPfAPDqaeNt/29ghg= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4/go.mod h1:LhTyt8J04LL+9cIt7pYJ5lbS/U98ZmXovLOR/4LUsk8= github.com/aws/aws-sdk-go-v2/service/kinesis v1.13.0 h1:wqLvwC4qdrrGikudu8Z9X2sb79BYUYWAgMF5BGFQJY8= @@ -307,18 +310,18 @@ github.com/aws/aws-sdk-go-v2/service/kinesis v1.13.0/go.mod h1:RCOtKdXlUfirtaxlH github.com/aws/aws-sdk-go-v2/service/s3 v1.40.0 h1:wl5dxN1NONhTDQD9uaEvNsDRX29cBmGED/nl0jkWlt4= github.com/aws/aws-sdk-go-v2/service/s3 v1.40.0/go.mod h1:rDGMZA7f4pbmTtPOk5v5UM2lmX6UAbRnMDJeDvnH7AM= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sso v1.17.2 h1:V47N5eKgVZoRSvx2+RQ0EpAEit/pqOhqeSQFiS4OFEQ= -github.com/aws/aws-sdk-go-v2/service/sso v1.17.2/go.mod h1:/pE21vno3q1h4bbhUOEi+6Zu/aT26UK2WKkDXd+TssQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2 h1:sMAcO7VHVw28HTAdZpTULDzFirHOsVm/x25CxhUH0jA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2/go.mod h1:dWqm5G767qwKPuayKfzm4rjzFmVjiBFbOJrpSPnAMDs= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.9 h1:aD7AGQhvPuAxlSUfo0CWU7s6FpkbyykMhGYMvlqTjVs= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.9/go.mod h1:c1qtZUWtygI6ZdvKppzCSXsDOq5I4luJPZ0Ud3juFCA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3 h1:Pav5q3cA260Zqez42T9UhIlsd9QeypszRPwC9LdSSsQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.3/go.mod h1:9lmoVDVLz/yUZwLaQ676TK02fhCu4+PgRSmMaKR1ozk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/aws-sdk-go-v2/service/sts v1.25.2 h1:vwyiRTnXLqsak/6WAQ+uTRhVqKI6vxUQ0HJXjKij0zM= -github.com/aws/aws-sdk-go-v2/service/sts v1.25.2/go.mod h1:4EqRHDCKP78hq3zOnmFXu5k0j4bXbRFfCh/zQ6KnEfQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.10 h1:69tpbPED7jKPyzMcrwSvhWcJ9bPnZsZs18NT40JwM0g= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.10/go.mod h1:0Aqn1MnEuitqfsCNyKsdKLhDUOr4txD/g19EfiUqgws= github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.13.6 h1:HwNzaXr3lHe3YPEyyx7Fh41CZplz6G1YqB3OR0FJ2iw= github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.13.6/go.mod h1:akrYtxss20JAwAF/VzsUJRHf210HwuLZpUy1Njrgpe0= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aws/smithy-go v1.17.0 h1:wWJD7LX6PBV6etBUwO0zElG0nWN9rUhp0WdYeHSHAaI= -github.com/aws/smithy-go v1.17.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= +github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= +github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/aws/telegraf v0.10.2-0.20241003164222-69e43c131d55 h1:jZcQmduv+lpJnwfWd/kkd3jiqeCJHfgYY6/om99e3BE= github.com/aws/telegraf v0.10.2-0.20241003164222-69e43c131d55/go.mod h1:EuipXfoVhMPIMfNPLyHP9X2IQGwOXhwysPXUuosAFts= github.com/aws/telegraf/patches/gopsutil/v3 v3.0.0-20231109213610-a8c21c54a2be h1:sF6OUdk1hpuX7lf74vn+zBUFtQRe+hky0jmMYyFp5Kk= @@ -341,6 +344,8 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI= github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6Lpu7OAUPR60cds= github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= @@ -447,10 +452,11 @@ github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0 h1:q2Ayh9s6Cr75bS5URiOUAoyFXemgKQaBJphbhAaJHCY= github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0/go.mod h1:qw0E9EJ0PnSlhWawDNuqE0zhc1hqOBUCFIAj3dd9DNw= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= -github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= +github.com/eapache/go-resiliency v1.6.0 h1:CqGDTLtpwuWKn6Nj3uNUdflaq+/kIPsg0gfNzHton30= +github.com/eapache/go-resiliency v1.6.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 h1:Oy0F4ALJ04o5Qqpdz8XLIpNA3WM/iSIXqxtqo7UGVws= +github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0= github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/eclipse/paho.mqtt.golang v1.3.5 h1:sWtmgNxYM9P2sP+xEItMozsR3w0cqZFlqnNN1bdl41Y= @@ -492,6 +498,8 @@ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.11.0/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= @@ -532,8 +540,8 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +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= @@ -584,6 +592,8 @@ github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -699,9 +709,13 @@ github.com/gophercloud/gophercloud v1.8.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgz github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -714,6 +728,8 @@ github.com/grid-x/modbus v0.0.0-20211113184042-7f2251c342c9 h1:Q7e9kXS3sRbTjsNDK github.com/grid-x/modbus v0.0.0-20211113184042-7f2251c342c9/go.mod h1:qVX2WhsI5xyAoM6I/MV1bXSKBPdLAjp7pCvieO/S0AY= github.com/grid-x/serial v0.0.0-20211107191517-583c7356b3aa h1:Rsn6ARgNkXrsXJIzhkE4vQr5Gbx2LvtEMv4BJOK4LyU= github.com/grid-x/serial v0.0.0-20211107191517-583c7356b3aa/go.mod h1:kdOd86/VGFWRrtkNwf1MPk0u1gIjc4Y7R2j7nhwc7Rk= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= @@ -774,6 +790,7 @@ github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjG github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -786,6 +803,7 @@ github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iP github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= @@ -861,8 +879,8 @@ github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.18.3 h1:dE2/TrEsGX3RBprb3qryqSV9Y60iZN1C6i8IrmW9/BA= github.com/jackc/pgx/v4 v4.18.3/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= -github.com/jaegertracing/jaeger v1.38.0 h1:rDQ36TnSxUX4gTskMQzEdpieS0BGYdfXXnUJmGnNMGw= -github.com/jaegertracing/jaeger v1.38.0/go.mod h1:4MBTMxfCp3d4buDLxRlHnESQvTFCkN16OUIeE9BEdl4= +github.com/jaegertracing/jaeger v1.58.0 h1:aslb9VilVaddzHUA618PUtAaO3GblA7hlyItfwtzAe0= +github.com/jaegertracing/jaeger v1.58.0/go.mod h1:2qpJpm9BzpbxNpaillaCA4pvdAIRTJT0ZRxrzMglBlo= github.com/james4k/rcon v0.0.0-20120923215419-8fbb8268b60a h1:JxcWget6X/VfBMKxPIc28Jel37LGREut2fpV+ObkwJ0= github.com/james4k/rcon v0.0.0-20120923215419-8fbb8268b60a/go.mod h1:1qNVsDcmNQDsAXYfUuF/Z0rtK5eT8x9D6Pi7S3PjXAg= github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww= @@ -871,10 +889,12 @@ github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFK github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8= -github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA= -github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= +github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jellydator/ttlcache/v3 v3.2.0 h1:6lqVJ8X3ZaUwvzENqPAobDsXNExfUJd61u++uW8a3LE= @@ -944,10 +964,13 @@ github.com/leodido/go-syslog/v4 v4.1.0 h1:Wsl194qyWXr7V6DrGWC3xmxA9Ra6XgWO+toNt2 github.com/leodido/go-syslog/v4 v4.1.0/go.mod h1:eJ8rUfDN5OS6dOkCOBYlg2a+hbAg6pJa99QXXgMrd98= github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b h1:11UHH39z1RhZ5dc4y4r/4koJo6IYFgTRMe/LlwRTEw0= github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= +github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8LbfQI7cA4= +github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/linode/linodego v1.33.0 h1:cX2FYry7r6CA1ujBMsdqiM4VhvIQtnWsOuVblzfBhCw= github.com/linode/linodego v1.33.0/go.mod h1:dSJJgIwqZCF5wnpuC6w5cyIbRtcexAm7uVvuJopGB40= -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/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY= +github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -1097,8 +1120,8 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.2 h1:HFB2fbVIlhIfCfOW81bZFbiC/RvnpXSdhbF2/DJr134= github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= @@ -1110,10 +1133,22 @@ github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je4 github.com/onsi/gomega v1.31.0 h1:54UJxxj6cPInHS3a35wm6BK/F9nHYueZ1NVujHDrnXE= github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.103.0 h1:N4+Kxr4WZ4HNuU334NaqAAjngG/IRkSTGCl9c5H+QY0= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.103.0/go.mod h1:3rtBpjlTpg3s+bXPNM/7o7IQZQYtwytrz9PEF+ISz8E= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.103.0 h1:blcAZWoZ9vqDvr1pT/Q5RfYYNOcOd71oaKFI2m4P4Hc= github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.103.0/go.mod h1:FXy3BBa2RwAVHa8M5pTX6vFLouFAh3Ly9bAvnTAp0nk= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.103.0 h1:TV8mINcQEHPk0J2Kd7XtfAfRliG+3s6ZMh7y2Lcqpz8= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.103.0/go.mod h1:sH1bocIM8yLuCVVla8O5ks4zP4Dkqc5opUVAGHlYTRg= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.103.0 h1:lPWHqPCvbxKgUTt3S3+iOyOmXmVbyAGnTsxwaMsrZ/o= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.103.0/go.mod h1:/z9fz5nO64sd85uaT4HGkGjvDjXXVIBM6pd6Tu2z3yY= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.103.0 h1:gVV1vTJwKddA4hTjtgCbrEzk2kqwzf06jpNhDx6LM1M= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.103.0/go.mod h1:bTvEM8TGaBfTKk9bCBOwmLgIU6yn/eaYhF6aMxFABBw= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.103.0 h1:IxdgFhb+aksBh6C/o43Xg+avMKFh7l8lD9bTnt7Sl3M= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.103.0/go.mod h1:z0RN7piB4aQju5UCqqU0h5Xm73K5fwCDrNfpohEaR7U= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.103.0 h1:txNSkgEEmDyrasuGO9egQ+58i+7P/mJKdHmSHg0sO4c= github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.103.0/go.mod h1:XtRqfouM/9owDyCIi2TksmSc1sfLGmLRiFhyQ7KFS6w= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/filestorage v0.103.0 h1:iEreRkHc4UI6cKeTMqFKhCusa7q8BnmJcHFNmJFaBwk= +github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/filestorage v0.103.0/go.mod h1:piJxxco+5cKjsAEWv5hh9YLK4FZbajXXNW5hTxptEL4= github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.103.0 h1:hdSxvwF/v3XJMWvYGlBrhewIW5zsbNLmwHeEJdTBJuU= github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.103.0/go.mod h1:oGXp5qTdFmHgnm+J8v9wyjRAozZg11M8puiOZa0d+W8= github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.103.0 h1:zsfP29smagu0yh4nan/xq2WKYOegjNvSrbj6mTErnaA= @@ -1122,10 +1157,16 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.103 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.103.0/go.mod h1:2Zksmb1fF+4ksNsOxSVrHz5IoC/2ljvtqJGzy7qe8+E= github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.103.0 h1:HIhw3poxC0r5NyOOvO5m+yCnXWBaOvRfkq3XGs+Ag58= github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.103.0/go.mod h1:5Y5wUGq+NNIgvkj3qNSsS3QJx3KiU4DfUFbMrlMlPsQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8stest v0.103.0 h1:vSHoHLveqT9NULaIdIbfPgEvJ0e+UkBitb3dnawmunc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8stest v0.103.0/go.mod h1:hCzgpzXbUUDUlETMDKYOpPaOhPjR9T6M3W3nAW5cGX4= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.103.0 h1:gksMpwy9oZN14E4kRBfLtVkE8YJn++7woM1b3hQboJg= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.103.0/go.mod h1:OLpJzn4LgzICAnyu+7mJ33rM2WOgPWpjXvZ6YKrJ6yM= github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.103.0 h1:Q5b1ZIjQf5EGKAQSJa6XfHWt/TDaNs+qldqdpYK+ovo= github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.103.0/go.mod h1:VDyjNiPEI3G3IJ7CwxU6zCTErB7KovQh6l51eePAPWc= github.com/open-telemetry/opentelemetry-collector-contrib/internal/pdatautil v0.103.0 h1:5PHQ2a5VsqXDZBmso84fLDzT66GV0mqDT5JCB07W8Ws= github.com/open-telemetry/opentelemetry-collector-contrib/internal/pdatautil v0.103.0/go.mod h1:oU1oils/dQVq3E3h7e3afFEXfCSmwniEK/NlEByaJWY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.103.0 h1:JjHxUTE7cbrqddMLueLhVcWbxxr9INLf5sIsRBcuPUE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.103.0/go.mod h1:DQUw8EmCHCqTIBfHo5Fe7MyYLXSWdInDrKkINhOMuPk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.103.0 h1:GMx3/P287NuWOJH22eLCtaJ1ATW8BoOZL6GjINUAVYI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.103.0/go.mod h1:xGM9aD/2Dww/WKg5ei7a43TRSWuVwgMO9NPjPbgtmT8= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.103.0 h1:angDCU0CPBLu2fAi7r7yCEWxRKthhNnYnMugdiULmvw= @@ -1136,22 +1177,58 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.103.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.103.0/go.mod h1:o8BPP4DM2SkdkPJxJOdmgxKz5DftGcuyUXgqf5MoWAw= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0 h1:imXTMt9ravkIqcvvow0ya3aQh64OOiQpMOyWeG/SLDQ= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.103.0/go.mod h1:DR/fbOxaIyobmsd8nbDzuwqwwSNX9+yONDWx8dF2qS4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.103.0 h1:L1DCWusakqlxHC/5yfAfq4c5og1kFdJKV0jcw7FDdoE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.103.0/go.mod h1:Ok6bUxGfoGMUBvO0Lwgp3xsHHKqe0TMq4juIl7X3Oxo= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.103.0 h1:GiP0syg12+MrI5IpL8Qt+rQktWDMsP0/8Nu9qmMtscw= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure v0.103.0/go.mod h1:akYmkj+fLA32/LkQTJM9KIqaOvtsyjLV1NZkFU1E6w8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.103.0 h1:diJ27fBrfu/oOW0bv8q3BWbVmjNLMBJF2RgzSq6KRgI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.103.0/go.mod h1:u8Ell52AGRzNA5RjfaunzYQWBb+7tKb3ZlAQJyQzNXM= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.103.0 h1:MquBpfLZRaGnQeeIF3Kn+bQNXRLZtKTWGEysbNnxcRo= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.103.0/go.mod h1:+3rCl7Z3Zm4ZZOyX9lMmaAoN8NeeCXUOmR/tysR631g= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.103.0 h1:2Fxuu4RbroXQFpUB/ZuZXyUb4QoL8XgOe7KlkK3TxHU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.103.0/go.mod h1:o3ju9lTtG+PnSjffls/sEGvgfYMG1jZZeT1h0rzI+T4= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.103.0 h1:c5sOZWBMD/gyKxqwGgS6cwLdvkg6W8I3/0RZOm84xA0= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.103.0/go.mod h1:2CG+06d3sh+O36maAs2TPAbNRXZ0zcqY2kH5pEABrzg= github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.103.0 h1:xerHvPmP765eM4U5eaSvfRpXiV3ioCJjLR5ydi6BgVs= github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.103.0/go.mod h1:5yUxKVs+fx/MtDkGKlJWOTnOZIgOYdE+Zpya3mAdaQw= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.103.0 h1:ZFyDkChccGaT717u7CnMaMOPERr0d2tlJvOrSlDGNbM= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.103.0/go.mod h1:cElQF63Syrv/yugPAe5ho/BofKJoy0YSLuH8JYEQEvc= github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.103.0 h1:u2ZcBCuOXpD7FIm+LZrhEMhi/Ny/mhivAfuCUpPzrUg= github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.103.0/go.mod h1:9n3OvWN10XXyg+o71jeuO94u8mEWOI90Vg8y3M7zpE0= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.103.0 h1:Y8sviHpNWaWnCZe1d/1myw5hvFnfoa+PFQCyNvGt7Sc= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.103.0/go.mod h1:fcpYaH7c0/yT5dg2ACJdqv7w/sT/MB9azoB9kApYzJg= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.103.0 h1:v19lfgrsflmimm0LGOZoB51eNO0305Yud6LCnhS7LPY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.103.0/go.mod h1:Z8OvUd7UJJpyXT2O5ma8QT42NfkP/7Q0l1oxStJ/5MY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.103.0 h1:nGxoV0yVFNJOS7jGRAdkSHEUBONHp7Sd8kbP/WP64go= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.103.0/go.mod h1:T1+fAkPFvDPsOxmyrNSm8t5yAsvM6S1k3Fh1N2WiWas= github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.103.0 h1:2IanPrPrTN3YYbxGSiF8axwE0+C+bJ9rKO2hvuG9uf8= github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.103.0/go.mod h1:AH3r6xo/87nV1QNMDNamuFYIMwEfSLma06KdjEzxRdU= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.103.0 h1:70OJ27PhAZ7R846ppiimDFqIzOzdwjyG8+lT/+yzWIE= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.103.0/go.mod h1:3WvuN4AKL9K70la+X2y0d+kKLrydOfDp5y1WgUyZSgE= github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.103.0 h1:Gg2j3yN2iCQYwK+464RyVvmX+QyjjdXL3JpG+6BfDAQ= github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.103.0/go.mod h1:4nxV+BIA4LLyjhFeuUuLlY7iza+PyySjKz4PfL44SRQ= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.103.0 h1:DPhJng0ihuSPKxfBxU5eb1Af4Poc8GhrLTWlM+VA8w8= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.103.0/go.mod h1:26cGSuPjOkGmHT9n54eHLRwKl9vU/Ave0UlWo13Pqfs= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.103.0 h1:5VFkBkdrGkxBmIL1bpjVHpReGD9Piu1LdH9oJagSnLU= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.103.0/go.mod h1:rSWs+3K3m8AnBBOpl8mu8tY+8ieey/93ZPLiYIAiy5k= github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.103.0 h1:+JRtnmcLjvG0BESXWCQ9PECtTisWtnIT1/DutAdr38U= github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.103.0/go.mod h1:0mYHrHaJZiWfEcYxJCMTs7AlXmnIsC3cDNbSq5e255Q= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.103.0 h1:InzQu+unKUDU/vMkDogPiyN4U/ihdqwxk+5hH0Pwy+M= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.103.0/go.mod h1:lIiRC8VVNxW/ibQcu0UnrV4fg6DWUjoaL2M2PWYhEng= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.103.0 h1:QUsI2cTLs4CLk/TBll1llkzzchmqr2TRANdgMy0Nz/k= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.103.0/go.mod h1:cdJpaBiLfV16LteiKj8iP7snJ6alJy1dVa7FTcC915c= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.103.0 h1:Hblr03Vde7jlnAsLSayhq1VG+gpTfVJNVvZqnx0fwDY= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.103.0/go.mod h1:kY7NC2dfScT9zmss53yuhZNkv7XQGl46yXxTr+xEYPo= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.103.0 h1:/BabP7nnV4cyI1JZNQn5zzCrJymzPpCjCMnCXex0/kU= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.103.0/go.mod h1:TGJchv8xra/30Kz8oaOgvF1XyARtOSYqWowAJ5NxQyI= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.103.0 h1:OQKqCw+kH0uBF4bT+eRwciTKdFcOsa/5zWZr9qHgzkI= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.103.0/go.mod h1:Abr+XCGgD/kZLgA50UBg0vzntqFSeCAzfjtANH02018= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.103.0 h1:cFvf9IuS10isVLVtQWcXdMVe51btEL1SIHA+RYok5yw= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.103.0/go.mod h1:uU1jJXA3/AIxn+yuBIJ+X8RI2wAp3cH25wiRSYY45cM= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.103.0 h1:aMe9gL0XnYcrCp83Yt/87vQc+GqSdLOfS+B2AZUcYQo= github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.103.0/go.mod h1:XZRd7kTx2Yc+4bfvGjiLwYiYluFrMPRDiqgsCCoPOZ8= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.103.0 h1:AvfCPJtrzfAmoF58vTA3pehns51NUEOmulPxrYALroY= +github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.103.0/go.mod h1:WzOea7GxCLC23+HBXHoYwahGC+YJsu066pV4MzUL0fg= github.com/openconfig/gnmi v0.0.0-20180912164834-33a1865c3029 h1:lXQqyLroROhwR2Yq/kXbLzVecgmVeZh2TFLg6OxCd+w= github.com/openconfig/gnmi v0.0.0-20180912164834-33a1865c3029/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -1173,20 +1250,23 @@ github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142/go.mod h1:fjS8 github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= +github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg= +github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c= github.com/ovh/go-ovh v1.4.3 h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0= github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= -github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pion/dtls/v2 v2.2.6 h1:yXMxKr0Skd+Ub6A8UqXTRLSywskx93ooMRHsQUtd+Z4= @@ -1210,8 +1290,9 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -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/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI= +github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -1250,6 +1331,8 @@ github.com/rabbitmq/amqp091-go v1.2.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0V github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/relvacode/iso8601 v1.4.0 h1:GsInVSEJfkYuirYFxa80nMLbH2aydgZpIf52gYZXUJs= +github.com/relvacode/iso8601 v1.4.0/go.mod h1:FlNp+jz+TXpyRqgmM7tnzHHzBnz776kmAH2h3sZCn0I= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= @@ -1268,6 +1351,10 @@ github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFo github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1 h1:ZFfeKAhIQiiOrQaI3/znw0gOmYpO28Tcu1YaqMa/jtQ= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e h1:CGjiMQ0wMH4wtNWrlj6kiTbkPt2F3rbYnhGX6TWLfco= github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.25 h1:/8rfZAdFfafRXOgz+ZpMZZWZ5pYggCY9t7e/BvjaBHM= @@ -1307,14 +1394,22 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9 github.com/snowflakedb/gosnowflake v1.6.21 h1:OEn5/P+voj3P/STW+R/gGktJlEpfP127GzrxvtAJ5II= github.com/snowflakedb/gosnowflake v1.6.21/go.mod h1:P2fE/xiD2kQXpr48OdgnazkzPsKD6aVtnHD3WP8yD9c= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1339,6 +1434,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 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/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/testcontainers/testcontainers-go v0.31.0 h1:W0VwIhcEVhRflwL9as3dhY6jXjVCA27AkmbnZ+UTh3U= @@ -1364,10 +1461,6 @@ github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9f github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twmb/murmur3 v1.1.7 h1:ULWBiM04n/XoN3YMSJ6Z2pHDFLf+MeIVQU71ZPrvbWg= github.com/twmb/murmur3 v1.1.7/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= -github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= -github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= -github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/vapourismo/knx-go v0.0.0-20211128234507-8198fa17db36 h1:JBj2CqnFwBhI3XsdMNn9MjKvehog+p5QZihotqq0Zuo= @@ -1421,6 +1514,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= +go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= @@ -1488,6 +1583,8 @@ go.opentelemetry.io/collector/extension v0.103.0 h1:vTsd+GElvT7qKk9Y9d6UKuuT2Ngx go.opentelemetry.io/collector/extension v0.103.0/go.mod h1:rp2l3xskNKWv0yBCyU69Pv34TnP1QVD1ijr0zSndnsM= go.opentelemetry.io/collector/extension/auth v0.103.0 h1:i7cQl+Ewpve/DIN4rFMg1GiyUPE14LZsYWrJ1RqtP84= go.opentelemetry.io/collector/extension/auth v0.103.0/go.mod h1:JdYBS/EkPAz2APAi8g7xTiSRlZTc7c4H82AQM9epzxw= +go.opentelemetry.io/collector/extension/ballastextension v0.103.0 h1:U8f6b6xnkD04HNIOgqLAWXfCcezSAU2vMq5SMtKjjbo= +go.opentelemetry.io/collector/extension/ballastextension v0.103.0/go.mod h1:/B3xE2YhUgGXSsFH8Qg0kq4WpfkuTyWDJGNyfRgMax8= go.opentelemetry.io/collector/extension/zpagesextension v0.103.0 h1:jgSEQY++zOI6hFQygwuvS6ulJ/Yu4xXgUg+Ijoxx51I= go.opentelemetry.io/collector/extension/zpagesextension v0.103.0/go.mod h1:2OUi0Hp+3zPUJmi7goJ6d1/kGgFAw3SDESRX7xQ0QHE= go.opentelemetry.io/collector/featuregate v1.10.0 h1:krSqokHTp7JthgmtewysqHuOAkcuuZl7G2n91s7HygE= @@ -1504,6 +1601,8 @@ go.opentelemetry.io/collector/processor v0.103.0 h1:YZ+LRuHKtOam7SCeLkJAP6bS1d6X go.opentelemetry.io/collector/processor v0.103.0/go.mod h1:/mxyh0NpJgpZycm7iHDpM7i5PdtWvKKdCZf0cyADJfU= go.opentelemetry.io/collector/processor/batchprocessor v0.103.0 h1:vunxXGq5Pzcawj4QbXKrIOoXLHpPbRbwNBFPR80X0R4= go.opentelemetry.io/collector/processor/batchprocessor v0.103.0/go.mod h1:c5nh1LHVlBFQajCnm/5hwKqAvOLpTTOd2GQyB7lT75E= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.103.0 h1:ZwPULpXaIOmY/Niaia2aNyKc40KZE9jorhN+zm6zijw= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.103.0/go.mod h1:BvAZflYYV3/FoHjVDKYfeyx5/bIqJDaeAaf/JtDmc8w= go.opentelemetry.io/collector/receiver v0.103.0 h1:V3JBKkX+7e/NYpDDZVyeu2VQB1/lLFuoJFPfupdCcZs= go.opentelemetry.io/collector/receiver v0.103.0/go.mod h1:Yybv4ynKFdMOYViWWPMmjkugR89FSQN0P37wP6mX6qM= go.opentelemetry.io/collector/receiver/otlpreceiver v0.103.0 h1:TycVVl4AWioV6kWeFcCIk2QuKfXOzn88yw989opsMdE= @@ -1678,6 +1777,7 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= @@ -1814,6 +1914,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= diff --git a/internal/constants/constants.go b/internal/constants/constants.go index 8f0635bf4a..6d4080ec28 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -4,5 +4,8 @@ package constants const ( + FileSuffixTmp = ".tmp" + FileSuffixYAML = ".yaml" + ExitCodeNoJSONFile = 99 ) diff --git a/internal/merge/confmap/confmap.go b/internal/merge/confmap/confmap.go new file mode 100644 index 0000000000..9b909a1201 --- /dev/null +++ b/internal/merge/confmap/confmap.go @@ -0,0 +1,62 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package confmap + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/knadh/koanf/maps" + "github.com/knadh/koanf/providers/confmap" + "github.com/knadh/koanf/v2" + otelconfmap "go.opentelemetry.io/collector/confmap" + "gopkg.in/yaml.v3" +) + +const ( + KeyDelimiter = otelconfmap.KeyDelimiter +) + +type Conf struct { + k *koanf.Koanf +} + +func New() *Conf { + return &Conf{k: koanf.New(KeyDelimiter)} +} + +func NewFromStringMap(data map[string]any) *Conf { + m := New() + // Cannot return error because the koanf instance is empty. + _ = m.k.Load(confmap.Provider(data, ""), nil) + return m +} + +func (c *Conf) Merge(in *Conf) error { + return c.mergeFromStringMap(in.ToStringMap()) +} + +func (c *Conf) mergeFromStringMap(data map[string]any) error { + return c.k.Load(confmap.Provider(data, ""), nil, koanf.WithMergeFunc(mergeMaps)) +} + +func (c *Conf) ToStringMap() map[string]any { + return maps.Unflatten(c.k.All(), KeyDelimiter) +} + +func LoadConf(path string) (*Conf, error) { + // Clean the path before using it. + content, err := os.ReadFile(filepath.Clean(path)) + if err != nil { + return nil, fmt.Errorf("unable to read the file %v: %w", path, err) + } + + var rawConf map[string]any + if err = yaml.Unmarshal(content, &rawConf); err != nil { + return nil, err + } + + return NewFromStringMap(rawConf), nil +} diff --git a/internal/merge/confmap/confmap_test.go b/internal/merge/confmap/confmap_test.go new file mode 100644 index 0000000000..3b61060653 --- /dev/null +++ b/internal/merge/confmap/confmap_test.go @@ -0,0 +1,61 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package confmap + +import ( + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/aws/amazon-cloudwatch-agent/translator/tocwconfig/toyamlconfig" +) + +func TestMerge(t *testing.T) { + testCases := map[string]struct { + fileNames [2]string + wantErr error + wantConf *Conf + }{ + "WithConflicts": { + fileNames: [2]string{ + filepath.Join("testdata", "base.yaml"), + filepath.Join("testdata", "conflicts.yaml"), + }, + wantErr: &MergeConflictError{ + conflicts: []mergeConflict{ + {section: "receivers", keys: []string{"otlp"}}, + {section: "extensions", keys: []string{"health_check"}}, + {section: "service::pipelines", keys: []string{"traces"}}, + }, + }, + }, + "WithNoConflicts": { + fileNames: [2]string{ + filepath.Join("testdata", "base.yaml"), + filepath.Join("testdata", "merge.yaml"), + }, + wantConf: mustLoadConf(t, filepath.Join("testdata", "base+merge.yaml")), + }, + } + for name, testCase := range testCases { + t.Run(name, func(t *testing.T) { + base := mustLoadConf(t, testCase.fileNames[0]) + conf := mustLoadConf(t, testCase.fileNames[1]) + assert.Equal(t, testCase.wantErr, base.Merge(conf)) + if testCase.wantConf != nil { + got := toyamlconfig.ToYamlConfig(base.ToStringMap()) + want := toyamlconfig.ToYamlConfig(testCase.wantConf.ToStringMap()) + assert.Equal(t, want, got) + } + }) + } +} + +func mustLoadConf(t *testing.T, path string) *Conf { + conf, err := LoadConf(path) + require.NoError(t, err) + return conf +} diff --git a/internal/merge/confmap/merge.go b/internal/merge/confmap/merge.go new file mode 100644 index 0000000000..337f9307a5 --- /dev/null +++ b/internal/merge/confmap/merge.go @@ -0,0 +1,153 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package confmap + +import ( + "fmt" + "reflect" + "strings" + + "github.com/knadh/koanf/maps" +) + +const ( + keyReceivers = "receivers" + keyProcessors = "processors" + keyExporters = "exporters" + keyExtensions = "extensions" + keyService = "service" + keyPipelines = "pipelines" +) + +var ( + // restrictedSections in the OTEL configuration that cannot have duplicate keys + restrictedSections = [][]string{ + {keyReceivers}, + {keyProcessors}, + {keyExporters}, + {keyExtensions}, + {keyService, keyPipelines}, + } +) + +type mergeConflict struct { + // section where conflict occurs + section string + // keys in the section that have conflicts + keys []string +} + +type MergeConflictError struct { + conflicts []mergeConflict +} + +func (e *MergeConflictError) Error() string { + var conflictStrs []string + for _, conflict := range e.conflicts { + conflictStrs = append(conflictStrs, fmt.Sprintf("%s: %s", conflict.section, conflict.keys)) + } + return fmt.Sprintf("merge conflict in %s", strings.Join(conflictStrs, ", ")) +} + +// mergeMaps checks for conflicts and merges the service before merging the rest of the maps. +func mergeMaps(src, dest map[string]any) error { + mce := &MergeConflictError{} + for _, section := range restrictedSections { + if mc := checkConflicts(src, dest, section); mc != nil { + mce.conflicts = append(mce.conflicts, *mc) + } + } + if len(mce.conflicts) > 0 { + return mce + } + mergeServices(src, dest) + maps.Merge(src, dest) + return nil +} + +// checkConflicts for overlapping keys in the maps at the path. +func checkConflicts(src, dest map[string]any, path []string) *mergeConflict { + srcMap, srcOK := getMapValue[map[string]any](src, path) + destMap, destOK := getMapValue[map[string]any](dest, path) + if !srcOK || !destOK { + return nil + } + var keys []string + for key := range destMap { + if _, ok := srcMap[key]; ok && !reflect.DeepEqual(srcMap[key], destMap[key]) { + keys = append(keys, key) + } + } + if len(keys) > 0 { + return &mergeConflict{section: strings.Join(path, KeyDelimiter), keys: keys} + } + return nil +} + +// mergeServices overwrites the source service::extensions with the merged results. This is because the default +// maps.Merge just sets the destination to the source for slices. +func mergeServices(src, dest map[string]any) { + srcMap, srcOK := getMapValue[map[string]any](src, []string{keyService}) + destMap, destOK := getMapValue[map[string]any](dest, []string{keyService}) + if !srcOK || !destOK { + return + } + results := mergeSlices(srcMap[keyExtensions], destMap[keyExtensions]) + if results != nil { + srcMap[keyExtensions] = results + } +} + +// mergeSlices appends the deduplicated items in the destination to the source slice. +func mergeSlices(src, dest any) any { + if src == nil || dest == nil { + return nil + } + + srcVal := reflect.ValueOf(src) + destVal := reflect.ValueOf(dest) + + if srcVal.Kind() != reflect.Slice || destVal.Kind() != reflect.Slice { + return nil + } + + result := reflect.MakeSlice(srcVal.Type(), 0, srcVal.Len()+destVal.Len()) + for i := 0; i < srcVal.Len(); i++ { + result = reflect.Append(result, srcVal.Index(i)) + } + + for i := 0; i < destVal.Len(); i++ { + item := destVal.Index(i) + if !containsInSlice(result, item) { + result = reflect.Append(result, item) + } + } + return result.Interface() +} + +func containsInSlice(slice, item reflect.Value) bool { + if slice.Kind() != reflect.Slice { + return false + } + for i := 0; i < slice.Len(); i++ { + if slice.Index(i).Equal(item) { + return true + } + } + return false +} + +// getMapValue uses maps.Search to find the value at the path and casts it. +func getMapValue[T any](m map[string]any, path []string) (T, bool) { + var zeroValue T + found := maps.Search(m, path) + if found == nil { + return zeroValue, false + } + cast, ok := found.(T) + if !ok { + return zeroValue, false + } + return cast, true +} diff --git a/internal/merge/confmap/merge_test.go b/internal/merge/confmap/merge_test.go new file mode 100644 index 0000000000..642579bcc4 --- /dev/null +++ b/internal/merge/confmap/merge_test.go @@ -0,0 +1,20 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package confmap + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestMergeConflictError(t *testing.T) { + mce := &MergeConflictError{ + conflicts: []mergeConflict{ + {section: "one", keys: []string{"two", "three"}}, + {section: "four", keys: []string{"five"}}, + }, + } + assert.Equal(t, "merge conflict in one: [two three], four: [five]", mce.Error()) +} diff --git a/internal/merge/confmap/testdata/base+merge.yaml b/internal/merge/confmap/testdata/base+merge.yaml new file mode 100644 index 0000000000..a001aa3cac --- /dev/null +++ b/internal/merge/confmap/testdata/base+merge.yaml @@ -0,0 +1,42 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: localhost:4317 + otlp/http: + protocols: + http: + endpoint: localhost:4318 + +processors: + batch: + +exporters: + debug: + debug/metrics: + nop: + +extensions: + health_check: + endpoint: localhost:1234 + nop: + pprof: + zpages: + +service: + extensions: + - pprof + - zpages + - health_check + - nop + pipelines: + metrics: + receivers: [statsd, otlp/http] + exporters: [debug/metrics] + traces: + receivers: [otlp] + processors: [batch] + exporters: [nop] + traces/debug: + receivers: [otlp] + exporters: [debug] \ No newline at end of file diff --git a/internal/merge/confmap/testdata/base.yaml b/internal/merge/confmap/testdata/base.yaml new file mode 100644 index 0000000000..7c81c31846 --- /dev/null +++ b/internal/merge/confmap/testdata/base.yaml @@ -0,0 +1,28 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: localhost:4317 + +processors: + batch: + +exporters: + debug: + nop: + +extensions: + health_check: + endpoint: localhost:1234 + nop: + +service: + extensions: [health_check,nop] + pipelines: + traces: + receivers: [otlp] + processors: [batch] + exporters: [nop] + traces/debug: + receivers: [otlp] + exporters: [debug] \ No newline at end of file diff --git a/internal/merge/confmap/testdata/conflicts.yaml b/internal/merge/confmap/testdata/conflicts.yaml new file mode 100644 index 0000000000..8bcded9fb9 --- /dev/null +++ b/internal/merge/confmap/testdata/conflicts.yaml @@ -0,0 +1,23 @@ +receivers: + statsd: + otlp: + protocols: + http: + endpoint: localhost:4318 + +exporters: + debug: + nop: + +extensions: + health_check: + endpoint: localhost:5678 + pprof: + zpages: + +service: + extensions: [health_check, pprof, zpages] + pipelines: + traces: + receivers: [statsd, otlp] + exporters: [debug] \ No newline at end of file diff --git a/internal/merge/confmap/testdata/merge.yaml b/internal/merge/confmap/testdata/merge.yaml new file mode 100644 index 0000000000..f7ba3795cf --- /dev/null +++ b/internal/merge/confmap/testdata/merge.yaml @@ -0,0 +1,23 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: localhost:4317 + otlp/http: + protocols: + http: + endpoint: localhost:4318 + +exporters: + debug/metrics: + +extensions: + pprof: + zpages: + +service: + extensions: [pprof, zpages] + pipelines: + metrics: + receivers: [statsd, otlp/http] + exporters: [debug/metrics] \ No newline at end of file diff --git a/internal/util/config/config.go b/internal/util/config/config.go new file mode 100644 index 0000000000..408b134add --- /dev/null +++ b/internal/util/config/config.go @@ -0,0 +1,44 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package config + +import ( + "io/fs" + "path/filepath" + + "github.com/aws/amazon-cloudwatch-agent/internal/constants" + "github.com/aws/amazon-cloudwatch-agent/tool/paths" +) + +const ( + otelConfigFlagName = "-otelconfig" +) + +// GetOTELConfigArgs creates otelconfig argument pairs for all YAML paths in the directory along with the agent YAML +// path as the last pair. +func GetOTELConfigArgs(dir string) []string { + configs := getSortedYAMLs(dir) + configs = append(configs, paths.YamlConfigPath) + args := make([]string, 0, 2*len(configs)) + for _, config := range configs { + args = append(args, otelConfigFlagName, config) + } + return args +} + +// getSortedYAMLs gets an ordered slice of all the YAML files in the directory. Uses filepath.WalkDir which walks the +// files in lexical order making the result deterministic. +func getSortedYAMLs(dir string) []string { + var configs []string + _ = filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { + if d.IsDir() { + return nil + } + if filepath.Ext(path) == constants.FileSuffixYAML { + configs = append(configs, path) + } + return nil + }) + return configs +} diff --git a/internal/util/config/config_test.go b/internal/util/config/config_test.go new file mode 100644 index 0000000000..bbd97ec759 --- /dev/null +++ b/internal/util/config/config_test.go @@ -0,0 +1,46 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package config + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/aws/amazon-cloudwatch-agent/tool/paths" +) + +func TestGetOTELConfigArgs(t *testing.T) { + dir := t.TempDir() + // skipped + require.NoError(t, os.Mkdir(filepath.Join(dir, "bunchofyaml"), 0644)) + for _, name := range []string{ + "foo.yaml", + "bar.yaml", + "not-yaml", // skipped + "ignore.json", // skipped + "baz.yaml", + "1.yaml", + "2.yaml", + "11.yaml", + } { + f, err := os.Create(filepath.Join(dir, name)) + require.NoError(t, err) + require.NoError(t, f.Close()) + } + got := GetOTELConfigArgs(dir) + assert.Len(t, got, 14) + assert.Equal(t, []string{ + "-otelconfig", filepath.Join(dir, "1.yaml"), + "-otelconfig", filepath.Join(dir, "11.yaml"), + "-otelconfig", filepath.Join(dir, "2.yaml"), + "-otelconfig", filepath.Join(dir, "bar.yaml"), + "-otelconfig", filepath.Join(dir, "baz.yaml"), + "-otelconfig", filepath.Join(dir, "foo.yaml"), + "-otelconfig", paths.YamlConfigPath, + }, got) +} diff --git a/service/configprovider/flags.go b/service/configprovider/flags.go new file mode 100644 index 0000000000..dc62bd2920 --- /dev/null +++ b/service/configprovider/flags.go @@ -0,0 +1,23 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package configprovider + +import ( + "fmt" +) + +const ( + OtelConfigFlagName = "otelconfig" +) + +type OtelConfigFlags []string + +func (o *OtelConfigFlags) String() string { + return fmt.Sprint(*o) +} + +func (o *OtelConfigFlags) Set(value string) error { + *o = append(*o, value) + return nil +} diff --git a/service/configprovider/flags_test.go b/service/configprovider/flags_test.go new file mode 100644 index 0000000000..def70653e6 --- /dev/null +++ b/service/configprovider/flags_test.go @@ -0,0 +1,19 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: MIT + +package configprovider + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestSetAndString(t *testing.T) { + var fOtelConfigs OtelConfigFlags + err := fOtelConfigs.Set("otelconfig1.yaml") + assert.NoError(t, err) + err = fOtelConfigs.Set("otelconfig2.yaml") + assert.NoError(t, err) + assert.Equal(t, "[otelconfig1.yaml otelconfig2.yaml]", fOtelConfigs.String()) +} diff --git a/service/configprovider/provider.go b/service/configprovider/provider.go index 842a70c824..de5b0767b9 100644 --- a/service/configprovider/provider.go +++ b/service/configprovider/provider.go @@ -6,16 +6,20 @@ package configprovider import ( "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/converter/expandconverter" + "go.opentelemetry.io/collector/confmap/provider/envprovider" "go.opentelemetry.io/collector/confmap/provider/fileprovider" "go.opentelemetry.io/collector/otelcol" "go.uber.org/zap" ) -func GetSettings(configPath string, logger *zap.Logger) otelcol.ConfigProviderSettings { +func GetSettings(uris []string, logger *zap.Logger) otelcol.ConfigProviderSettings { settings := otelcol.ConfigProviderSettings{ ResolverSettings: confmap.ResolverSettings{ - URIs: []string{configPath}, - ProviderFactories: []confmap.ProviderFactory{fileprovider.NewFactory()}, + URIs: uris, + ProviderFactories: []confmap.ProviderFactory{ + fileprovider.NewFactory(), + envprovider.NewFactory(), + }, ProviderSettings: confmap.ProviderSettings{Logger: logger}, ConverterFactories: []confmap.ConverterFactory{expandconverter.NewFactory()}, ConverterSettings: confmap.ConverterSettings{Logger: logger}, diff --git a/service/configprovider/provider_test.go b/service/configprovider/provider_test.go index 83abd450df..399d5d075a 100644 --- a/service/configprovider/provider_test.go +++ b/service/configprovider/provider_test.go @@ -28,15 +28,13 @@ func TestConfigProvider(t *testing.T) { t.Setenv("ENV_REGION", envRegion) factories, err := defaultcomponents.Factories() require.NoError(t, err) - logger, err := zap.NewProduction() + providerSettings := GetSettings([]string{filepath.Join("../../translator/tocwconfig/sampleConfig", "config_with_env.yaml")}, zap.NewNop()) + provider, err := otelcol.NewConfigProvider(providerSettings) assert.NoError(t, err) - providerSettings := GetSettings(filepath.Join("../../translator/tocwconfig/sampleConfig", "config_with_env.yaml"), logger) - actualProvider, err := otelcol.NewConfigProvider(providerSettings) + actualCfg, err := provider.Get(context.Background(), factories) assert.NoError(t, err) - actualCfg, err := actualProvider.Get(context.Background(), factories) - assert.NoError(t, err) - cloudwatchType, _ := component.NewType("awscloudwatchlogs") - got, ok := actualCfg.Exporters[component.NewIDWithName(cloudwatchType, "emf_logs")] + id := component.MustNewIDWithName("awscloudwatchlogs", "emf_logs") + got, ok := actualCfg.Exporters[id] require.True(t, ok) gotCfg, ok := got.(*awscloudwatchlogsexporter.Config) require.True(t, ok) diff --git a/service/defaultcomponents/components.go b/service/defaultcomponents/components.go index 338e926fb1..3020161b22 100644 --- a/service/defaultcomponents/components.go +++ b/service/defaultcomponents/components.go @@ -8,23 +8,46 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/filestorage" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/debugexporter" "go.opentelemetry.io/collector/extension" + "go.opentelemetry.io/collector/extension/ballastextension" + "go.opentelemetry.io/collector/extension/zpagesextension" "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/batchprocessor" + "go.opentelemetry.io/collector/processor/memorylimiterprocessor" "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/otlpreceiver" @@ -41,26 +64,42 @@ func Factories() (otelcol.Factories, error) { if factories.Receivers, err = receiver.MakeFactoryMap( awscontainerinsightreceiver.NewFactory(), + awsecscontainermetricsreceiver.NewFactory(), awsxrayreceiver.NewFactory(), + filelogreceiver.NewFactory(), + jaegerreceiver.NewFactory(), jmxreceiver.NewFactory(), + kafkareceiver.NewFactory(), otlpreceiver.NewFactory(), + prometheusreceiver.NewFactory(), + statsdreceiver.NewFactory(), tcplogreceiver.NewFactory(), udplogreceiver.NewFactory(), + zipkinreceiver.NewFactory(), ); err != nil { return otelcol.Factories{}, err } if factories.Processors, err = processor.MakeFactoryMap( + attributesprocessor.NewFactory(), awsapplicationsignals.NewFactory(), batchprocessor.NewFactory(), cumulativetodeltaprocessor.NewFactory(), - filterprocessor.NewFactory(), + deltatorateprocessor.NewFactory(), ec2tagger.NewFactory(), + filterprocessor.NewFactory(), + gpuattributes.NewFactory(), + groupbytraceprocessor.NewFactory(), + k8sattributesprocessor.NewFactory(), + memorylimiterprocessor.NewFactory(), + metricsgenerationprocessor.NewFactory(), metricstransformprocessor.NewFactory(), + probabilisticsamplerprocessor.NewFactory(), resourceprocessor.NewFactory(), resourcedetectionprocessor.NewFactory(), + spanprocessor.NewFactory(), + tailsamplingprocessor.NewFactory(), transformprocessor.NewFactory(), - gpuattributes.NewFactory(), ); err != nil { return otelcol.Factories{}, err } @@ -78,6 +117,13 @@ func Factories() (otelcol.Factories, error) { if factories.Extensions, err = extension.MakeFactoryMap( agenthealth.NewFactory(), awsproxy.NewFactory(), + ballastextension.NewFactory(), + ecsobserver.NewFactory(), + filestorage.NewFactory(), + healthcheckextension.NewFactory(), + pprofextension.NewFactory(), + sigv4authextension.NewFactory(), + zpagesextension.NewFactory(), ); err != nil { return otelcol.Factories{}, err } diff --git a/service/defaultcomponents/components_test.go b/service/defaultcomponents/components_test.go index eb38c7045b..f337ddc20d 100644 --- a/service/defaultcomponents/components_test.go +++ b/service/defaultcomponents/components_test.go @@ -8,64 +8,89 @@ import ( "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/component" -) + "golang.org/x/exp/maps" -const ( - receiversCount = 6 - processorCount = 10 - exportersCount = 5 - extensionsCount = 2 + "github.com/aws/amazon-cloudwatch-agent/internal/util/collections" ) func TestComponents(t *testing.T) { factories, err := Factories() assert.NoError(t, err) - receivers := factories.Receivers - assert.Len(t, receivers, receiversCount) - awscontainerinsightreceiverType, _ := component.NewType("awscontainerinsightreceiver") - awsxrayType, _ := component.NewType("awsxray") - otlpType, _ := component.NewType("otlp") - tcplogType, _ := component.NewType("tcplog") - udplogType, _ := component.NewType("udplog") - assert.NotNil(t, receivers[awscontainerinsightreceiverType]) - assert.NotNil(t, receivers[awsxrayType]) - assert.NotNil(t, receivers[otlpType]) - assert.NotNil(t, receivers[tcplogType]) - assert.NotNil(t, receivers[udplogType]) + wantReceivers := []string{ + "awscontainerinsightreceiver", + "awsecscontainermetrics", + "awsxray", + "filelog", + "jaeger", + "jmx", + "kafka", + "otlp", + "prometheus", + "statsd", + "tcplog", + "udplog", + "zipkin", + } + gotReceivers := collections.MapSlice(maps.Keys(factories.Receivers), component.Type.String) + assert.Equal(t, len(wantReceivers), len(gotReceivers)) + for _, typeStr := range wantReceivers { + assert.Contains(t, gotReceivers, typeStr) + } - processors := factories.Processors - assert.Len(t, processors, processorCount) - awsapplicationsignalsType, _ := component.NewType("awsapplicationsignals") - batchType, _ := component.NewType("batch") - cumulativetodeltaType, _ := component.NewType("cumulativetodelta") - ec2taggerType, _ := component.NewType("ec2tagger") - metricstransformType, _ := component.NewType("metricstransform") - transformType, _ := component.NewType("transform") - gpuattributesType, _ := component.NewType("gpuattributes") - assert.NotNil(t, processors[awsapplicationsignalsType]) - assert.NotNil(t, processors[batchType]) - assert.NotNil(t, processors[cumulativetodeltaType]) - assert.NotNil(t, processors[ec2taggerType]) - assert.NotNil(t, processors[metricstransformType]) - assert.NotNil(t, processors[transformType]) - assert.NotNil(t, processors[gpuattributesType]) + wantProcessors := []string{ + "awsapplicationsignals", + "attributes", + "batch", + "cumulativetodelta", + "deltatorate", + "ec2tagger", + "experimental_metricsgeneration", + "filter", + "gpuattributes", + "groupbytrace", + "k8sattributes", + "memory_limiter", + "metricstransform", + "resourcedetection", + "resource", + "probabilistic_sampler", + "span", + "tail_sampling", + "transform", + } + gotProcessors := collections.MapSlice(maps.Keys(factories.Processors), component.Type.String) + assert.Equal(t, len(wantProcessors), len(gotProcessors)) + for _, typeStr := range wantProcessors { + assert.Contains(t, gotProcessors, typeStr) + } - exporters := factories.Exporters - assert.Len(t, exporters, exportersCount) - awscloudwatchlogsType, _ := component.NewType("awscloudwatchlogs") - awsemfType, _ := component.NewType("awsemf") - awscloudwatchType, _ := component.NewType("awscloudwatch") - debugType, _ := component.NewType("debug") - assert.NotNil(t, exporters[awscloudwatchlogsType]) - assert.NotNil(t, exporters[awsemfType]) - assert.NotNil(t, exporters[awsemfType]) - assert.NotNil(t, exporters[awscloudwatchType]) - assert.NotNil(t, exporters[debugType]) + wantExporters := []string{ + "awscloudwatchlogs", + "awsemf", + "awscloudwatch", + "awsxray", + "debug", + } + gotExporters := collections.MapSlice(maps.Keys(factories.Exporters), component.Type.String) + assert.Equal(t, len(wantExporters), len(gotExporters)) + for _, typeStr := range wantExporters { + assert.Contains(t, gotExporters, typeStr) + } - extensions := factories.Extensions - assert.Len(t, extensions, extensionsCount) - agenthealthType, _ := component.NewType("agenthealth") - awsproxyType, _ := component.NewType("awsproxy") - assert.NotNil(t, extensions[agenthealthType]) - assert.NotNil(t, extensions[awsproxyType]) + wantExtensions := []string{ + "agenthealth", + "awsproxy", + "ecs_observer", + "file_storage", + "health_check", + "memory_ballast", + "pprof", + "sigv4auth", + "zpages", + } + gotExtensions := collections.MapSlice(maps.Keys(factories.Extensions), component.Type.String) + assert.Equal(t, len(wantExtensions), len(gotExtensions)) + for _, typeStr := range wantExtensions { + assert.Contains(t, gotExtensions, typeStr) + } } diff --git a/tool/paths/paths.go b/tool/paths/paths.go index 7d9e7d4772..1c77da707c 100644 --- a/tool/paths/paths.go +++ b/tool/paths/paths.go @@ -15,7 +15,7 @@ const ( var ( JsonConfigPath string - JsonDirPath string + ConfigDirPath string EnvConfigPath string TomlConfigPath string CommonConfigPath string diff --git a/tool/paths/paths_unix.go b/tool/paths/paths_unix.go index 316f5ab992..801e4239d7 100644 --- a/tool/paths/paths_unix.go +++ b/tool/paths/paths_unix.go @@ -11,7 +11,7 @@ import "path/filepath" const ( AgentDir = "/opt/aws/amazon-cloudwatch-agent" BinaryDir = "bin" - JsonDir = "amazon-cloudwatch-agent.d" + ConfigDir = "amazon-cloudwatch-agent.d" TranslatorBinaryName = "config-translator" AgentBinaryName = "amazon-cloudwatch-agent" WizardBinaryName = "amazon-cloudwatch-agent-config-wizard" @@ -22,7 +22,7 @@ const ( func init() { JsonConfigPath = filepath.Join(AgentDir, "etc", JSON) - JsonDirPath = filepath.Join(AgentDir, "etc", JsonDir) + ConfigDirPath = filepath.Join(AgentDir, "etc", ConfigDir) EnvConfigPath = filepath.Join(AgentDir, "etc", ENV) TomlConfigPath = filepath.Join(AgentDir, "etc", TOML) CommonConfigPath = filepath.Join(AgentDir, "etc", COMMON_CONFIG) diff --git a/tool/paths/paths_windows.go b/tool/paths/paths_windows.go index f6f0036de2..0f3305405f 100644 --- a/tool/paths/paths_windows.go +++ b/tool/paths/paths_windows.go @@ -15,7 +15,7 @@ import ( const ( AgentDir = "\\Amazon\\AmazonCloudWatchAgent\\" - JsonDir = "\\Configs" + ConfigDir = "\\Configs" BinaryDir = "bin" TranslatorBinaryName = "config-translator.exe" AgentBinaryName = "amazon-cloudwatch-agent.exe" @@ -44,7 +44,7 @@ func init() { AgentRootDir := filepath.Join(programFiles, AgentDir) AgentConfigDir := filepath.Join(programData, AgentDir) JsonConfigPath = filepath.Join(AgentConfigDir, JSON) - JsonDirPath = filepath.Join(AgentConfigDir, JsonDir) + ConfigDirPath = filepath.Join(AgentConfigDir, ConfigDir) EnvConfigPath = filepath.Join(AgentConfigDir, ENV) TomlConfigPath = filepath.Join(AgentConfigDir, TOML) YamlConfigPath = filepath.Join(AgentConfigDir, YAML) diff --git a/translator/cmdutil/translatorutil.go b/translator/cmdutil/translatorutil.go index 2eb22d427f..6b4da28781 100644 --- a/translator/cmdutil/translatorutil.go +++ b/translator/cmdutil/translatorutil.go @@ -13,6 +13,7 @@ import ( "github.com/xeipuuv/gojsonschema" "github.com/aws/amazon-cloudwatch-agent/cfg/envconfig" + "github.com/aws/amazon-cloudwatch-agent/internal/constants" "github.com/aws/amazon-cloudwatch-agent/internal/mapstructure" "github.com/aws/amazon-cloudwatch-agent/translator" "github.com/aws/amazon-cloudwatch-agent/translator/config" @@ -150,17 +151,27 @@ func GenerateMergedJsonConfigMap(ctx *context.Context) (map[string]interface{}, } } - if filepath.Ext(path) == context.TmpFileSuffix { + ext := filepath.Ext(path) + if ext == constants.FileSuffixTmp { + key := strings.TrimSuffix(path, constants.FileSuffixTmp) // .tmp files + ext = filepath.Ext(key) + // skip .yaml files + if ext == constants.FileSuffixYAML { + return nil + } if ctx.MultiConfig() == "default" || ctx.MultiConfig() == "append" { jsonConfigMap, err := getJsonConfigMap(path, ctx.Os()) if err != nil { return err } if jsonConfigMap != nil { - jsonConfigMapMap[strings.TrimSuffix(path, context.TmpFileSuffix)] = jsonConfigMap + jsonConfigMapMap[key] = jsonConfigMap } } + } else if ext == constants.FileSuffixYAML { + // skip .yaml files + return nil } else { // non .tmp / existing files if ctx.MultiConfig() == "append" || ctx.MultiConfig() == "remove" { diff --git a/translator/context/context.go b/translator/context/context.go index f0d247e7c9..00b790b63b 100644 --- a/translator/context/context.go +++ b/translator/context/context.go @@ -10,10 +10,6 @@ import ( "github.com/aws/amazon-cloudwatch-agent/translator/config" ) -const ( - TmpFileSuffix = ".tmp" -) - var ctx *Context func CurrentContext() *Context {