From 7f7ebec6930acdc3c97d1725e6b470d6c127000d Mon Sep 17 00:00:00 2001 From: William Phetsinorath Date: Fri, 13 Mar 2026 17:22:32 +0100 Subject: [PATCH] chore(server-nestjs): migrate monitoring probes Signed-off-by: William Phetsinorath --- .vscode/launch.json | 18 ++++++++ .../configuration/configuration.service.ts | 1 + .../modules/keycloak/keycloack.controller.ts | 41 +++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 apps/server-nestjs/src/modules/keycloak/keycloack.controller.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 2bce8942d..10fc205aa 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -155,6 +155,24 @@ "request": "launch", "url": "http://localhost:8080", "webRoot": "${workspaceFolder}/apps/client" + }, + + { + "name": "Launch Server NestJS", + "type": "node", + "request": "launch", + "runtimeExecutable": "pnpm", + "runtimeArgs": [ + "run", + "start:debug" + ], + "cwd": "${workspaceFolder}/apps/server-nestjs", + "console": "internalConsole", + "restart": true, + "skipFiles": [ + "/**", + "${workspaceFolder}/node_modules/**/*.js" + ] } ], "compounds": [ diff --git a/apps/server-nestjs/src/cpin-module/infrastructure/configuration/configuration.service.ts b/apps/server-nestjs/src/cpin-module/infrastructure/configuration/configuration.service.ts index 750f450d7..7921fb8a2 100644 --- a/apps/server-nestjs/src/cpin-module/infrastructure/configuration/configuration.service.ts +++ b/apps/server-nestjs/src/cpin-module/infrastructure/configuration/configuration.service.ts @@ -19,6 +19,7 @@ export class ConfigurationService { // keycloak sessionSecret = process.env.SESSION_SECRET + keycloakUrl = process.env.KEYCLOAK_URL keycloakProtocol = process.env.KEYCLOAK_PROTOCOL keycloakDomain = process.env.KEYCLOAK_DOMAIN keycloakRealm = process.env.KEYCLOAK_REALM diff --git a/apps/server-nestjs/src/modules/keycloak/keycloack.controller.ts b/apps/server-nestjs/src/modules/keycloak/keycloack.controller.ts new file mode 100644 index 000000000..99f1a7ec4 --- /dev/null +++ b/apps/server-nestjs/src/modules/keycloak/keycloack.controller.ts @@ -0,0 +1,41 @@ +import { Controller, Get } from '@nestjs/common' +import { Monitor, MonitorStatus } from '@cpn-console/shared' +import type { MonitorInfos } from '@cpn-console/shared' +import type { ConfigurationService } from '../../cpin-module/infrastructure/configuration/configuration.service' + +@Controller('keycloak') +export class KeycloakController { + private monitor: Monitor + + constructor( + private readonly configService: ConfigurationService, + ) { + this.monitor = new Monitor(async (instance): Promise => { + instance.lastStatus.lastUpdateTimestamp = Date.now() + try { + if (!this.configService.keycloakUrl) { + throw new Error('keycloakUrl is not defined') + } + const res = await fetch(this.configService.keycloakUrl) + if (res.status === 200) { + instance.lastStatus.status = MonitorStatus.OK + instance.lastStatus.message = MonitorStatus.OK + return instance.lastStatus + } + instance.lastStatus.status = MonitorStatus.ERROR + instance.lastStatus.message = 'Service en erreur' + return instance.lastStatus + } catch (error) { + instance.lastStatus.message = 'Erreur lors la requĂȘte' + instance.lastStatus.status = MonitorStatus.UNKNOW + instance.lastStatus.cause = error + } + return instance.lastStatus + }) + } + + @Get('status') + async status(): Promise { + return this.monitor.lastStatus + } +}