Fix parsing of SHM remotes in ntpq input (#3163)

This commit is contained in:
Jan Willem Janssen 2017-08-25 20:54:06 +02:00 committed by Daniel Nelson
parent ae1611aecc
commit f0f77486a5
2 changed files with 54 additions and 1 deletions

View File

@ -69,7 +69,7 @@ func (n *NTPQ) Gather(acc telegraf.Accumulator) error {
// Due to problems with a parsing, we have to use regexp expression in order // Due to problems with a parsing, we have to use regexp expression in order
// to remove string that starts from '(' and ends with space // to remove string that starts from '(' and ends with space
// see: https://github.com/influxdata/telegraf/issues/2386 // see: https://github.com/influxdata/telegraf/issues/2386
reg, err := regexp.Compile("\\([\\S]*") reg, err := regexp.Compile("\\s+\\([\\S]*")
if err != nil { if err != nil {
return err return err
} }

View File

@ -260,6 +260,57 @@ func TestParserNTPQ(t *testing.T) {
} }
acc := testutil.Accumulator{} acc := testutil.Accumulator{}
assert.NoError(t, acc.GatherError(n.Gather)) assert.NoError(t, acc.GatherError(n.Gather))
fields := map[string]interface{}{
"poll": int64(64),
"when": int64(60),
"reach": int64(377),
"delay": float64(0.0),
"offset": float64(0.045),
"jitter": float64(1.012),
}
tags := map[string]string{
"remote": "SHM(0)",
"state_prefix": "*",
"refid": ".PPS.",
"stratum": "1",
"type": "u",
}
acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
fields = map[string]interface{}{
"poll": int64(128),
"when": int64(121),
"reach": int64(377),
"delay": float64(0.0),
"offset": float64(10.105),
"jitter": float64(2.012),
}
tags = map[string]string{
"remote": "SHM(1)",
"state_prefix": "-",
"refid": ".GPS.",
"stratum": "1",
"type": "u",
}
acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
fields = map[string]interface{}{
"poll": int64(1024),
"when": int64(10),
"reach": int64(377),
"delay": float64(1.748),
"offset": float64(0.373),
"jitter": float64(0.101),
}
tags = map[string]string{
"remote": "37.58.57.238",
"state_prefix": "+",
"refid": "192.53.103.103",
"stratum": "2",
"type": "u",
}
acc.AssertContainsTaggedFields(t, "ntpq", fields, tags)
} }
func TestMultiNTPQ(t *testing.T) { func TestMultiNTPQ(t *testing.T) {
@ -480,7 +531,9 @@ var multiNTPQ = ` remote refid st t when poll reach delay
` `
var multiParserNTPQ = ` remote refid st t when poll reach delay offset jitter var multiParserNTPQ = ` remote refid st t when poll reach delay offset jitter
============================================================================== ==============================================================================
*SHM(0) .PPS. 1 u 60 64 377 0.000 0.045 1.012
+37.58.57.238 (d 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101 +37.58.57.238 (d 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101
+37.58.57.238 (domain) 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101 +37.58.57.238 (domain) 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101
+37.58.57.238 ( 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101 +37.58.57.238 ( 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101
-SHM(1) .GPS. 1 u 121 128 377 0.000 10.105 2.012
` `