diff --git a/backend/src/middlewares/error.ts b/backend/src/middlewares/error.ts index 8a8e02c10..043087acf 100644 --- a/backend/src/middlewares/error.ts +++ b/backend/src/middlewares/error.ts @@ -5,9 +5,13 @@ import MonkeyError from "../utils/error"; import { incrementBadAuth } from "./rate-limit"; import { NextFunction, Response } from "express"; import { MonkeyResponse, handleMonkeyResponse } from "../utils/monkey-response"; -import { recordClientErrorByVersion } from "../utils/prometheus"; +import { + recordClientErrorByVersion, + recordServerErrorByVersion, +} from "../utils/prometheus"; import { isDevEnvironment } from "../utils/misc"; import { ObjectId } from "mongodb"; +import { version } from "../version"; type DBError = { _id: ObjectId; @@ -61,6 +65,8 @@ async function errorHandlingMiddleware( monkeyResponse.status >= 500 && monkeyResponse.status !== 503 ) { + recordServerErrorByVersion(version); + const { uid, errorId } = monkeyResponse.data; try { diff --git a/backend/src/utils/prometheus.ts b/backend/src/utils/prometheus.ts index 4b0ff20c0..55c5f0a96 100644 --- a/backend/src/utils/prometheus.ts +++ b/backend/src/utils/prometheus.ts @@ -189,6 +189,16 @@ export function recordClientErrorByVersion(version: string): void { clientErrorByVersion.inc({ version }); } +const serverErrorByVersion = new Counter({ + name: "api_server_error_by_version", + help: "Server versions which are generating 500 errors", + labelNames: ["version"], +}); + +export function recordServerErrorByVersion(version: string): void { + serverErrorByVersion.inc({ version }); +} + const authTime = new Histogram({ name: "api_request_auth_time", help: "Time spent authenticating",