etherpad-lite/src/node/prometheus.ts
Phillip 06f67b4c01
fix prometheus metric and add total users and active pad count (#7179)
* fix prometheus metric registration

* add totalUsers and activePads metric to prometheus
2025-10-19 17:27:21 +02:00

38 lines
1 KiB
TypeScript

import client from 'prom-client';
const db = require('./db/DB').db;
const PadMessageHandler = require('./handler/PadMessageHandler');
const register = new client.Registry();
const gaugeDB = new client.Gauge({
name: 'ueberdb_stats',
help: 'ueberdb stats',
labelNames: ['type'],
});
register.registerMetric(gaugeDB);
const totalUsersGauge = new client.Gauge({
name: 'etherpad_total_users',
help: 'Total number of users',
});
register.registerMetric(totalUsersGauge);
const activePadsGauge = new client.Gauge({
name: 'etherpad_active_pads',
help: 'Total number of active pads',
});
register.registerMetric(activePadsGauge);
client.collectDefaultMetrics({register});
const monitor = async function () {
for (const [metric, value] of Object.entries(db.metrics)) {
if (typeof value !== 'number') continue;
gaugeDB.set({type: metric}, value);
}
activePadsGauge.set(PadMessageHandler.getActivePadCountFromSessionInfos());
totalUsersGauge.set(PadMessageHandler.getTotalActiveUsers());
return register;
};
export default monitor;