fix(inputs.diskio): Print warnings once, add details to messages (#15667)
This commit is contained in:
parent
a3eda34048
commit
934b4a0879
|
|
@ -35,6 +35,8 @@ type DiskIO struct {
|
||||||
ps system.PS
|
ps system.PS
|
||||||
infoCache map[string]diskInfoCache
|
infoCache map[string]diskInfoCache
|
||||||
deviceFilter filter.Filter
|
deviceFilter filter.Filter
|
||||||
|
warnDiskName map[string]bool
|
||||||
|
warnDiskTags map[string]bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*DiskIO) SampleConfig() string {
|
func (*DiskIO) SampleConfig() string {
|
||||||
|
|
@ -53,6 +55,8 @@ func (d *DiskIO) Init() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
d.infoCache = make(map[string]diskInfoCache)
|
d.infoCache = make(map[string]diskInfoCache)
|
||||||
|
d.warnDiskName = make(map[string]bool)
|
||||||
|
d.warnDiskTags = make(map[string]bool)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -133,13 +137,17 @@ func (d *DiskIO) diskName(devName string) (string, []string) {
|
||||||
for i, devLink := range devLinks {
|
for i, devLink := range devLinks {
|
||||||
devLinks[i] = strings.TrimPrefix(devLink, "/dev/")
|
devLinks[i] = strings.TrimPrefix(devLink, "/dev/")
|
||||||
}
|
}
|
||||||
|
// Return error after attempting to process some of the devlinks.
|
||||||
if len(d.NameTemplates) == 0 {
|
// These could exist if we got further along the diskInfo call.
|
||||||
|
if err != nil {
|
||||||
|
if ok := d.warnDiskName[devName]; !ok {
|
||||||
|
d.warnDiskName[devName] = true
|
||||||
|
d.Log.Warnf("Unable to gather disk name for %q: %s", devName, err)
|
||||||
|
}
|
||||||
return devName, devLinks
|
return devName, devLinks
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if len(d.NameTemplates) == 0 {
|
||||||
d.Log.Warnf("Error gathering disk info: %s", err)
|
|
||||||
return devName, devLinks
|
return devName, devLinks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -172,7 +180,10 @@ func (d *DiskIO) diskTags(devName string) map[string]string {
|
||||||
|
|
||||||
di, err := d.diskInfo(devName)
|
di, err := d.diskInfo(devName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
d.Log.Warnf("Error gathering disk info: %s", err)
|
if ok := d.warnDiskTags[devName]; !ok {
|
||||||
|
d.warnDiskTags[devName] = true
|
||||||
|
d.Log.Warnf("Unable to gather disk tags for %q: %s", devName, err)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ func (d *DiskIO) diskInfo(devName string) (map[string]string, error) {
|
||||||
path := "/dev/" + devName
|
path := "/dev/" + devName
|
||||||
var stat unix.Stat_t
|
var stat unix.Stat_t
|
||||||
if err := unix.Stat(path, &stat); err != nil {
|
if err := unix.Stat(path, &stat); err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("error reading %s: %w", path, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if we already got a cached and valid entry
|
// Check if we already got a cached and valid entry
|
||||||
|
|
@ -49,7 +49,7 @@ func (d *DiskIO) diskInfo(devName string) (map[string]string, error) {
|
||||||
udevDataPath = "/dev/.udev/db/block:" + devName
|
udevDataPath = "/dev/.udev/db/block:" + devName
|
||||||
if _, err := os.Stat(udevDataPath); err != nil {
|
if _, err := os.Stat(udevDataPath); err != nil {
|
||||||
// Giving up, cannot retrieve disk info
|
// Giving up, cannot retrieve disk info
|
||||||
return nil, err
|
return nil, fmt.Errorf("error reading %s: %w", udevDataPath, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue