You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.3 KiB

11 months ago
  1. const { SystemSettings } = require("../models/systemSettings");
  2. function utilEndpoints(app) {
  3. if (!app) return;
  4. app.get("/utils/metrics", async (_, response) => {
  5. try {
  6. const metrics = {
  7. online: true,
  8. version: getGitVersion(),
  9. mode: (await SystemSettings.isMultiUserMode())
  10. ? "multi-user"
  11. : "single-user",
  12. vectorDB: process.env.VECTOR_DB || "lancedb",
  13. storage: await getDiskStorage(),
  14. };
  15. response.status(200).json(metrics);
  16. } catch (e) {
  17. console.error(e);
  18. response.sendStatus(500).end();
  19. }
  20. });
  21. }
  22. function getGitVersion() {
  23. if (process.env.ANYTHING_LLM_RUNTIME === "docker") return "--";
  24. try {
  25. return require("child_process")
  26. .execSync("git rev-parse HEAD")
  27. .toString()
  28. .trim();
  29. } catch (e) {
  30. console.error("getGitVersion", e.message);
  31. return "--";
  32. }
  33. }
  34. function byteToGigaByte(n) {
  35. return n / Math.pow(10, 9);
  36. }
  37. async function getDiskStorage() {
  38. try {
  39. const checkDiskSpace = require("check-disk-space").default;
  40. const { free, size } = await checkDiskSpace("/");
  41. return {
  42. current: Math.floor(byteToGigaByte(free)),
  43. capacity: Math.floor(byteToGigaByte(size)),
  44. };
  45. } catch {
  46. return {
  47. current: null,
  48. capacity: null,
  49. };
  50. }
  51. }
  52. module.exports = {
  53. utilEndpoints,
  54. getGitVersion,
  55. };