Path: blob/master/src/packages/hub/servers/app/stats.ts
1503 views
import { Router } from "express";1import { callback2 } from "@cocalc/util/async-utils";2import { database_is_working } from "@cocalc/server/metrics/hub_register";3import { database } from "../database";45export default function init(router: Router) {6// Return global status information about CoCalc7router.get("/stats", async (_req, res) => {8if (!database_is_working()) {9res.json({ error: "not connected to database" });10return;11}12res.header("Cache-Control", "no-cache, no-store");13try {14const stats = await callback2(database.get_stats, {15update: false, // never update in hub b/c too slow. instead, run $ hub --update_stats via a cronjob every minute16ttl: 30,17});18res.header("Content-Type", "application/json");19res.send(JSON.stringify(stats, null, 1));20} catch (err) {21res.status(500).send(`internal error: ${err}`);22}23});24}252627