fix metrics generation
- make prometheus metrics multiprocess-safe
Related-To: PRODX-51145
Change-Id: Ib61c3ced12ae65aa134dc804ab4feb44416a4053
diff --git a/sf_notifier/salesforce/client.py b/sf_notifier/salesforce/client.py
index 590f04f..51e795e 100644
--- a/sf_notifier/salesforce/client.py
+++ b/sf_notifier/salesforce/client.py
@@ -80,8 +80,8 @@
class SalesforceClient(object):
- def __init__(self, config, prometheus_registry=None):
- self.metrics = self._init_metrics(prometheus_registry)
+ def __init__(self, config):
+ self.metrics = self._init_metrics()
self._registered_alerts = TTLCache(maxsize=2048, ttl=300)
self.config = self._validate_config(config)
@@ -98,15 +98,12 @@
self.session.mount('https://', adapter)
@staticmethod
- def _init_metrics(prometheus_registry):
+ def _init_metrics():
metrics = {
'sf_auth_ok': Gauge('sf_auth_ok', 'sf-notifier',
- multiprocess_mode='max',
- registry=prometheus_registry),
- 'sf_error_count': Counter('sf_error_count', 'sf-notifier',
- registry=prometheus_registry),
- 'sf_request_count': Counter('sf_request_count', 'sf-notifier',
- registry=prometheus_registry)
+ multiprocess_mode='max'),
+ 'sf_error_count': Counter('sf_error_count', 'sf-notifier'),
+ 'sf_request_count': Counter('sf_request_count', 'sf-notifier')
}
metrics['sf_auth_ok'].set(0)
return metrics
diff --git a/sf_notifier/server.py b/sf_notifier/server.py
index 0996d4a..087ff86 100644
--- a/sf_notifier/server.py
+++ b/sf_notifier/server.py
@@ -20,11 +20,8 @@
app = Flask(__name__)
-registry = CollectorRegistry()
-multiprocess.MultiProcessCollector(registry)
-
create_file(SESSION_FILE)
-sf_cli = SalesforceClient(settings.SF_CONFIG, prometheus_registry=registry)
+sf_cli = SalesforceClient(settings.SF_CONFIG)
with app.app_context():
@@ -33,6 +30,8 @@
@app.route('/metrics', methods=['GET'])
def metrics():
+ registry = CollectorRegistry()
+ multiprocess.MultiProcessCollector(registry)
return Response(generate_latest(registry),
mimetype=CONTENT_TYPE_LATEST)