diff --git a/.gitignore b/.gitignore index a21273d6..cdb74cc2 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ docker-compose.yml # cookie file cookies.json + +# pnpm +pnpm-lock.yaml \ No newline at end of file diff --git a/package.json b/package.json index c5e9d214..7c3a4304 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,14 @@ "dotenv": "^16.0.1", "esbuild": "^0.14.51", "express": "^4.18.1", + "express-prometheus-middleware": "^1.2.0", "express-rate-limit": "^6.3.0", "ffmpeg-static": "^5.1.0", "hls-parser": "^0.10.7", "ipaddr.js": "2.1.0", "nanoid": "^4.0.2", "node-cache": "^5.1.2", + "prom-client": "^15.1.2", "psl": "1.9.0", "set-cookie-parser": "2.6.0", "undici": "^6.7.0", diff --git a/src/core/api.js b/src/core/api.js index eda3c014..d9fa5eb5 100644 --- a/src/core/api.js +++ b/src/core/api.js @@ -1,6 +1,7 @@ import cors from "cors"; import rateLimit from "express-rate-limit"; import { randomBytes } from "crypto"; +import expressPrometheusMiddleware from "express-prometheus-middleware"; const ipSalt = randomBytes(64).toString('hex'); @@ -65,6 +66,13 @@ export function runAPI(express, app, gitCommit, gitBranch, __dirname) { next(); }); + app.use(expressPrometheusMiddleware({ + metricsPath: "/metrics", + collectDefaultMetrics: true, + collectGCMetrics: true, + metricsApp: app, + })) + app.use('/api/json', express.json({ verify: (req, res, buf) => { let acceptCon = String(req.header('Accept')) === "application/json";