Handle EPERM for syscall in timex collector

Handle case where Adjtimex syscall gets a permission denined error.

Fixes: https://github.com/prometheus/node_exporter/issues/1934

Signed-off-by: Ben Kochie <superq@gmail.com>
This commit is contained in:
Ben Kochie 2021-01-22 18:16:25 +01:00
parent cfdd9dd0c9
commit 1d03daf616
No known key found for this signature in database
GPG key ID: C646B23C9E3245F1
2 changed files with 8 additions and 0 deletions

View file

@ -6,6 +6,7 @@
* [ENHANCEMENT] Include TCP OutRsts in netstat metrics
* [ENHANCEMENT] Added XFS inode operations to XFS metrics
* [ENHANCEMENT] Remove CGO dependencies for OpenBSD amd64
* [BUGFIX] Handle EPERM for syscall in timex collector
* [BUGFIX]
## 1.0.1 / 2020-06-15

View file

@ -17,9 +17,12 @@
package collector
import (
"errors"
"fmt"
"os"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"github.com/prometheus/client_golang/prometheus"
"golang.org/x/sys/unix"
)
@ -163,6 +166,10 @@ func (c *timexCollector) Update(ch chan<- prometheus.Metric) error {
status, err := unix.Adjtimex(timex)
if err != nil {
if errors.Is(err, os.ErrPermission) {
level.Debug(c.logger).Log("msg", "Not collecting timex metrics", "err", err)
return ErrNoData
}
return fmt.Errorf("failed to retrieve adjtimex stats: %w", err)
}