diff --git a/plugins/inputs/system/processes.go b/plugins/inputs/system/processes.go index 202bdf058..09aa37afb 100644 --- a/plugins/inputs/system/processes.go +++ b/plugins/inputs/system/processes.go @@ -12,6 +12,7 @@ import ( "path/filepath" "runtime" "strconv" + "syscall" "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/plugins/inputs" @@ -195,6 +196,13 @@ func readProcFile(filename string) ([]byte, error) { if os.IsNotExist(err) { return nil, nil } + + // Reading from /proc/ fails with ESRCH if the process has + // been terminated between open() and read(). + if perr, ok := err.(*os.PathError); ok && perr.Err == syscall.ESRCH { + return nil, nil + } + return nil, err }