Allow multiple keys when parsing cgroups (#8108)
This commit is contained in:
parent
f69b37b759
commit
59e79fa8d4
|
|
@ -27,11 +27,11 @@ VAL1\n
|
|||
VAL0 VAL1 ...\n
|
||||
```
|
||||
|
||||
* New line separated key-space-value's
|
||||
* Space separated keys and value, separated by new line
|
||||
|
||||
```
|
||||
KEY0 VAL0\n
|
||||
KEY1 VAL1\n
|
||||
KEY0 ... VAL0\n
|
||||
KEY1 ... VAL1\n
|
||||
```
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import (
|
|||
"path/filepath"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
)
|
||||
|
|
@ -168,7 +169,7 @@ type fileFormat struct {
|
|||
parser func(measurement string, fields map[string]interface{}, b []byte)
|
||||
}
|
||||
|
||||
const keyPattern = "[[:alpha:]_]+"
|
||||
const keyPattern = "[[:alnum:]:_]+"
|
||||
const valuePattern = "[\\d-]+"
|
||||
|
||||
var fileFormats = [...]fileFormat{
|
||||
|
|
@ -208,17 +209,18 @@ var fileFormats = [...]fileFormat{
|
|||
}
|
||||
},
|
||||
},
|
||||
// KEY0 VAL0\n
|
||||
// KEY1 VAL1\n
|
||||
// KEY0 ... VAL0\n
|
||||
// KEY1 ... VAL1\n
|
||||
// ...
|
||||
{
|
||||
name: "New line separated key-space-value's",
|
||||
pattern: "^(" + keyPattern + " " + valuePattern + "\n)+$",
|
||||
name: "Space separated keys and value, separated by new line",
|
||||
pattern: "^((" + keyPattern + " )+" + valuePattern + "\n)+$",
|
||||
parser: func(measurement string, fields map[string]interface{}, b []byte) {
|
||||
re := regexp.MustCompile("(" + keyPattern + ") (" + valuePattern + ")\n")
|
||||
re := regexp.MustCompile("((?:" + keyPattern + " ?)+) (" + valuePattern + ")\n")
|
||||
matches := re.FindAllStringSubmatch(string(b), -1)
|
||||
for _, v := range matches {
|
||||
fields[measurement+"."+v[1]] = numberOrString(v[2])
|
||||
k := strings.ReplaceAll(v[1], " ", ".")
|
||||
fields[measurement+"."+k] = numberOrString(v[2])
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -180,3 +180,155 @@ func TestCgroupStatistics_6(t *testing.T) {
|
|||
}
|
||||
acc.AssertContainsTaggedFields(t, "cgroup", fields, tags)
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
var cg7 = &CGroup{
|
||||
Paths: []string{"testdata/blkio"},
|
||||
Files: []string{"blkio.throttle.io_serviced"},
|
||||
}
|
||||
|
||||
func TestCgroupStatistics_7(t *testing.T) {
|
||||
var acc testutil.Accumulator
|
||||
|
||||
err := acc.GatherError(cg7.Gather)
|
||||
require.NoError(t, err)
|
||||
|
||||
tags := map[string]string{
|
||||
"path": "testdata/blkio",
|
||||
}
|
||||
fields := map[string]interface{}{
|
||||
"blkio.throttle.io_serviced.11:0.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.11:0.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.11:0.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.11:0.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.11:0.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.8:0.Read": int64(49134),
|
||||
"blkio.throttle.io_serviced.8:0.Write": int64(216703),
|
||||
"blkio.throttle.io_serviced.8:0.Sync": int64(177906),
|
||||
"blkio.throttle.io_serviced.8:0.Async": int64(87931),
|
||||
"blkio.throttle.io_serviced.8:0.Total": int64(265837),
|
||||
"blkio.throttle.io_serviced.7:7.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:7.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:7.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:7.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:7.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:6.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:6.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:6.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:6.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:6.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:5.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:5.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:5.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:5.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:5.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:4.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:4.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:4.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:4.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:4.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:3.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:3.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:3.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:3.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:3.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:2.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:2.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:2.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:2.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:2.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:1.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:1.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:1.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:1.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:1.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.7:0.Read": int64(0),
|
||||
"blkio.throttle.io_serviced.7:0.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.7:0.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.7:0.Async": int64(0),
|
||||
"blkio.throttle.io_serviced.7:0.Total": int64(0),
|
||||
"blkio.throttle.io_serviced.1:15.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:15.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:15.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:15.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:15.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:14.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:14.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:14.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:14.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:14.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:13.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:13.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:13.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:13.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:13.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:12.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:12.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:12.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:12.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:12.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:11.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:11.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:11.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:11.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:11.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:10.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:10.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:10.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:10.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:10.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:9.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:9.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:9.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:9.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:9.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:8.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:8.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:8.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:8.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:8.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:7.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:7.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:7.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:7.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:7.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:6.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:6.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:6.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:6.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:6.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:5.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:5.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:5.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:5.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:5.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:4.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:4.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:4.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:4.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:4.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:3.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:3.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:3.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:3.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:3.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:2.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:2.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:2.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:2.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:2.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:1.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:1.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:1.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:1.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:1.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.1:0.Read": int64(3),
|
||||
"blkio.throttle.io_serviced.1:0.Write": int64(0),
|
||||
"blkio.throttle.io_serviced.1:0.Sync": int64(0),
|
||||
"blkio.throttle.io_serviced.1:0.Async": int64(3),
|
||||
"blkio.throttle.io_serviced.1:0.Total": int64(3),
|
||||
"blkio.throttle.io_serviced.Total": int64(265885),
|
||||
}
|
||||
acc.AssertContainsTaggedFields(t, "cgroup", fields, tags)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue