From caf14adb17b8d0831b656d47d19e2fa006980b35 Mon Sep 17 00:00:00 2001 From: Joshua Powers Date: Wed, 22 Feb 2023 07:55:55 -0700 Subject: [PATCH] feat(inputs.disk): Add label as tag (#12696) --- plugins/inputs/disk/README.md | 2 ++ plugins/inputs/disk/disk.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/disk/README.md b/plugins/inputs/disk/README.md index 11ed24a08..97b9ae6ad 100644 --- a/plugins/inputs/disk/README.md +++ b/plugins/inputs/disk/README.md @@ -54,6 +54,7 @@ docker run -v /:/hostfs:ro -e HOST_MOUNT_PREFIX=/hostfs -e HOST_PROC=/hostfs/pro - device (device file) - path (mount point path) - mode (whether the mount is rw or ro) + - label (devicemapper labels, only if present) - fields: - free (integer, bytes) - total (integer, bytes) @@ -88,6 +89,7 @@ disk,fstype=hfs,mode=ro,path=/ free=398407520256i,inodes_free=97267461i,inodes_t disk,fstype=devfs,mode=rw,path=/dev free=0i,inodes_free=0i,inodes_total=628i,inodes_used=628i,total=185856i,used=185856i,used_percent=100 1453832006274137913 disk,fstype=autofs,mode=rw,path=/net free=0i,inodes_free=0i,inodes_total=0i,inodes_used=0i,total=0i,used=0i,used_percent=0 1453832006274157077 disk,fstype=autofs,mode=rw,path=/home free=0i,inodes_free=0i,inodes_total=0i,inodes_used=0i,total=0i,used=0i,used_percent=0 1453832006274169688 +disk,device=dm-1,fstype=xfs,label=lvg-lv,mode=rw,path=/mnt inodes_free=8388605i,inodes_used=3i,total=17112760320i,free=16959598592i,used=153161728i,used_percent=0.8950147441789215,inodes_total=8388608i 1677001387000000000 ``` [statfs]: http://man7.org/linux/man-pages/man2/statfs.2.html diff --git a/plugins/inputs/disk/disk.go b/plugins/inputs/disk/disk.go index 8b8d8bced..f90227a49 100644 --- a/plugins/inputs/disk/disk.go +++ b/plugins/inputs/disk/disk.go @@ -9,6 +9,7 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/plugins/inputs" "github.com/influxdata/telegraf/plugins/inputs/system" + "github.com/shirou/gopsutil/v3/disk" ) //go:embed sample.conf @@ -53,13 +54,21 @@ func (ds *DiskStats) Gather(acc telegraf.Accumulator) error { // Skip dummy filesystem (procfs, cgroupfs, ...) continue } + + device := partitions[i].Device mountOpts := MountOptions(partitions[i].Opts) tags := map[string]string{ "path": du.Path, - "device": strings.ReplaceAll(partitions[i].Device, "/dev/", ""), + "device": strings.ReplaceAll(device, "/dev/", ""), "fstype": du.Fstype, "mode": mountOpts.Mode(), } + + label, err := disk.Label(strings.TrimPrefix(device, "/dev/")) + if err == nil && label != "" { + tags["label"] = label + } + var usedPercent float64 if du.Used+du.Free > 0 { usedPercent = float64(du.Used) /