init
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import config from "./config.ts";
|
||||
import axios from "axios";
|
||||
import { redis } from "./utils/redis.ts";
|
||||
import { getStats } from "./utils/getStats.ts";
|
||||
|
||||
statsTimeSeries();
|
||||
setInterval(statsTimeSeries, 5 * 60 * 1000);
|
||||
|
||||
async function statsTimeSeries() {
|
||||
if (redis) {
|
||||
console.time("timeSeries");
|
||||
try {
|
||||
const stats = await getStats();
|
||||
const isFreePoolFull = (
|
||||
await axios.get(
|
||||
"http://localhost:" + config.VMWORKER_PORT + "/isFreePoolFull",
|
||||
)
|
||||
).data.isFull;
|
||||
const datapoint: AnyDict = {
|
||||
time: new Date(),
|
||||
currentUsers: stats.counts.currentUsers,
|
||||
currentVBrowser: stats.counts.currentVBrowser,
|
||||
currentVBrowserLarge: stats.counts.currentVBrowserLarge,
|
||||
currentHttp: stats.counts.currentHttp,
|
||||
currentScreenShare: stats.counts.currentScreenShare,
|
||||
currentFileShare: stats.counts.currentFileShare,
|
||||
currentVideoChat: stats.counts.currentVideoChat,
|
||||
chatMessages: stats.counts.chatMessages,
|
||||
redisUsage: stats.counts.redisUsage,
|
||||
hetznerApiRemaining: stats.counts.hetznerApiRemaining,
|
||||
avgStartMS:
|
||||
(stats.vBrowserStartMS || []).map(Number).reduce((a, b) => a + b, 0) /
|
||||
(stats.vBrowserStartMS?.length ?? 0),
|
||||
vBrowserStarts: stats.counts.vBrowserStarts,
|
||||
vBrowserLaunches: stats.counts.vBrowserLaunches,
|
||||
vBrowserFails: stats.counts.vBrowserFails,
|
||||
vBrowserStagingFails: stats.counts.vBrowserStagingFails,
|
||||
isFreePoolFull: Number(isFreePoolFull),
|
||||
};
|
||||
Object.keys(stats.vmManagerStats).forEach((key) => {
|
||||
if (stats.vmManagerStats[key]) {
|
||||
datapoint[key] =
|
||||
stats.vmManagerStats[key]?.availableVBrowsers?.length;
|
||||
}
|
||||
});
|
||||
await redis.lpush("timeSeries", JSON.stringify(datapoint));
|
||||
await redis.ltrim("timeSeries", 0, 288);
|
||||
} catch (e: any) {
|
||||
console.warn(`[TIMESERIES] %s when collecting stats`, e.code);
|
||||
}
|
||||
console.timeEnd("timeSeries");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user