Skip to content

Commit

Permalink
docs and test: ignore_error_inputs (influxdata#2)
Browse files Browse the repository at this point in the history
* docs: add ignore_error_inputs docs

* test: TestAgent_IgnoreErrorInputs

* Update etc/telegraf.conf

Co-authored-by: Kun Zhao <[email protected]>

* Update etc/telegraf_windows.conf

Co-authored-by: Kun Zhao <[email protected]>

* Update docs/CONFIGURATION.md

Co-authored-by: Kun Zhao <[email protected]>

* Update config/config.go

Co-authored-by: Kun Zhao <[email protected]>

* Update docs/CONFIGURATION.md

Co-authored-by: Kun Zhao <[email protected]>

* modify config/config.go ignore_error_inputs Default

* Update agent/agent_test.go

Co-authored-by: Hao Chen <[email protected]>

* Update agent/agent_test.go

Co-authored-by: Hao Chen <[email protected]>

* Update agent/agent_test.go

Co-authored-by: Hao Chen <[email protected]>

* modify agent/agent_test.go

* Remove the empty line for config.go

* modify agent/agent_test.go

* docs: modify telegraf.conf and telegraf_windows.conf

Co-authored-by: Kun Zhao <[email protected]>
Co-authored-by: Hao Chen <[email protected]>
  • Loading branch information
3 people authored Jun 15, 2022
1 parent ffd32b8 commit d2b4398
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 0 deletions.
46 changes: 46 additions & 0 deletions agent/agent_test.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package agent

import (
"fmt"
"testing"
"time"

"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/models"
_ "github.com/influxdata/telegraf/plugins/inputs/all"
_ "github.com/influxdata/telegraf/plugins/outputs/all"
"github.com/stretchr/testify/assert"
Expand All @@ -19,6 +22,49 @@ func TestAgent_OmitHostname(t *testing.T) {
assert.NotContains(t, c.Tags, "host")
}

type testIgnoreErrorInput struct {
}

func (i *testIgnoreErrorInput) Init() error {
return fmt.Errorf("could not initialize input: test error")
}

func (i *testIgnoreErrorInput) Gather(telegraf.Accumulator) error {
return nil
}
func (i *testIgnoreErrorInput) SampleConfig() string {
return ""
}

func TestAgent_IgnoreErrorInputs(t *testing.T) {
c := config.NewConfig()
assert.False(t, c.Agent.IgnoreErrorInputs)
c.Inputs = []*models.RunningInput{{}}
a, err := NewAgent(c)
assert.NoError(t, err)
a.initPlugins()
assert.Equal(t, 1, len(c.Inputs))

c.Inputs = []*models.RunningInput{{
Config: &models.InputConfig{
Name: "test error input",
Alias: "test alias",
Interval: 10 * time.Second,
},
Input: &testIgnoreErrorInput{},
}}
a, err = NewAgent(c)
assert.NoError(t, err)
err = a.initPlugins()
assert.Error(t, err)

assert.Equal(t, 1, len(c.Inputs))
c.Agent.IgnoreErrorInputs = true
err = a.initPlugins()
assert.NoError(t, err)
assert.Equal(t, 0, len(c.Inputs))
}

func TestAgent_LoadPlugin(t *testing.T) {
c := config.NewConfig()
c.InputFilters = []string{"mysql"}
Expand Down
3 changes: 3 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,9 @@ var agentConfig = `
## Example: America/Chicago
# log_with_timezone = ""
## Indicated whether ignore input plugins that produce the error during the initialization.
# ignore_error_inputs = false
## Override default hostname, if empty use os.Hostname()
hostname = ""
## If set to true, do no set the "host" tag in the telegraf agent.
Expand Down
5 changes: 5 additions & 0 deletions docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,11 @@ The agent table configures Telegraf and the defaults used across all plugins.
translates by calling external programs snmptranslate and snmptable,
or "gosmi" which translates using the built-in gosmi library.

- **ignore_error_inputs**:
If set to true, discard the input plugins that produce the error during initialization.
If set to false, the program will exit when an input plugin has an error occurred during the initialization.
Default: false

## Plugins

Telegraf plugins are divided into 4 types: [inputs][], [outputs][],
Expand Down
3 changes: 3 additions & 0 deletions etc/telegraf.conf
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@
## Example: America/Chicago
# log_with_timezone = ""

## Indicated whether ignore input plugins that produce the error during the initialization.
# ignore_error_inputs = false

## Override default hostname, if empty use os.Hostname()
hostname = ""
## If set to true, do no set the "host" tag in the telegraf agent.
Expand Down
3 changes: 3 additions & 0 deletions etc/telegraf_windows.conf
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@
## Example: America/Chicago
# log_with_timezone = ""

## Indicated whether ignore input plugins that produce the error during the initialization.
# ignore_error_inputs = false

## Override default hostname, if empty use os.Hostname()
hostname = ""
## If set to true, do no set the "host" tag in the telegraf agent.
Expand Down

0 comments on commit d2b4398

Please sign in to comment.