From dd92c4ab01abea4d1d75bf6a4c825bb9bfb67e19 Mon Sep 17 00:00:00 2001 From: Oliver O'Mahony Date: Wed, 17 Jul 2024 13:51:47 +0100 Subject: [PATCH 1/5] separate backoff settings for metrics --- src/core/config/types.go | 11 +++++++++++ .../nginx/agent/v2/src/core/config/types.go | 11 +++++++++++ .../nginx/agent/v2/src/core/config/types.go | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/core/config/types.go b/src/core/config/types.go index 6ca796a5ab..283533b587 100644 --- a/src/core/config/types.go +++ b/src/core/config/types.go @@ -70,6 +70,16 @@ func (c *Config) GetServerBackoffSettings() backoff.BackoffSettings { } } +func (c *Config) GetMetricsBackoffSettings() backoff.BackoffSettings { + return backoff.BackoffSettings{ + InitialInterval: c.AgentMetrics.Backoff.InitialInterval, + MaxInterval: c.AgentMetrics.Backoff.MaxInterval, + MaxElapsedTime: c.AgentMetrics.Backoff.MaxElapsedTime, + Multiplier: c.AgentMetrics.Backoff.Multiplier, + Jitter: c.AgentMetrics.Backoff.RandomizationFactor, + } +} + type Server struct { Host string `mapstructure:"host" yaml:"-"` GrpcPort int `mapstructure:"grpcPort" yaml:"-"` @@ -137,4 +147,5 @@ type AgentMetrics struct { ReportInterval time.Duration `mapstructure:"report_interval" yaml:"-"` CollectionInterval time.Duration `mapstructure:"collection_interval" yaml:"-"` Mode string `mapstructure:"mode" yaml:"-"` + Backoff Backoff `mapstructure:"backoff" yaml:"-"` } diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go index 6ca796a5ab..283533b587 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go @@ -70,6 +70,16 @@ func (c *Config) GetServerBackoffSettings() backoff.BackoffSettings { } } +func (c *Config) GetMetricsBackoffSettings() backoff.BackoffSettings { + return backoff.BackoffSettings{ + InitialInterval: c.AgentMetrics.Backoff.InitialInterval, + MaxInterval: c.AgentMetrics.Backoff.MaxInterval, + MaxElapsedTime: c.AgentMetrics.Backoff.MaxElapsedTime, + Multiplier: c.AgentMetrics.Backoff.Multiplier, + Jitter: c.AgentMetrics.Backoff.RandomizationFactor, + } +} + type Server struct { Host string `mapstructure:"host" yaml:"-"` GrpcPort int `mapstructure:"grpcPort" yaml:"-"` @@ -137,4 +147,5 @@ type AgentMetrics struct { ReportInterval time.Duration `mapstructure:"report_interval" yaml:"-"` CollectionInterval time.Duration `mapstructure:"collection_interval" yaml:"-"` Mode string `mapstructure:"mode" yaml:"-"` + Backoff Backoff `mapstructure:"backoff" yaml:"-"` } diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go index 6ca796a5ab..283533b587 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go @@ -70,6 +70,16 @@ func (c *Config) GetServerBackoffSettings() backoff.BackoffSettings { } } +func (c *Config) GetMetricsBackoffSettings() backoff.BackoffSettings { + return backoff.BackoffSettings{ + InitialInterval: c.AgentMetrics.Backoff.InitialInterval, + MaxInterval: c.AgentMetrics.Backoff.MaxInterval, + MaxElapsedTime: c.AgentMetrics.Backoff.MaxElapsedTime, + Multiplier: c.AgentMetrics.Backoff.Multiplier, + Jitter: c.AgentMetrics.Backoff.RandomizationFactor, + } +} + type Server struct { Host string `mapstructure:"host" yaml:"-"` GrpcPort int `mapstructure:"grpcPort" yaml:"-"` @@ -137,4 +147,5 @@ type AgentMetrics struct { ReportInterval time.Duration `mapstructure:"report_interval" yaml:"-"` CollectionInterval time.Duration `mapstructure:"collection_interval" yaml:"-"` Mode string `mapstructure:"mode" yaml:"-"` + Backoff Backoff `mapstructure:"backoff" yaml:"-"` } From 31894960e4c81e0c07b6c4c622c001216b0f7be0 Mon Sep 17 00:00:00 2001 From: Oliver O'Mahony Date: Wed, 17 Jul 2024 13:52:35 +0100 Subject: [PATCH 2/5] separate backoff settings for metrics --- src/core/config/types.go | 2 +- .../vendor/github.com/nginx/agent/v2/src/core/config/types.go | 2 +- .../vendor/github.com/nginx/agent/v2/src/core/config/types.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/config/types.go b/src/core/config/types.go index 283533b587..1f57a73d82 100644 --- a/src/core/config/types.go +++ b/src/core/config/types.go @@ -147,5 +147,5 @@ type AgentMetrics struct { ReportInterval time.Duration `mapstructure:"report_interval" yaml:"-"` CollectionInterval time.Duration `mapstructure:"collection_interval" yaml:"-"` Mode string `mapstructure:"mode" yaml:"-"` - Backoff Backoff `mapstructure:"backoff" yaml:"-"` + Backoff Backoff `mapstructure:"backoff" yaml:"-"` } diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go index 283533b587..1f57a73d82 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/types.go @@ -147,5 +147,5 @@ type AgentMetrics struct { ReportInterval time.Duration `mapstructure:"report_interval" yaml:"-"` CollectionInterval time.Duration `mapstructure:"collection_interval" yaml:"-"` Mode string `mapstructure:"mode" yaml:"-"` - Backoff Backoff `mapstructure:"backoff" yaml:"-"` + Backoff Backoff `mapstructure:"backoff" yaml:"-"` } diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go index 283533b587..1f57a73d82 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/types.go @@ -147,5 +147,5 @@ type AgentMetrics struct { ReportInterval time.Duration `mapstructure:"report_interval" yaml:"-"` CollectionInterval time.Duration `mapstructure:"collection_interval" yaml:"-"` Mode string `mapstructure:"mode" yaml:"-"` - Backoff Backoff `mapstructure:"backoff" yaml:"-"` + Backoff Backoff `mapstructure:"backoff" yaml:"-"` } From 287beeed7fe99ddf49ffcf81300cdf8f0f145160 Mon Sep 17 00:00:00 2001 From: Oliver O'Mahony Date: Wed, 17 Jul 2024 14:34:59 +0100 Subject: [PATCH 3/5] added metrics backoff settings so that metrics can be configured differently --- .../configuration/configuration-overview.md | 12 ++++++++++++ src/core/config/config.go | 18 ++++++++++++++++++ src/core/config/config_test.go | 3 +++ src/core/config/defaults.go | 14 ++++++++++++++ src/plugins/testdata/configs/updated.conf | 13 +++++++++++++ .../nginx/agent/v2/src/core/config/config.go | 18 ++++++++++++++++++ .../nginx/agent/v2/src/core/config/defaults.go | 14 ++++++++++++++ .../nginx/agent/v2/src/core/config/config.go | 18 ++++++++++++++++++ .../nginx/agent/v2/src/core/config/defaults.go | 14 ++++++++++++++ 9 files changed, 124 insertions(+) diff --git a/site/content/configuration/configuration-overview.md b/site/content/configuration/configuration-overview.md index a7ae932292..b5bdd2ef06 100644 --- a/site/content/configuration/configuration-overview.md +++ b/site/content/configuration/configuration-overview.md @@ -51,6 +51,12 @@ server: # host of the control plane host: grpcPort: 443 + backoff: # note: default values are prepopulated + initial_interval: 100ms # Add the appropriate duration value here, e.g., "100ms" for 100 milliseconds, "5s" for 5 seconds, "1m" for 1 minute, "1h" for 1 hour + randomization_factor: 0.10 # Add the appropriate float value here, e.g., 0.10 + multiplier: 1.5 # Add the appropriate float value here, e.g., 1.5 + max_interval: 1m # Add the appropriate duration value here, e.g., "100ms" for 100 milliseconds, "5s" for 5 seconds, "1m" for 1 minute, "1h" for 1 hour + max_elapsed_time: 0 # Add the appropriate duration value here, e.g., "0" for indefinite "100ms" for 100 milliseconds, "5s" for 5 seconds, "1m" for 1 minute, "1h" for 1 hour # tls options tls: # enable tls in the nginx-agent setup for grpcs @@ -83,6 +89,12 @@ metrics: report_interval: 1m collection_interval: 15s mode: aggregated + backoff: # note: default values are prepopulated + initial_interval: 100ms # Add the appropriate duration value here, e.g., "100ms" for 100 milliseconds, "5s" for 5 seconds, "1m" for 1 minute, "1h" for 1 hour + randomization_factor: 0.10 # Add the appropriate float value here, e.g., 0.10 + multiplier: 1.5 # Add the appropriate float value here, e.g., 1.5 + max_interval: 1m # Add the appropriate duration value here, e.g., "100ms" for 100 milliseconds, "5s" for 5 seconds, "1m" for 1 minute, "1h" for 1 hour + max_elapsed_time: 0 # Add the appropriate duration value here, e.g., "0" for indefinite "100ms" for 100 milliseconds, "5s" for 5 seconds, "1m" for 1 minute, "1h" for 1 hour # OSS NGINX default config path # path to aux file dirs can also be added diff --git a/src/core/config/config.go b/src/core/config/config.go index 5703bf109d..5f493a6e05 100644 --- a/src/core/config/config.go +++ b/src/core/config/config.go @@ -95,6 +95,12 @@ func SetDefaults() { Viper.SetDefault(BackoffMultiplier, Defaults.Server.Backoff.Multiplier) Viper.SetDefault(BackoffRandomizationFactor, Defaults.Server.Backoff.RandomizationFactor) + Viper.SetDefault(BackoffMetricsInitialInterval, Defaults.AgentMetrics.Backoff.InitialInterval) + Viper.SetDefault(BackoffMetricsMaxElapsedTime, Defaults.AgentMetrics.Backoff.MaxElapsedTime) + Viper.SetDefault(BackoffMetricsMaxInterval, Defaults.AgentMetrics.Backoff.MaxInterval) + Viper.SetDefault(BackoffMetricsMultiplier, Defaults.AgentMetrics.Backoff.Multiplier) + Viper.SetDefault(BackoffMetricsRandomizationFactor, Defaults.AgentMetrics.Backoff.RandomizationFactor) + // DATAPLANE DEFAULTS Viper.SetDefault(DataplaneStatusPoll, Defaults.Dataplane.Status.PollInterval) @@ -133,6 +139,7 @@ func deprecateFlags() { setFlagDeprecated("nap-monitoring-processor-buffer-size", "DEPRECATED. No replacement command.") setFlagDeprecated("nap-monitoring-syslog-ip", "DEPRECATED. No replacement command.") setFlagDeprecated("nap-monitoring-syslog-port", "DEPRECATED. No replacement command.") + setFlagDeprecated("metrics-bulksize", "DEPRECATED. Use metrics backoff maxElapsedTime instead to set a time period where no successful connection, after time elapsed start dropping oldest metrics from the buffer.") } func RegisterFlags() { @@ -315,6 +322,7 @@ func getMetrics() AgentMetrics { ReportInterval: Viper.GetDuration(MetricsReportInterval), CollectionInterval: Viper.GetDuration(MetricsCollectionInterval), Mode: Viper.GetString(MetricsMode), + Backoff: getMetricsBackOff(), } } @@ -366,6 +374,16 @@ func getBackOff() Backoff { } } +func getMetricsBackOff() Backoff { + return Backoff{ + InitialInterval: Viper.GetDuration(BackoffMetricsInitialInterval), + RandomizationFactor: Viper.GetFloat64(BackoffMetricsRandomizationFactor), + Multiplier: Viper.GetFloat64(BackoffMetricsMultiplier), + MaxInterval: Viper.GetDuration(BackoffMetricsMaxInterval), + MaxElapsedTime: Viper.GetDuration(BackoffMetricsMaxElapsedTime), + } +} + func getAgentAPI() AgentAPI { return AgentAPI{ Host: Viper.GetString(AgentAPIHost), diff --git a/src/core/config/config_test.go b/src/core/config/config_test.go index d9a74f72d2..7a5bb41f1a 100644 --- a/src/core/config/config_test.go +++ b/src/core/config/config_test.go @@ -15,6 +15,7 @@ import ( "sort" "strings" "testing" + "time" agent_config "github.com/nginx/agent/sdk/v2/agent/config" sysutils "github.com/nginx/agent/v2/test/utils/system" @@ -256,6 +257,7 @@ func TestGetConfig(t *testing.T) { assert.Equal(t, updatedServerGrpcPort, config.Server.GrpcPort) assert.Equal(t, updatedAgentAPIPort, config.AgentAPI.Port) assert.Equal(t, updatedConfTags, config.Tags) + assert.Equal(t, time.Hour, config.Server.Backoff.MaxElapsedTime) // Check for updated values assert.Equal(t, updatedConfigDirs, config.ConfigDirs) @@ -270,6 +272,7 @@ func TestGetConfig(t *testing.T) { // Everything else should still be default assert.Equal(t, Defaults.AgentMetrics.Mode, config.AgentMetrics.Mode) + assert.Equal(t, 10 * time.Minute, config.AgentMetrics.Backoff.MaxInterval) assert.Equal(t, Defaults.Features, config.Features) assert.Equal(t, []string{}, config.Extensions) }) diff --git a/src/core/config/defaults.go b/src/core/config/defaults.go index 9a39c9a52a..dd89a34ab9 100644 --- a/src/core/config/defaults.go +++ b/src/core/config/defaults.go @@ -85,6 +85,13 @@ var ( ReportInterval: 1 * time.Minute, CollectionInterval: 15 * time.Second, Mode: "aggregated", + Backoff: Backoff{ + InitialInterval: client.DefaultBackoffSettings.InitialInterval, + RandomizationFactor: client.DefaultBackoffSettings.Jitter, + Multiplier: client.DefaultBackoffSettings.Multiplier, + MaxInterval: client.DefaultBackoffSettings.MaxInterval, + MaxElapsedTime: client.DefaultBackoffSettings.MaxElapsedTime, + }, }, AgentAPI: AgentAPI{ Host: "127.0.0.1", @@ -184,6 +191,13 @@ const ( MetricsReportInterval = MetricsKey + agent_config.KeyDelimiter + "report_interval" MetricsCollectionInterval = MetricsKey + agent_config.KeyDelimiter + "collection_interval" MetricsMode = MetricsKey + agent_config.KeyDelimiter + "mode" + MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" + // metrics backoff settings + BackoffMetricsInitialInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "initial_interval" + BackoffMetricsRandomizationFactor = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "randomization_factor" + BackoffMetricsMultiplier = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "multiplier" + BackoffMetricsMaxInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "max_interval" + BackoffMetricsMaxElapsedTime = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "max_elapsed_time" // DEPRECATED KEYS AdvancedMetricsKey = "advanced_metrics" diff --git a/src/plugins/testdata/configs/updated.conf b/src/plugins/testdata/configs/updated.conf index fe171db679..d0f0911ced 100644 --- a/src/plugins/testdata/configs/updated.conf +++ b/src/plugins/testdata/configs/updated.conf @@ -1,6 +1,12 @@ server: host: 192.168.0.1 grpcPort: 11000 + backoff: + initial_interval: 3s + randomization_factor: 0.5 + multiplier: 1.5 + max_interval: 10m + max_elapsed_time: 1h api: port: 9010 config_dirs: /usr/local/etc/nginx @@ -9,3 +15,10 @@ log: path: ./test-path nginx: metrics_poll_interval: 3s +metrics: + backoff: + initial_interval: 3s + randomization_factor: 0.5 + multiplier: 1.5 + max_interval: 10m + max_elapsed_time: 1h \ No newline at end of file diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go index 5703bf109d..5f493a6e05 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go @@ -95,6 +95,12 @@ func SetDefaults() { Viper.SetDefault(BackoffMultiplier, Defaults.Server.Backoff.Multiplier) Viper.SetDefault(BackoffRandomizationFactor, Defaults.Server.Backoff.RandomizationFactor) + Viper.SetDefault(BackoffMetricsInitialInterval, Defaults.AgentMetrics.Backoff.InitialInterval) + Viper.SetDefault(BackoffMetricsMaxElapsedTime, Defaults.AgentMetrics.Backoff.MaxElapsedTime) + Viper.SetDefault(BackoffMetricsMaxInterval, Defaults.AgentMetrics.Backoff.MaxInterval) + Viper.SetDefault(BackoffMetricsMultiplier, Defaults.AgentMetrics.Backoff.Multiplier) + Viper.SetDefault(BackoffMetricsRandomizationFactor, Defaults.AgentMetrics.Backoff.RandomizationFactor) + // DATAPLANE DEFAULTS Viper.SetDefault(DataplaneStatusPoll, Defaults.Dataplane.Status.PollInterval) @@ -133,6 +139,7 @@ func deprecateFlags() { setFlagDeprecated("nap-monitoring-processor-buffer-size", "DEPRECATED. No replacement command.") setFlagDeprecated("nap-monitoring-syslog-ip", "DEPRECATED. No replacement command.") setFlagDeprecated("nap-monitoring-syslog-port", "DEPRECATED. No replacement command.") + setFlagDeprecated("metrics-bulksize", "DEPRECATED. Use metrics backoff maxElapsedTime instead to set a time period where no successful connection, after time elapsed start dropping oldest metrics from the buffer.") } func RegisterFlags() { @@ -315,6 +322,7 @@ func getMetrics() AgentMetrics { ReportInterval: Viper.GetDuration(MetricsReportInterval), CollectionInterval: Viper.GetDuration(MetricsCollectionInterval), Mode: Viper.GetString(MetricsMode), + Backoff: getMetricsBackOff(), } } @@ -366,6 +374,16 @@ func getBackOff() Backoff { } } +func getMetricsBackOff() Backoff { + return Backoff{ + InitialInterval: Viper.GetDuration(BackoffMetricsInitialInterval), + RandomizationFactor: Viper.GetFloat64(BackoffMetricsRandomizationFactor), + Multiplier: Viper.GetFloat64(BackoffMetricsMultiplier), + MaxInterval: Viper.GetDuration(BackoffMetricsMaxInterval), + MaxElapsedTime: Viper.GetDuration(BackoffMetricsMaxElapsedTime), + } +} + func getAgentAPI() AgentAPI { return AgentAPI{ Host: Viper.GetString(AgentAPIHost), diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go index 9a39c9a52a..dd89a34ab9 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go @@ -85,6 +85,13 @@ var ( ReportInterval: 1 * time.Minute, CollectionInterval: 15 * time.Second, Mode: "aggregated", + Backoff: Backoff{ + InitialInterval: client.DefaultBackoffSettings.InitialInterval, + RandomizationFactor: client.DefaultBackoffSettings.Jitter, + Multiplier: client.DefaultBackoffSettings.Multiplier, + MaxInterval: client.DefaultBackoffSettings.MaxInterval, + MaxElapsedTime: client.DefaultBackoffSettings.MaxElapsedTime, + }, }, AgentAPI: AgentAPI{ Host: "127.0.0.1", @@ -184,6 +191,13 @@ const ( MetricsReportInterval = MetricsKey + agent_config.KeyDelimiter + "report_interval" MetricsCollectionInterval = MetricsKey + agent_config.KeyDelimiter + "collection_interval" MetricsMode = MetricsKey + agent_config.KeyDelimiter + "mode" + MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" + // metrics backoff settings + BackoffMetricsInitialInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "initial_interval" + BackoffMetricsRandomizationFactor = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "randomization_factor" + BackoffMetricsMultiplier = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "multiplier" + BackoffMetricsMaxInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "max_interval" + BackoffMetricsMaxElapsedTime = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "max_elapsed_time" // DEPRECATED KEYS AdvancedMetricsKey = "advanced_metrics" diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go index 5703bf109d..5f493a6e05 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go @@ -95,6 +95,12 @@ func SetDefaults() { Viper.SetDefault(BackoffMultiplier, Defaults.Server.Backoff.Multiplier) Viper.SetDefault(BackoffRandomizationFactor, Defaults.Server.Backoff.RandomizationFactor) + Viper.SetDefault(BackoffMetricsInitialInterval, Defaults.AgentMetrics.Backoff.InitialInterval) + Viper.SetDefault(BackoffMetricsMaxElapsedTime, Defaults.AgentMetrics.Backoff.MaxElapsedTime) + Viper.SetDefault(BackoffMetricsMaxInterval, Defaults.AgentMetrics.Backoff.MaxInterval) + Viper.SetDefault(BackoffMetricsMultiplier, Defaults.AgentMetrics.Backoff.Multiplier) + Viper.SetDefault(BackoffMetricsRandomizationFactor, Defaults.AgentMetrics.Backoff.RandomizationFactor) + // DATAPLANE DEFAULTS Viper.SetDefault(DataplaneStatusPoll, Defaults.Dataplane.Status.PollInterval) @@ -133,6 +139,7 @@ func deprecateFlags() { setFlagDeprecated("nap-monitoring-processor-buffer-size", "DEPRECATED. No replacement command.") setFlagDeprecated("nap-monitoring-syslog-ip", "DEPRECATED. No replacement command.") setFlagDeprecated("nap-monitoring-syslog-port", "DEPRECATED. No replacement command.") + setFlagDeprecated("metrics-bulksize", "DEPRECATED. Use metrics backoff maxElapsedTime instead to set a time period where no successful connection, after time elapsed start dropping oldest metrics from the buffer.") } func RegisterFlags() { @@ -315,6 +322,7 @@ func getMetrics() AgentMetrics { ReportInterval: Viper.GetDuration(MetricsReportInterval), CollectionInterval: Viper.GetDuration(MetricsCollectionInterval), Mode: Viper.GetString(MetricsMode), + Backoff: getMetricsBackOff(), } } @@ -366,6 +374,16 @@ func getBackOff() Backoff { } } +func getMetricsBackOff() Backoff { + return Backoff{ + InitialInterval: Viper.GetDuration(BackoffMetricsInitialInterval), + RandomizationFactor: Viper.GetFloat64(BackoffMetricsRandomizationFactor), + Multiplier: Viper.GetFloat64(BackoffMetricsMultiplier), + MaxInterval: Viper.GetDuration(BackoffMetricsMaxInterval), + MaxElapsedTime: Viper.GetDuration(BackoffMetricsMaxElapsedTime), + } +} + func getAgentAPI() AgentAPI { return AgentAPI{ Host: Viper.GetString(AgentAPIHost), diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go index 9a39c9a52a..dd89a34ab9 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go @@ -85,6 +85,13 @@ var ( ReportInterval: 1 * time.Minute, CollectionInterval: 15 * time.Second, Mode: "aggregated", + Backoff: Backoff{ + InitialInterval: client.DefaultBackoffSettings.InitialInterval, + RandomizationFactor: client.DefaultBackoffSettings.Jitter, + Multiplier: client.DefaultBackoffSettings.Multiplier, + MaxInterval: client.DefaultBackoffSettings.MaxInterval, + MaxElapsedTime: client.DefaultBackoffSettings.MaxElapsedTime, + }, }, AgentAPI: AgentAPI{ Host: "127.0.0.1", @@ -184,6 +191,13 @@ const ( MetricsReportInterval = MetricsKey + agent_config.KeyDelimiter + "report_interval" MetricsCollectionInterval = MetricsKey + agent_config.KeyDelimiter + "collection_interval" MetricsMode = MetricsKey + agent_config.KeyDelimiter + "mode" + MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" + // metrics backoff settings + BackoffMetricsInitialInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "initial_interval" + BackoffMetricsRandomizationFactor = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "randomization_factor" + BackoffMetricsMultiplier = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "multiplier" + BackoffMetricsMaxInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "max_interval" + BackoffMetricsMaxElapsedTime = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "max_elapsed_time" // DEPRECATED KEYS AdvancedMetricsKey = "advanced_metrics" From 588f4efa4fb02598a1862939ce261e46a500f41c Mon Sep 17 00:00:00 2001 From: Oliver O'Mahony Date: Wed, 17 Jul 2024 14:36:24 +0100 Subject: [PATCH 4/5] local changes --- src/core/config/config.go | 2 +- src/core/config/config_test.go | 2 +- src/core/config/defaults.go | 2 +- .../vendor/github.com/nginx/agent/v2/src/core/config/config.go | 2 +- .../github.com/nginx/agent/v2/src/core/config/defaults.go | 2 +- .../vendor/github.com/nginx/agent/v2/src/core/config/config.go | 2 +- .../github.com/nginx/agent/v2/src/core/config/defaults.go | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/config/config.go b/src/core/config/config.go index 5f493a6e05..addc4604b4 100644 --- a/src/core/config/config.go +++ b/src/core/config/config.go @@ -322,7 +322,7 @@ func getMetrics() AgentMetrics { ReportInterval: Viper.GetDuration(MetricsReportInterval), CollectionInterval: Viper.GetDuration(MetricsCollectionInterval), Mode: Viper.GetString(MetricsMode), - Backoff: getMetricsBackOff(), + Backoff: getMetricsBackOff(), } } diff --git a/src/core/config/config_test.go b/src/core/config/config_test.go index 7a5bb41f1a..9d5767cfe8 100644 --- a/src/core/config/config_test.go +++ b/src/core/config/config_test.go @@ -272,7 +272,7 @@ func TestGetConfig(t *testing.T) { // Everything else should still be default assert.Equal(t, Defaults.AgentMetrics.Mode, config.AgentMetrics.Mode) - assert.Equal(t, 10 * time.Minute, config.AgentMetrics.Backoff.MaxInterval) + assert.Equal(t, 10*time.Minute, config.AgentMetrics.Backoff.MaxInterval) assert.Equal(t, Defaults.Features, config.Features) assert.Equal(t, []string{}, config.Extensions) }) diff --git a/src/core/config/defaults.go b/src/core/config/defaults.go index dd89a34ab9..efec25090d 100644 --- a/src/core/config/defaults.go +++ b/src/core/config/defaults.go @@ -191,7 +191,7 @@ const ( MetricsReportInterval = MetricsKey + agent_config.KeyDelimiter + "report_interval" MetricsCollectionInterval = MetricsKey + agent_config.KeyDelimiter + "collection_interval" MetricsMode = MetricsKey + agent_config.KeyDelimiter + "mode" - MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" + MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" // metrics backoff settings BackoffMetricsInitialInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "initial_interval" BackoffMetricsRandomizationFactor = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "randomization_factor" diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go index 5f493a6e05..addc4604b4 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/config.go @@ -322,7 +322,7 @@ func getMetrics() AgentMetrics { ReportInterval: Viper.GetDuration(MetricsReportInterval), CollectionInterval: Viper.GetDuration(MetricsCollectionInterval), Mode: Viper.GetString(MetricsMode), - Backoff: getMetricsBackOff(), + Backoff: getMetricsBackOff(), } } diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go index dd89a34ab9..efec25090d 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go @@ -191,7 +191,7 @@ const ( MetricsReportInterval = MetricsKey + agent_config.KeyDelimiter + "report_interval" MetricsCollectionInterval = MetricsKey + agent_config.KeyDelimiter + "collection_interval" MetricsMode = MetricsKey + agent_config.KeyDelimiter + "mode" - MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" + MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" // metrics backoff settings BackoffMetricsInitialInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "initial_interval" BackoffMetricsRandomizationFactor = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "randomization_factor" diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go index 5f493a6e05..addc4604b4 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/config.go @@ -322,7 +322,7 @@ func getMetrics() AgentMetrics { ReportInterval: Viper.GetDuration(MetricsReportInterval), CollectionInterval: Viper.GetDuration(MetricsCollectionInterval), Mode: Viper.GetString(MetricsMode), - Backoff: getMetricsBackOff(), + Backoff: getMetricsBackOff(), } } diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go index dd89a34ab9..efec25090d 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/config/defaults.go @@ -191,7 +191,7 @@ const ( MetricsReportInterval = MetricsKey + agent_config.KeyDelimiter + "report_interval" MetricsCollectionInterval = MetricsKey + agent_config.KeyDelimiter + "collection_interval" MetricsMode = MetricsKey + agent_config.KeyDelimiter + "mode" - MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" + MetricsBackoff = MetricsKey + agent_config.KeyDelimiter + "backoff" // metrics backoff settings BackoffMetricsInitialInterval = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "initial_interval" BackoffMetricsRandomizationFactor = MetricsKey + agent_config.KeyDelimiter + BackoffKey + agent_config.KeyDelimiter + "randomization_factor" From c71b89e8128a4ed9086ce71363819dcd0bb046b6 Mon Sep 17 00:00:00 2001 From: Oliver O'Mahony Date: Wed, 17 Jul 2024 14:49:38 +0100 Subject: [PATCH 5/5] set metrics report client backoff settings --- src/core/grpc.go | 2 +- .../vendor/github.com/nginx/agent/v2/src/core/grpc.go | 2 +- .../vendor/github.com/nginx/agent/v2/src/core/grpc.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/grpc.go b/src/core/grpc.go index 33d77457a9..c68ea1eefc 100644 --- a/src/core/grpc.go +++ b/src/core/grpc.go @@ -57,7 +57,7 @@ func CreateGrpcClients(ctx context.Context, loadedConfig *config.Config) (client commander.WithDialOptions(append(grpcDialOptions, secureCmdDialOpts)...) reporter := client.NewMetricReporterClient() - reporter.WithBackoffSettings(loadedConfig.GetServerBackoffSettings()) + reporter.WithBackoffSettings(loadedConfig.GetMetricsBackoffSettings()) reporter.WithServer(loadedConfig.Server.Target) reporter.WithDialOptions(append(grpcDialOptions, secureMetricsDialOpts)...) diff --git a/test/integration/vendor/github.com/nginx/agent/v2/src/core/grpc.go b/test/integration/vendor/github.com/nginx/agent/v2/src/core/grpc.go index 33d77457a9..c68ea1eefc 100644 --- a/test/integration/vendor/github.com/nginx/agent/v2/src/core/grpc.go +++ b/test/integration/vendor/github.com/nginx/agent/v2/src/core/grpc.go @@ -57,7 +57,7 @@ func CreateGrpcClients(ctx context.Context, loadedConfig *config.Config) (client commander.WithDialOptions(append(grpcDialOptions, secureCmdDialOpts)...) reporter := client.NewMetricReporterClient() - reporter.WithBackoffSettings(loadedConfig.GetServerBackoffSettings()) + reporter.WithBackoffSettings(loadedConfig.GetMetricsBackoffSettings()) reporter.WithServer(loadedConfig.Server.Target) reporter.WithDialOptions(append(grpcDialOptions, secureMetricsDialOpts)...) diff --git a/test/performance/vendor/github.com/nginx/agent/v2/src/core/grpc.go b/test/performance/vendor/github.com/nginx/agent/v2/src/core/grpc.go index 33d77457a9..c68ea1eefc 100644 --- a/test/performance/vendor/github.com/nginx/agent/v2/src/core/grpc.go +++ b/test/performance/vendor/github.com/nginx/agent/v2/src/core/grpc.go @@ -57,7 +57,7 @@ func CreateGrpcClients(ctx context.Context, loadedConfig *config.Config) (client commander.WithDialOptions(append(grpcDialOptions, secureCmdDialOpts)...) reporter := client.NewMetricReporterClient() - reporter.WithBackoffSettings(loadedConfig.GetServerBackoffSettings()) + reporter.WithBackoffSettings(loadedConfig.GetMetricsBackoffSettings()) reporter.WithServer(loadedConfig.Server.Target) reporter.WithDialOptions(append(grpcDialOptions, secureMetricsDialOpts)...)