Add node_filesystem_device_errors_total metric

This metric is the total number of errors occurred when getting stats
for the given device.
pull/374/head
Johannes 'fish' Ziemke 8 years ago
parent 677ed28575
commit deebf0aa49

@ -48,6 +48,7 @@ type filesystemCollector struct {
ignoredFSTypesPattern *regexp.Regexp ignoredFSTypesPattern *regexp.Regexp
sizeDesc, freeDesc, availDesc, sizeDesc, freeDesc, availDesc,
filesDesc, filesFreeDesc, roDesc *prometheus.Desc filesDesc, filesFreeDesc, roDesc *prometheus.Desc
devErrors *prometheus.CounterVec
} }
type filesystemStats struct { type filesystemStats struct {
@ -102,6 +103,11 @@ func NewFilesystemCollector() (Collector, error) {
filesystemLabelNames, nil, filesystemLabelNames, nil,
) )
devErrors := prometheus.NewCounterVec(prometheus.CounterOpts{
Name: prometheus.BuildFQName(Namespace, subsystem, "device_errors_total"),
Help: "Total number of errors occurred when getting stats for device",
}, filesystemLabelNames)
return &filesystemCollector{ return &filesystemCollector{
ignoredMountPointsPattern: mountPointPattern, ignoredMountPointsPattern: mountPointPattern,
ignoredFSTypesPattern: filesystemsTypesPattern, ignoredFSTypesPattern: filesystemsTypesPattern,
@ -111,6 +117,7 @@ func NewFilesystemCollector() (Collector, error) {
filesDesc: filesDesc, filesDesc: filesDesc,
filesFreeDesc: filesFreeDesc, filesFreeDesc: filesFreeDesc,
roDesc: roDesc, roDesc: roDesc,
devErrors: devErrors,
}, nil }, nil
} }
@ -145,5 +152,6 @@ func (c *filesystemCollector) Update(ch chan<- prometheus.Metric) (err error) {
s.ro, s.labelValues..., s.ro, s.labelValues...,
) )
} }
c.devErrors.Collect(ch)
return nil return nil
} }

@ -52,9 +52,11 @@ func (c *filesystemCollector) GetStats() (stats []filesystemStats, err error) {
log.Debugf("Ignoring fs type: %s", mpd.fsType) log.Debugf("Ignoring fs type: %s", mpd.fsType)
continue continue
} }
labelValues := []string{mpd.device, mpd.mountPoint, mpd.fsType}
buf := new(syscall.Statfs_t) buf := new(syscall.Statfs_t)
err := syscall.Statfs(mpd.mountPoint, buf) err := syscall.Statfs(mpd.mountPoint, buf)
if err != nil { if err != nil {
c.devErrors.WithLabelValues(labelValues...).Inc()
log.Debugf("Statfs on %s returned %s", log.Debugf("Statfs on %s returned %s",
mpd.mountPoint, err) mpd.mountPoint, err)
continue continue
@ -65,7 +67,6 @@ func (c *filesystemCollector) GetStats() (stats []filesystemStats, err error) {
ro = 1 ro = 1
} }
labelValues := []string{mpd.device, mpd.mountPoint, mpd.fsType}
stats = append(stats, filesystemStats{ stats = append(stats, filesystemStats{
labelValues: labelValues, labelValues: labelValues,
size: float64(buf.Blocks) * float64(buf.Bsize), size: float64(buf.Blocks) * float64(buf.Bsize),

Loading…
Cancel
Save