added cron job to log collection sizes

This commit is contained in:
Miodec 2023-01-30 16:53:02 +01:00
parent 2b0ccbe44c
commit 921aa94dc7
3 changed files with 37 additions and 1 deletions

View file

@ -1,4 +1,5 @@
import updateLeaderboards from "./update-leaderboards";
import deleteOldLogs from "./delete-old-logs";
import logCollectionSizes from "./log-collection-sizes";
export default [updateLeaderboards, deleteOldLogs];
export default [updateLeaderboards, deleteOldLogs, logCollectionSizes];

View file

@ -0,0 +1,25 @@
import { CronJob } from "cron";
import * as db from "../init/db";
import * as Prometheus from "../utils/prometheus";
const CRON_SCHEDULE = "0 0 * * * *";
function main(): void {
Promise.all([
set("ape-keys"),
set("configs"),
set("errors"),
set("logs"),
set("presets"),
set("reports"),
set("results"),
set("users"),
]);
}
async function set(collection: string): Promise<void> {
const size = await db.collection(collection).estimatedDocumentCount();
Prometheus.setCollectionSize(collection, size);
}
export default new CronJob(CRON_SCHEDULE, main);

View file

@ -267,3 +267,13 @@ const uidRequestCount = new Counter({
export function recordRequestForUid(uid: string): void {
uidRequestCount.inc({ uid });
}
const collectionSize = new Gauge({
name: "db_collection_size",
help: "Size of a collection",
labelNames: ["collection"],
});
export function setCollectionSize(collection: string, size: number): void {
collectionSize.set({ collection }, size);
}