Skip to content

Commit acbd2d3

Browse files
committed
Merge pull request #70 from prometheus/handle-process-collector-errors-gracefully
Handle process collector errors gracefully
2 parents 6760c3a + 98061ee commit acbd2d3

File tree

1 file changed

+6
-27
lines changed

1 file changed

+6
-27
lines changed

prometheus/process_collector_procfs.go

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,61 +24,40 @@ func processCollectSupported() bool {
2424
return false
2525
}
2626

27+
// TODO(ts): Bring back error reporting by reverting 7faf9e7 as soon as the
28+
// client allows users to configure the error behavior.
2729
func (c *processCollector) processCollect(ch chan<- Metric) {
2830
pid, err := c.pidFn()
2931
if err != nil {
30-
c.reportCollectErrors(ch, err)
3132
return
3233
}
3334

3435
p, err := procfs.NewProc(pid)
3536
if err != nil {
36-
c.reportCollectErrors(ch, err)
3737
return
3838
}
3939

40-
if stat, err := p.NewStat(); err != nil {
41-
// Report collect errors for metrics depending on stat.
42-
ch <- NewInvalidMetric(c.vsize.Desc(), err)
43-
ch <- NewInvalidMetric(c.rss.Desc(), err)
44-
ch <- NewInvalidMetric(c.startTime.Desc(), err)
45-
ch <- NewInvalidMetric(c.cpuTotal.Desc(), err)
46-
} else {
40+
if stat, err := p.NewStat(); err == nil {
4741
c.cpuTotal.Set(stat.CPUTime())
4842
ch <- c.cpuTotal
4943
c.vsize.Set(float64(stat.VirtualMemory()))
5044
ch <- c.vsize
5145
c.rss.Set(float64(stat.ResidentMemory()))
5246
ch <- c.rss
5347

54-
if startTime, err := stat.StartTime(); err != nil {
55-
ch <- NewInvalidMetric(c.startTime.Desc(), err)
56-
} else {
48+
if startTime, err := stat.StartTime(); err == nil {
5749
c.startTime.Set(startTime)
5850
ch <- c.startTime
5951
}
6052
}
6153

62-
if fds, err := p.FileDescriptorsLen(); err != nil {
63-
ch <- NewInvalidMetric(c.openFDs.Desc(), err)
64-
} else {
54+
if fds, err := p.FileDescriptorsLen(); err == nil {
6555
c.openFDs.Set(float64(fds))
6656
ch <- c.openFDs
6757
}
6858

69-
if limits, err := p.NewLimits(); err != nil {
70-
ch <- NewInvalidMetric(c.maxFDs.Desc(), err)
71-
} else {
59+
if limits, err := p.NewLimits(); err == nil {
7260
c.maxFDs.Set(float64(limits.OpenFiles))
7361
ch <- c.maxFDs
7462
}
7563
}
76-
77-
func (c *processCollector) reportCollectErrors(ch chan<- Metric, err error) {
78-
ch <- NewInvalidMetric(c.cpuTotal.Desc(), err)
79-
ch <- NewInvalidMetric(c.openFDs.Desc(), err)
80-
ch <- NewInvalidMetric(c.maxFDs.Desc(), err)
81-
ch <- NewInvalidMetric(c.vsize.Desc(), err)
82-
ch <- NewInvalidMetric(c.rss.Desc(), err)
83-
ch <- NewInvalidMetric(c.startTime.Desc(), err)
84-
}

0 commit comments

Comments
 (0)