-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.js
36 lines (28 loc) · 947 Bytes
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { createRequire } from "module";
const require = createRequire(import.meta.url);
import prometheus from 'prom-client';
import express from 'express';
const { Worker } = require('worker_threads');
import config from './config.js';
const app = express();
const port = config.port;
for (const chain of config.chains) {
const worker = new Worker('./websocketWorker.js');
worker.postMessage(chain);
worker.on('error', (error) => {
console.error('Worker error:', error);
});
worker.on('exit', (code) => {
if (code !== 0)
console.error(`Worker stopped with exit code ${code}`);
});
}
// Expose Prometheus metrics at /metrics
app.get('/metrics', async (req, res) => {
res.set('Content-Type', prometheus.register.contentType);
res.end(await prometheus.register.metrics());
});
// Start the HTTP server
app.listen(port, () => {
console.log(`Prometheus metrics exposed at http://localhost:${port}/metrics`);
});