--- sites/aura/components/front/releases/1.0a221/lib/python2.7/site-packages/prometheus_client/process_collector.py.ralph 2016-08-18 10:30:57.451278000 +0100 +++ sites/aura/components/front/releases/1.0a221/lib/python2.7/site-packages/prometheus_client/process_collector.py 2016-08-18 11:53:51.811279005 +0100 @@ -3,6 +3,7 @@ from __future__ import unicode_literals import os +import errno import time import threading @@ -82,9 +83,18 @@ max_fds = core.GaugeMetricFamily(self._prefix + 'max_fds', 'Maximum number of open file descriptors.', value=float(line.split()[3])) break - open_fds = core.GaugeMetricFamily(self._prefix + 'open_fds', - 'Number of open file descriptors.', len(os.listdir(os.path.join(pid, 'fd')))) - result.extend([open_fds, max_fds]) + result.extend([max_fds]) + + try: + ls = os.listdir(os.path.join(pid, 'fd')) + except OSError as e: + # Apache MPM prefork, not threaded, has /proc/self owned by root. + if e.errno != errno.EACCES: + raise + else: + open_fds = core.GaugeMetricFamily(self._prefix + 'open_fds', + 'Number of open file descriptors.', len(ls)) + result.extend([open_fds]) except IOError: pass