|
1 | | -import client from 'prom-client' |
2 | | -const db = require('./db/DB').db |
| 1 | +import client from 'prom-client'; |
3 | 2 |
|
4 | | -const monitor = function () { |
5 | | - const collectDefaultMetrics = client.collectDefaultMetrics; |
6 | | - const Registry = client.Registry; |
7 | | - const register = new Registry(); |
8 | | - collectDefaultMetrics({register}); |
9 | | - const gaugeDB = new client.Gauge({ |
10 | | - name: "ueberdb_stats", |
11 | | - help: "ueberdb stats", |
12 | | - labelNames: ['type'], |
13 | | - }) |
| 3 | +const db = require('./db/DB').db; |
| 4 | +const PadMessageHandler = require('./handler/PadMessageHandler'); |
14 | 5 |
|
| 6 | +const register = new client.Registry(); |
| 7 | +const gaugeDB = new client.Gauge({ |
| 8 | + name: 'ueberdb_stats', |
| 9 | + help: 'ueberdb stats', |
| 10 | + labelNames: ['type'], |
| 11 | +}); |
| 12 | +register.registerMetric(gaugeDB); |
| 13 | + |
| 14 | +const totalUsersGauge = new client.Gauge({ |
| 15 | + name: 'etherpad_total_users', |
| 16 | + help: 'Total number of users', |
| 17 | +}); |
| 18 | +register.registerMetric(totalUsersGauge); |
| 19 | + |
| 20 | +const activePadsGauge = new client.Gauge({ |
| 21 | + name: 'etherpad_active_pads', |
| 22 | + help: 'Total number of active pads', |
| 23 | +}); |
| 24 | +register.registerMetric(activePadsGauge); |
| 25 | + |
| 26 | +client.collectDefaultMetrics({register}); |
| 27 | + |
| 28 | +const monitor = async function () { |
15 | 29 | for (const [metric, value] of Object.entries(db.metrics)) { |
16 | 30 | if (typeof value !== 'number') continue; |
17 | 31 | gaugeDB.set({type: metric}, value); |
18 | 32 | } |
19 | | - |
20 | | - |
21 | | - register.registerMetric(gaugeDB); |
22 | | - return register |
| 33 | + activePadsGauge.set(PadMessageHandler.getActivePadCountFromSessionInfos()); |
| 34 | + totalUsersGauge.set(PadMessageHandler.getTotalActiveUsers()); |
| 35 | + return register; |
23 | 36 | }; |
24 | 37 |
|
25 | 38 | export default monitor; |
0 commit comments