diff --git a/collector/filesystem_common.go b/collector/filesystem_common.go index b5473c37..f5dde59a 100644 --- a/collector/filesystem_common.go +++ b/collector/filesystem_common.go @@ -186,6 +186,11 @@ func (c *filesystemCollector) Update(ch chan<- prometheus.Metric) error { c.deviceErrorDesc, prometheus.GaugeValue, s.deviceError, s.labels.device, s.labels.mountPoint, s.labels.fsType, ) + ch <- prometheus.MustNewConstMetric( + c.roDesc, prometheus.GaugeValue, + s.ro, s.labels.device, s.labels.mountPoint, s.labels.fsType, + ) + if s.deviceError > 0 { continue } @@ -210,10 +215,6 @@ func (c *filesystemCollector) Update(ch chan<- prometheus.Metric) error { c.filesFreeDesc, prometheus.GaugeValue, s.filesFree, s.labels.device, s.labels.mountPoint, s.labels.fsType, ) - ch <- prometheus.MustNewConstMetric( - c.roDesc, prometheus.GaugeValue, - s.ro, s.labels.device, s.labels.mountPoint, s.labels.fsType, - ) } return nil } diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index a054e213..6e7623e2 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -109,6 +109,14 @@ func (c *filesystemCollector) GetStats() ([]filesystemStats, error) { } func (c *filesystemCollector) processStat(labels filesystemLabels) filesystemStats { + var ro float64 + for _, option := range strings.Split(labels.options, ",") { + if option == "ro" { + ro = 1 + break + } + } + success := make(chan struct{}) go stuckMountWatcher(labels.mountPoint, success, c.logger) @@ -129,16 +137,10 @@ func (c *filesystemCollector) processStat(labels filesystemLabels) filesystemSta return filesystemStats{ labels: labels, deviceError: 1, + ro: ro, } } - var ro float64 - for _, option := range strings.Split(labels.options, ",") { - if option == "ro" { - ro = 1 - break - } - } return filesystemStats{ labels: labels, size: float64(buf.Blocks) * float64(buf.Bsize),