Add connections to status

This commit is contained in:
Ajay
2024-04-16 00:13:51 -04:00
parent b934b7a937
commit 07d4dde4f6
2 changed files with 10 additions and 6 deletions

View File

@@ -81,13 +81,15 @@ export function createServer(callback: () => void): Server {
// Set production mode // Set production mode
app.set("env", config.mode || "production"); app.set("env", config.mode || "production");
setupRoutes(router); const server = app.listen(config.port, callback);
return app.listen(config.port, callback); setupRoutes(router, server);
return server;
} }
/* eslint-disable @typescript-eslint/no-misused-promises */ /* eslint-disable @typescript-eslint/no-misused-promises */
function setupRoutes(router: Router) { function setupRoutes(router: Router, server: Server) {
// Rate limit endpoint lists // Rate limit endpoint lists
const voteEndpoints: RequestHandler[] = [voteOnSponsorTime]; const voteEndpoints: RequestHandler[] = [voteOnSponsorTime];
const viewEndpoints: RequestHandler[] = [viewedVideoSponsorTime]; const viewEndpoints: RequestHandler[] = [viewedVideoSponsorTime];
@@ -200,8 +202,8 @@ function setupRoutes(router: Router) {
router.get("/api/chapterNames", getChapterNames); router.get("/api/chapterNames", getChapterNames);
// get status // get status
router.get("/api/status/:value", getStatus); router.get("/api/status/:value", (req, res) => getStatus(req, res, server));
router.get("/api/status", getStatus); router.get("/api/status", (req, res) => getStatus(req, res, server));
router.get("/api/youtubeApiProxy", youtubeApiProxy); router.get("/api/youtubeApiProxy", youtubeApiProxy);
// get user category stats // get user category stats

View File

@@ -5,8 +5,9 @@ import os from "os";
import redis, { getRedisStats } from "../utils/redis"; import redis, { getRedisStats } from "../utils/redis";
import { promiseOrTimeout } from "../utils/promise"; import { promiseOrTimeout } from "../utils/promise";
import { Postgres } from "../databases/Postgres"; import { Postgres } from "../databases/Postgres";
import { Server } from "http";
export async function getStatus(req: Request, res: Response): Promise<Response> { export async function getStatus(req: Request, res: Response, server: Server): Promise<Response> {
const startTime = Date.now(); const startTime = Date.now();
let value = req.params.value as string[] | string; let value = req.params.value as string[] | string;
value = Array.isArray(value) ? value[0] : value; value = Array.isArray(value) ? value[0] : value;
@@ -42,6 +43,7 @@ export async function getStatus(req: Request, res: Response): Promise<Response>
processTime, processTime,
redisProcessTime, redisProcessTime,
loadavg: os.loadavg().slice(1), // only return 5 & 15 minute load average loadavg: os.loadavg().slice(1), // only return 5 & 15 minute load average
connections: await new Promise((resolve) => server.getConnections((_, count) => resolve(count))),
statusRequests, statusRequests,
hostname: os.hostname(), hostname: os.hostname(),
postgresStats: (db as Postgres)?.getStats?.(), postgresStats: (db as Postgres)?.getStats?.(),