From 77b886a8021aaddddf530a42b9bac9d4c6ed7a20 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 11:31:28 -0800 Subject: [PATCH 01/19] grab DEVLINKS udev property when specified --- plugins/inputs/diskio/diskio_linux.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 38240a0a1148d..d738c9a740184 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -52,8 +52,17 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { defer f.Close() scnr := bufio.NewScanner(f) + var devlinks strings.Builder for scnr.Scan() { l := scnr.Text() + if l[:2] == "S:" { + if devlinks.Len > 0 { + devlinks.WriteString(" " + l[2:]) + } else { + devlinks.WriteString(l[2:]) + } + continue + } if len(l) < 4 || l[:2] != "E:" { continue } @@ -63,6 +72,9 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { } di[kv[0]] = kv[1] } + if devlinks.Len() > 0 { + di["DEVLINKS"] = devlinks.String() + } return di, nil } From e86bcd04045816fda42a429d66d6ce896fdd1d43 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 11:37:58 -0800 Subject: [PATCH 02/19] update unit tests to test for DEVLINKS --- plugins/inputs/diskio/diskio_linux_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/inputs/diskio/diskio_linux_test.go b/plugins/inputs/diskio/diskio_linux_test.go index b18bb67a8dcb0..497e7a611c519 100644 --- a/plugins/inputs/diskio/diskio_linux_test.go +++ b/plugins/inputs/diskio/diskio_linux_test.go @@ -14,6 +14,7 @@ import ( var nullDiskInfo = []byte(` E:MY_PARAM_1=myval1 E:MY_PARAM_2=myval2 +S:foo/bar/devlink foo/bar/devlink1 `) // setupNullDisk sets up fake udev info as if /dev/null were a disk. @@ -47,6 +48,7 @@ func TestDiskInfo(t *testing.T) { require.NoError(t, err) assert.Equal(t, "myval1", di["MY_PARAM_1"]) assert.Equal(t, "myval2", di["MY_PARAM_2"]) + assert.Equal(t, "foo/bar/devlink foo/bar/devlink1", di["DEVLINKS"]) // test that data is cached err = clean() @@ -56,6 +58,7 @@ func TestDiskInfo(t *testing.T) { require.NoError(t, err) assert.Equal(t, "myval1", di["MY_PARAM_1"]) assert.Equal(t, "myval2", di["MY_PARAM_2"]) + assert.Equal(t, "foo/bar/devlink foo/bar/devlink1", di["DEVLINKS"]) // unfortunately we can't adjust mtime on /dev/null to test cache invalidation } From b26de49d53c7e751d30f1b47ca6e8c55f839caf1 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 11:40:16 -0800 Subject: [PATCH 03/19] Update docs to note limits on udev property type --- plugins/inputs/diskio/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/inputs/diskio/README.md b/plugins/inputs/diskio/README.md index 3cec5cf552e44..681e5afb700b7 100644 --- a/plugins/inputs/diskio/README.md +++ b/plugins/inputs/diskio/README.md @@ -19,6 +19,9 @@ The diskio input plugin gathers metrics about disk traffic and timing. ## Currently only Linux is supported via udev properties. You can view ## available properties for a device by running: ## 'udevadm info -q property -n /dev/sda' + ## Note: Most, but not all, udev properties can be accessed this way. Properties + ## that are currently accessible include the "IS_*" series and the "DEVLINKS" + ## property. For more info see https://github.com/influxdata/telegraf/issues/3663 # device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"] # ## Using the same metadata source as device_tags, you can also customize the From 6d45994b45c96421f610149e4b9d29f81e1e9381 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 12:47:23 -0800 Subject: [PATCH 04/19] fix minor indentation error --- plugins/inputs/diskio/diskio_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index d738c9a740184..13379c93f77cc 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -56,7 +56,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { for scnr.Scan() { l := scnr.Text() if l[:2] == "S:" { - if devlinks.Len > 0 { + if devlinks.Len > 0 { devlinks.WriteString(" " + l[2:]) } else { devlinks.WriteString(l[2:]) From 3df7d6099d9a181e2cfdf809c038298499bc76ef Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 13:00:48 -0800 Subject: [PATCH 05/19] Update diskio_linux.go --- plugins/inputs/diskio/diskio_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 13379c93f77cc..7172cf06f778e 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -56,7 +56,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { for scnr.Scan() { l := scnr.Text() if l[:2] == "S:" { - if devlinks.Len > 0 { + if devlinks.Len > 0 { devlinks.WriteString(" " + l[2:]) } else { devlinks.WriteString(l[2:]) From fa8913c9a29a3bdb983026e2cb4f08f1814a5aa5 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 13:25:53 -0800 Subject: [PATCH 06/19] fixed .Len call to .Len() --- plugins/inputs/diskio/diskio_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 7172cf06f778e..e92afc9d0c8fb 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -56,7 +56,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { for scnr.Scan() { l := scnr.Text() if l[:2] == "S:" { - if devlinks.Len > 0 { + if devlinks.Len() > 0 { devlinks.WriteString(" " + l[2:]) } else { devlinks.WriteString(l[2:]) From 155dc90da4ea76faac8d3c15616b2e34f0b23353 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 13:55:41 -0800 Subject: [PATCH 07/19] move up check for if len(l) < 4 --- plugins/inputs/diskio/diskio_linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index e92afc9d0c8fb..cd0b04206e054 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -55,6 +55,9 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { var devlinks strings.Builder for scnr.Scan() { l := scnr.Text() + if len(l) < 4 { + continue + } if l[:2] == "S:" { if devlinks.Len() > 0 { devlinks.WriteString(" " + l[2:]) @@ -63,7 +66,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { } continue } - if len(l) < 4 || l[:2] != "E:" { + if l[:2] != "E:" { continue } kv := strings.SplitN(l[2:], "=", 2) From 12fcdc6a8bb011f082820c45478cfb04efbf57a1 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 17:43:51 -0800 Subject: [PATCH 08/19] switch from string.Builder to []string and Join for elegance and to allow compatibility with Go 10.9 --- plugins/inputs/diskio/diskio_linux.go | 53 +++++++++++++-------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index cd0b04206e054..612d0aed4792e 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -51,33 +51,32 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { } defer f.Close() - scnr := bufio.NewScanner(f) - var devlinks strings.Builder - for scnr.Scan() { - l := scnr.Text() - if len(l) < 4 { - continue - } - if l[:2] == "S:" { - if devlinks.Len() > 0 { - devlinks.WriteString(" " + l[2:]) - } else { - devlinks.WriteString(l[2:]) - } - continue - } - if l[:2] != "E:" { - continue - } - kv := strings.SplitN(l[2:], "=", 2) - if len(kv) < 2 { - continue - } - di[kv[0]] = kv[1] - } - if devlinks.Len() > 0 { - di["DEVLINKS"] = devlinks.String() - } + scnr := bufio.NewScanner(f) + var devlinks []string + for scnr.Scan() { + l := scnr.Text() + if len(l) < 4 { + continue + } + if l[:2] == "S:" { + devlinks = append(devlinks, l[2:]) + continue + } + if l[:2] != "E:" { + continue + } + kv := strings.SplitN(l[2:], "=", 2) + if len(kv) < 2 { + continue + } + di[kv[0]] = kv[1] + } + + var devlink_str string + if len(devlinks) > 0 { + devlink_str = strings.Join(devlinks, " ") + di["DEVLINKS"] = devlink_str + } return di, nil } From b2011a7b52960fe33eb17875c99bda2c438cb646 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 5 Dec 2018 17:54:23 -0800 Subject: [PATCH 09/19] exchange indenting space for tabs --- plugins/inputs/diskio/diskio_linux.go | 50 +++++++++++++-------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 612d0aed4792e..d44c2aa574b99 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -51,32 +51,32 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { } defer f.Close() - scnr := bufio.NewScanner(f) - var devlinks []string - for scnr.Scan() { - l := scnr.Text() - if len(l) < 4 { - continue - } - if l[:2] == "S:" { - devlinks = append(devlinks, l[2:]) - continue - } - if l[:2] != "E:" { - continue - } - kv := strings.SplitN(l[2:], "=", 2) - if len(kv) < 2 { - continue - } - di[kv[0]] = kv[1] - } + scnr := bufio.NewScanner(f) + var devlinks []string + for scnr.Scan() { + l := scnr.Text() + if len(l) < 4 { + continue + } + if l[:2] == "S:" { + devlinks = append(devlinks, l[2:]) + continue + } + if l[:2] != "E:" { + continue + } + kv := strings.SplitN(l[2:], "=", 2) + if len(kv) < 2 { + continue + } + di[kv[0]] = kv[1] + } - var devlink_str string - if len(devlinks) > 0 { - devlink_str = strings.Join(devlinks, " ") - di["DEVLINKS"] = devlink_str - } + var devlink_str string + if len(devlinks) > 0 { + devlink_str = strings.Join(devlinks, " ") + di["DEVLINKS"] = devlink_str + } return di, nil } From 9186707992ef52c4b6c1f301ae449644ce0c273a Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 10:39:53 -0800 Subject: [PATCH 10/19] Update README.md Note no focuses on excluded udev properties --- plugins/inputs/diskio/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/inputs/diskio/README.md b/plugins/inputs/diskio/README.md index 681e5afb700b7..95ed16ec07a16 100644 --- a/plugins/inputs/diskio/README.md +++ b/plugins/inputs/diskio/README.md @@ -20,8 +20,9 @@ The diskio input plugin gathers metrics about disk traffic and timing. ## available properties for a device by running: ## 'udevadm info -q property -n /dev/sda' ## Note: Most, but not all, udev properties can be accessed this way. Properties - ## that are currently accessible include the "IS_*" series and the "DEVLINKS" - ## property. For more info see https://github.com/influxdata/telegraf/issues/3663 + ## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH. + ## DEVLINKS, however, can be used as a tag as of Telegraf 1.10 + ## For more info see https://github.com/influxdata/telegraf/issues/3663 # device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"] # ## Using the same metadata source as device_tags, you can also customize the From a610f1ecdff88303399be77c84fb00ec8efef583 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:37:27 -0800 Subject: [PATCH 11/19] put S: on separate lines in unit test --- plugins/inputs/diskio/diskio_linux_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux_test.go b/plugins/inputs/diskio/diskio_linux_test.go index 497e7a611c519..549e5538b1f97 100644 --- a/plugins/inputs/diskio/diskio_linux_test.go +++ b/plugins/inputs/diskio/diskio_linux_test.go @@ -14,7 +14,8 @@ import ( var nullDiskInfo = []byte(` E:MY_PARAM_1=myval1 E:MY_PARAM_2=myval2 -S:foo/bar/devlink foo/bar/devlink1 +S:foo/bar/devlink +S:foo/bar/devlink1 `) // setupNullDisk sets up fake udev info as if /dev/null were a disk. From 781b3c0a0fe4da2d77b15753bfd59da63a27aa33 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:58:57 -0800 Subject: [PATCH 12/19] prepend "/dev" to DEVLINKS --- plugins/inputs/diskio/diskio_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index d44c2aa574b99..ec1abbd1d07c8 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -59,7 +59,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { continue } if l[:2] == "S:" { - devlinks = append(devlinks, l[2:]) + devlinks = append(devlinks, "/dev" + l[2:]) continue } if l[:2] != "E:" { From 7f4c22e9e1a5e7f3eb9c5d5927ae140f4e6cef03 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:59:45 -0800 Subject: [PATCH 13/19] Update diskio_linux.go --- plugins/inputs/diskio/diskio_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index ec1abbd1d07c8..bceaeac49294a 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -59,7 +59,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { continue } if l[:2] == "S:" { - devlinks = append(devlinks, "/dev" + l[2:]) + devlinks = append(devlinks, "/dev/" + l[2:]) continue } if l[:2] != "E:" { From 9c55eb3f64c2c6309d55244dfa0b682d2bed3ed4 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 14:01:34 -0800 Subject: [PATCH 14/19] update unit test for previous changes --- plugins/inputs/diskio/diskio_linux_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/inputs/diskio/diskio_linux_test.go b/plugins/inputs/diskio/diskio_linux_test.go index 549e5538b1f97..9e79be1653ca9 100644 --- a/plugins/inputs/diskio/diskio_linux_test.go +++ b/plugins/inputs/diskio/diskio_linux_test.go @@ -49,7 +49,7 @@ func TestDiskInfo(t *testing.T) { require.NoError(t, err) assert.Equal(t, "myval1", di["MY_PARAM_1"]) assert.Equal(t, "myval2", di["MY_PARAM_2"]) - assert.Equal(t, "foo/bar/devlink foo/bar/devlink1", di["DEVLINKS"]) + assert.Equal(t, "/dev/foo/bar/devlink /dev/foo/bar/devlink1", di["DEVLINKS"]) // test that data is cached err = clean() @@ -59,7 +59,7 @@ func TestDiskInfo(t *testing.T) { require.NoError(t, err) assert.Equal(t, "myval1", di["MY_PARAM_1"]) assert.Equal(t, "myval2", di["MY_PARAM_2"]) - assert.Equal(t, "foo/bar/devlink foo/bar/devlink1", di["DEVLINKS"]) + assert.Equal(t, "/dev/foo/bar/devlink /dev/foo/bar/devlink1", di["DEVLINKS"]) // unfortunately we can't adjust mtime on /dev/null to test cache invalidation } From fec1c1179ad499557c613188653dcc707b615182 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 14:19:36 -0800 Subject: [PATCH 15/19] Update diskio_linux.go hopefully fix fmt issue --- plugins/inputs/diskio/diskio_linux.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index bceaeac49294a..2dd98e0f535f3 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -59,7 +59,8 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { continue } if l[:2] == "S:" { - devlinks = append(devlinks, "/dev/" + l[2:]) + devlinks = append(devlinks, "/dev/") + devlinks = append(devlinks, l[2:]) continue } if l[:2] != "E:" { From b3be174271154dc456e5df1cd6f3121fd6f7c996 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 14:48:27 -0800 Subject: [PATCH 16/19] Update diskio_linux.go switch to using bytes.Buffer --- plugins/inputs/diskio/diskio_linux.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 2dd98e0f535f3..244dabe9ad26e 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -2,6 +2,7 @@ package diskio import ( "bufio" + "bytes" "fmt" "os" "strings" @@ -52,15 +53,15 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { defer f.Close() scnr := bufio.NewScanner(f) - var devlinks []string + var devlinks bytes.Buffer for scnr.Scan() { l := scnr.Text() if len(l) < 4 { continue } if l[:2] == "S:" { - devlinks = append(devlinks, "/dev/") - devlinks = append(devlinks, l[2:]) + devlinks.WriteString("/dev/") + devlinks.WriteString(l[2:]) continue } if l[:2] != "E:" { @@ -75,8 +76,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { var devlink_str string if len(devlinks) > 0 { - devlink_str = strings.Join(devlinks, " ") - di["DEVLINKS"] = devlink_str + di["DEVLINKS"] = devlinks.String() } return di, nil From 48de766e0287bf4e37caa1942479b18a3aee0e00 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 14:52:41 -0800 Subject: [PATCH 17/19] Update diskio_linux.go --- plugins/inputs/diskio/diskio_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 244dabe9ad26e..e9016192e0916 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -75,7 +75,7 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { } var devlink_str string - if len(devlinks) > 0 { + if devlinks.Len() > 0 { di["DEVLINKS"] = devlinks.String() } From 904b650ecb1300b127a4881bfedd34d79418291f Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 14:55:25 -0800 Subject: [PATCH 18/19] Update diskio_linux.go --- plugins/inputs/diskio/diskio_linux.go | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index e9016192e0916..4c7b35c236498 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -74,7 +74,6 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { di[kv[0]] = kv[1] } - var devlink_str string if devlinks.Len() > 0 { di["DEVLINKS"] = devlinks.String() } From 053e19418ac9a836f08ad935c8ed41ca9cbb41d7 Mon Sep 17 00:00:00 2001 From: dbergmanskytap <39205372+dbergmanskytap@users.noreply.github.com> Date: Wed, 12 Dec 2018 15:01:14 -0800 Subject: [PATCH 19/19] Update diskio_linux.go --- plugins/inputs/diskio/diskio_linux.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/inputs/diskio/diskio_linux.go b/plugins/inputs/diskio/diskio_linux.go index 4c7b35c236498..d27fd3b46b898 100644 --- a/plugins/inputs/diskio/diskio_linux.go +++ b/plugins/inputs/diskio/diskio_linux.go @@ -60,6 +60,9 @@ func (s *DiskIO) diskInfo(devName string) (map[string]string, error) { continue } if l[:2] == "S:" { + if devlinks.Len() > 0 { + devlinks.WriteString(" ") + } devlinks.WriteString("/dev/") devlinks.WriteString(l[2:]) continue