diff --git a/agent/config/config.go b/agent/config/config.go index 6b34c9a..86474ef 100644 --- a/agent/config/config.go +++ b/agent/config/config.go @@ -219,11 +219,17 @@ reconnect.`, } type ServerConfig struct { + // Enabled indicates whether to enable the agent metrics server. + Enabled bool `json:"enabled" yaml:"enabled"` + // BindAddr is the address to bind to listen for incoming HTTP connections. BindAddr string `json:"bind_addr" yaml:"bind_addr"` } func (c *ServerConfig) Validate() error { + if !c.Enabled { + return nil + } if c.BindAddr == "" { return fmt.Errorf("missing bind addr") } @@ -231,6 +237,16 @@ func (c *ServerConfig) Validate() error { } func (c *ServerConfig) RegisterFlags(fs *pflag.FlagSet) { + fs.BoolVar( + &c.Enabled, + "server.enabled", + c.Enabled, + ` +Whether to enable the agent metrics server. + +Disabled by default.`, + ) + fs.StringVar( &c.BindAddr, "server.bind-addr", diff --git a/cli/agent/command.go b/cli/agent/command.go index 9f69c50..eb86cc3 100644 --- a/cli/agent/command.go +++ b/cli/agent/command.go @@ -174,27 +174,29 @@ func runAgent(conf *config.Config, logger log.Logger) error { } // Agent server. - serverLn, err := net.Listen("tcp", conf.Server.BindAddr) - if err != nil { - return fmt.Errorf("server listen: %s: %w", conf.Server.BindAddr, err) - } - server := server.NewServer(registry, logger) - - group.Add(func() error { - if err := server.Serve(serverLn); err != nil { - return fmt.Errorf("agent server: %w", err) - } - return nil - }, func(error) { - shutdownCtx, cancel := context.WithTimeout( - context.Background(), conf.GracePeriod, - ) - defer cancel() - - if err := server.Shutdown(shutdownCtx); err != nil { - logger.Warn("failed to gracefully shutdown agent server", zap.Error(err)) - } - }) + if conf.Server.Enabled { + serverLn, err := net.Listen("tcp", conf.Server.BindAddr) + if err != nil { + return fmt.Errorf("server listen: %s: %w", conf.Server.BindAddr, err) + } + server := server.NewServer(registry, logger) + + group.Add(func() error { + if err := server.Serve(serverLn); err != nil { + return fmt.Errorf("agent server: %w", err) + } + return nil + }, func(error) { + shutdownCtx, cancel := context.WithTimeout( + context.Background(), conf.GracePeriod, + ) + defer cancel() + + if err := server.Shutdown(shutdownCtx); err != nil { + logger.Warn("failed to gracefully shutdown agent server", zap.Error(err)) + } + }) + } // Termination handler. signalCtx, signalCancel := context.WithCancel(context.Background())