diff --git a/CHANGELOG.md b/CHANGELOG.md
index 62f693c5576a272552aa000373805d5359d59b29..3cdd544d0ef45d3ec8120378ce07ce8d99ef1046 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,6 +40,7 @@ It is highly recommended that all users migrate to the new riemann output plugin
 - [#2277](https://github.com/influxdata/telegraf/pull/2277): add integer metrics for Consul check health state.
 - [#2201](https://github.com/influxdata/telegraf/pull/2201): Add lock option to the IPtables input plugin.
 - [#2244](https://github.com/influxdata/telegraf/pull/2244): Support ipmi_sensor plugin querying local ipmi sensors.
+- [#2339](https://github.com/influxdata/telegraf/pull/2339): Increment gather_errors for all errors emitted by inputs.
 
 ### Bugfixes
 
diff --git a/agent/agent.go b/agent/agent.go
index a9e42643acd28d9ad18c843b418c0b66a3145fe0..192e8c1122f5ccf8ff83bfc7bce7139d687417f6 100644
--- a/agent/agent.go
+++ b/agent/agent.go
@@ -157,13 +157,13 @@ func gatherWithTimeout(
 		select {
 		case err := <-done:
 			if err != nil {
-				log.Printf("E! ERROR in input [%s]: %s", input.Name(), err)
+				acc.AddError(err)
 			}
 			return
 		case <-ticker.C:
-			log.Printf("E! ERROR: input [%s] took longer to collect than "+
-				"collection interval (%s)",
-				input.Name(), timeout)
+			err := fmt.Errorf("took longer to collect than collection interval (%s)",
+				timeout)
+			acc.AddError(err)
 			continue
 		case <-shutdown:
 			return