diff --git a/agent/agent.go b/agent/agent.go index ffa5d6bd06425..57264dcc1d69c 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -186,17 +186,23 @@ func (a *Agent) Run(ctx context.Context) error { // initPlugins runs the Init function on plugins. func (a *Agent) initPlugins() error { + inputs := make([]*models.RunningInput, 0) for _, input := range a.Config.Inputs { // Share the snmp translator setting with plugins that need it. if tp, ok := input.Input.(snmp.TranslatorPlugin); ok { tp.SetTranslator(a.Config.Agent.SnmpTranslator) } err := input.Init() - if err != nil { + if err != nil && a.Config.Agent.IgnoreInitFailInput { + log.Printf("W! [agent] Ignore initialize fail input %s: %v", input.LogName(), err) + continue + } else if err != nil { return fmt.Errorf("could not initialize input %s: %v", input.LogName(), err) } + inputs = append(inputs, input) } + a.Config.Inputs = inputs for _, parser := range a.Config.Parsers { err := parser.Init() if err != nil { diff --git a/config/config.go b/config/config.go index 3f291a9030688..f194650e5ed7d 100644 --- a/config/config.go +++ b/config/config.go @@ -223,6 +223,9 @@ type AgentConfig struct { // Pick a timezone to use when logging or type 'local' for local time. LogWithTimezone string `toml:"log_with_timezone"` + // Ignore Inputs that failed to initialize + IgnoreInitFailInput bool `toml:"ignore_init_fail_input"` + Hostname string OmitHostname bool