diff --git a/plugins/inputs/ntpq/ntpq.go b/plugins/inputs/ntpq/ntpq.go
index 5e8ff6536c4cf417c5e105851733f329fe49a2fa..edcdac3d45740f530dcd2e15feaa96dc53082ce0 100644
--- a/plugins/inputs/ntpq/ntpq.go
+++ b/plugins/inputs/ntpq/ntpq.go
@@ -70,7 +70,17 @@ func (n *NTPQ) Gather(acc telegraf.Accumulator) error {
 	lineCounter := 0
 	scanner := bufio.NewScanner(bytes.NewReader(out))
 	for scanner.Scan() {
-		fields := strings.Fields(scanner.Text())
+		line := scanner.Text()
+
+		tags := make(map[string]string)
+		// if there is an ntpq state prefix, remove it and make it it's own tag
+		// see https://github.com/influxdata/telegraf/issues/1161
+		if strings.ContainsAny(string(line[0]), "*#o+x.-") {
+			tags["state_prefix"] = string(line[0])
+			line = strings.TrimLeft(line, "*#o+x.-")
+		}
+
+		fields := strings.Fields(line)
 		if len(fields) < 2 {
 			continue
 		}
@@ -97,7 +107,6 @@ func (n *NTPQ) Gather(acc telegraf.Accumulator) error {
 				}
 			}
 		} else {
-			tags := make(map[string]string)
 			mFields := make(map[string]interface{})
 
 			// Get tags from output
diff --git a/plugins/inputs/ntpq/ntpq_test.go b/plugins/inputs/ntpq/ntpq_test.go
index 228eddc624c9f4a21c0638a5828573cc1b1ae759..7e83243c08b263b63f7cf5892365b0d730a88e63 100644
--- a/plugins/inputs/ntpq/ntpq_test.go
+++ b/plugins/inputs/ntpq/ntpq_test.go
@@ -32,10 +32,11 @@ func TestSingleNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -60,10 +61,11 @@ func TestBadIntNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -88,10 +90,11 @@ func TestBadFloatNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -117,10 +120,11 @@ func TestDaysNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -146,10 +150,11 @@ func TestHoursNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -175,10 +180,11 @@ func TestMinutesNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -203,10 +209,11 @@ func TestBadWhenNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote":  "*uschi5-ntp-002.",
-		"refid":   "10.177.80.46",
-		"stratum": "2",
-		"type":    "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"stratum":      "2",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -278,9 +285,10 @@ func TestBadHeaderNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote": "*uschi5-ntp-002.",
-		"refid":  "10.177.80.46",
-		"type":   "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }
@@ -306,9 +314,10 @@ func TestMissingDelayColumnNTPQ(t *testing.T) {
 		"jitter": float64(17.462),
 	}
 	tags := map[string]string{
-		"remote": "*uschi5-ntp-002.",
-		"refid":  "10.177.80.46",
-		"type":   "u",
+		"remote":       "uschi5-ntp-002.",
+		"state_prefix": "*",
+		"refid":        "10.177.80.46",
+		"type":         "u",
 	}
 	acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
 }