diff --git a/plugins/inputs/system/SYSTEM_README.md b/plugins/inputs/system/SYSTEM_README.md
index 09290832c690d310ed9aaaa51c6f8d2454402ccc..bea9bd2d95be0318e54c209d52b62db4f3c606ef 100644
--- a/plugins/inputs/system/SYSTEM_README.md
+++ b/plugins/inputs/system/SYSTEM_README.md
@@ -1,8 +1,7 @@
 # System Input Plugin
 
 The system plugin gathers general stats on system load, uptime,
-and number of users logged in. It is basically equivalent
-to the unix `uptime` command.
+and number of users logged in. It is similar to the unix `uptime` command.
 
 ### Configuration:
 
@@ -11,29 +10,27 @@ to the unix `uptime` command.
 [[inputs.system]]
   # no configuration
 ```
+#### Permissions:
 
-### Measurements & Fields:
+The `n_users` field requires read access to `/var/run/utmp`, and may require
+the `telegraf` user to be added to the `utmp` group on some systems.
 
-- system
-    - load1 (float)
-    - load15 (float)
-    - load5 (float)
-    - n_users (integer)
-    - n_cpus (integer)
-    - uptime (integer, seconds)
-    - uptime_format (string)
-
-### Tags:
+### Metrics:
 
-None
+- system
+  - fields:
+	- load1 (float)
+	- load15 (float)
+	- load5 (float)
+	- n_users (integer)
+	- n_cpus (integer)
+	- uptime (integer, seconds)
+	- uptime_format (string)
 
 ### Example Output:
 
 ```
-$ telegraf --config ~/ws/telegraf.conf --input-filter system --test
-* Plugin: system, Collection 1
-* Plugin: inputs.system, Collection 1
-> system,host=tyrion load1=3.72,load5=2.4,load15=2.1,n_users=3i,n_cpus=4i 1483964144000000000
-> system,host=tyrion uptime=1249632i 1483964144000000000
-> system,host=tyrion uptime_format="14 days, 11:07" 1483964144000000000
+system,host=tyrion load1=3.72,load5=2.4,load15=2.1,n_users=3i,n_cpus=4i 1483964144000000000
+system,host=tyrion uptime=1249632i 1483964144000000000
+system,host=tyrion uptime_format="14 days, 11:07" 1483964144000000000
 ```
diff --git a/plugins/inputs/system/system.go b/plugins/inputs/system/system.go
index 980e2fa389ec6a410ed42efcd69fda6169e89186..fd204d6af988e34a934b5cb7ab6b257f2498b00d 100644
--- a/plugins/inputs/system/system.go
+++ b/plugins/inputs/system/system.go
@@ -4,6 +4,7 @@ import (
 	"bufio"
 	"bytes"
 	"fmt"
+	"os"
 	"runtime"
 	"strings"
 
@@ -28,23 +29,27 @@ func (_ *SystemStats) Gather(acc telegraf.Accumulator) error {
 		return err
 	}
 
-	hostinfo, err := host.Info()
-	if err != nil {
-		return err
+	fields := map[string]interface{}{
+		"load1":  loadavg.Load1,
+		"load5":  loadavg.Load5,
+		"load15": loadavg.Load15,
+		"n_cpus": runtime.NumCPU(),
 	}
 
 	users, err := host.Users()
+	if err == nil {
+		fields["n_users"] = len(users)
+	} else if !os.IsPermission(err) {
+		return err
+	}
+
+	acc.AddGauge("system", fields, nil)
+
+	hostinfo, err := host.Info()
 	if err != nil {
 		return err
 	}
 
-	acc.AddGauge("system", map[string]interface{}{
-		"load1":   loadavg.Load1,
-		"load5":   loadavg.Load5,
-		"load15":  loadavg.Load15,
-		"n_users": len(users),
-		"n_cpus":  runtime.NumCPU(),
-	}, nil)
 	acc.AddCounter("system", map[string]interface{}{
 		"uptime": hostinfo.Uptime,
 	}, nil)