Fix parsing of SHM remotes in ntpq input (#3163)
(cherry picked from commit d449833de9
)
This commit is contained in:
parent
30949c4596
commit
7480267fd2
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
`
|
`
|
||||||
|
|
Loading…
Reference in New Issue