Add collectors to monitoring (#6777)

* Add collectors to monitoring * Pass request and response objects to collectors

Daniel Hammerschmidt committed Feb 20, 2025 at 23:37 UTC 3f77cfa93aa16aebe5d88438ff8b9015bc02e474
1 file changed +3
monitoring.js
+3
@@ -42,6 +42,7 @@ module.exports.CreateMonitoring = function (parent, args) {
42 RelaySessions: { description: "Relay Sessions" }, // parent.webserver.relaySessionCount
43 RelayCount: { description: "Relay Count" } // Object.keys(parent.webserver.wsrelays).length30bb4fb74dfb758d36be52a7
44 }
45 + obj.collectors = [];
46 if (parent.config.settings.prometheus != null) { // Create Prometheus Monitoring Endpoint
47 if ((typeof parent.config.settings.prometheus == 'number') && ((parent.config.settings.prometheus < 1) || (parent.config.settings.prometheus > 65535))) {
48 console.log('Promethus port number is invalid, Prometheus metrics endpoint has be disabled');
@@ -103,6 +104,7 @@ module.exports.CreateMonitoring = function (parent, args) {
104 };
105 for (const key in counters) { obj.counterMetrics[key].prometheus.reset(); obj.counterMetrics[key].prometheus.inc(counters[key]); }
106 res.set('Content-Type', obj.prometheus.register.contentType);
107 + await Promise.all(obj.collectors.map((collector) => (collector(req, res))));
108 res.end(await obj.prometheus.register.metrics());
109 } catch (ex) {
110 console.log(ex);
@@ -111,4 +113,5 @@ module.exports.CreateMonitoring = function (parent, args) {
113 });
114 }
115 }
116 + return obj;
117 }
\ No newline at end of file