diff --git a/plugins/inputs/ping/ping.go b/plugins/inputs/ping/ping.go index 0609a367e..5de67322e 100644 --- a/plugins/inputs/ping/ping.go +++ b/plugins/inputs/ping/ping.go @@ -113,9 +113,9 @@ func (p *Ping) Gather(acc telegraf.Accumulator) error { // Combine go err + stderr output out = strings.TrimSpace(out) if len(out) > 0 { - acc.AddError(fmt.Errorf("%s, %s", out, err)) + acc.AddError(fmt.Errorf("host %s: %s, %s", u, out, err)) } else { - acc.AddError(err) + acc.AddError(fmt.Errorf("host %s: %s", u, err)) } acc.AddFields("ping", fields, tags) return diff --git a/plugins/inputs/ping/ping_test.go b/plugins/inputs/ping/ping_test.go index ca50092a9..85f5ca079 100644 --- a/plugins/inputs/ping/ping_test.go +++ b/plugins/inputs/ping/ping_test.go @@ -268,3 +268,26 @@ func TestFatalPingGather(t *testing.T) { assert.False(t, acc.HasMeasurement("maximum_response_ms"), "Fatal ping should not have packet measurements") } + +func TestErrorWithHostNamePingGather(t *testing.T) { + params := []struct { + out string + error error + }{ + {"", errors.New("host www.amazon.com: So very bad")}, + {"so bad", errors.New("host www.amazon.com: so bad, So very bad")}, + } + + for _, param := range params { + var acc testutil.Accumulator + p := Ping{ + Urls: []string{"www.amazon.com"}, + pingHost: func(timeout float64, args ...string) (string, error) { + return param.out, errors.New("So very bad") + }, + } + acc.GatherError(p.Gather) + assert.True(t, len(acc.Errors) > 0) + assert.Contains(t, acc.Errors, param.error) + } +}