From a4addeaa3a4dcc7b996737012b214c3377808824 Mon Sep 17 00:00:00 2001 From: sanasol Date: Thu, 19 Sep 2024 22:14:19 +0300 Subject: [PATCH 1/3] feat: Allow to set custom healthcheck endpoint path, add healthcheck to app --- docker-compose.yml | 2 ++ packages/api/src/routers/api/root.ts | 2 +- packages/app/Dockerfile | 7 ++++--- packages/app/middleware.ts | 12 ++++++++++++ packages/app/tsconfig.json | 2 +- 5 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 packages/app/middleware.ts diff --git a/docker-compose.yml b/docker-compose.yml index a49eb0e71..1d7c6f26d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -178,6 +178,7 @@ services: REDIS_URL: redis://redis:6379 SERVER_URL: ${HYPERDX_API_URL}:${HYPERDX_API_PORT} USAGE_STATS_ENABLED: ${USAGE_STATS_ENABLED:-true} + HEALTHCHECK_PATH: '/healthcheck' networks: - internal depends_on: @@ -194,6 +195,7 @@ services: HYPERDX_API_KEY: ${HYPERDX_API_KEY} NODE_ENV: development PORT: ${HYPERDX_APP_PORT} + HEALTHCHECK_PATH: '/healthcheck' networks: - internal depends_on: diff --git a/packages/api/src/routers/api/root.ts b/packages/api/src/routers/api/root.ts index e3d8fae52..6fc97d9bf 100644 --- a/packages/api/src/routers/api/root.ts +++ b/packages/api/src/routers/api/root.ts @@ -43,7 +43,7 @@ const registrationSchema = z const router = express.Router(); -router.get('/health', async (req, res) => { +router.get(process.env.HEALTHCHECK_PATH || '/healthcheck', async (req, res) => { res.send({ data: 'OK', version: config.CODE_VERSION, ip: req.ip }); }); diff --git a/packages/app/Dockerfile b/packages/app/Dockerfile index 34a29ad6d..fe1d1f086 100644 --- a/packages/app/Dockerfile +++ b/packages/app/Dockerfile @@ -32,9 +32,10 @@ ENV NEXT_PUBLIC_OTEL_SERVICE_NAME $OTEL_SERVICE_NAME ENV NEXT_PUBLIC_SERVER_URL $SERVER_URL COPY ./packages/app/tsconfig.json ./packages/app/next.config.js ./packages/app/mdx.d.ts ./packages/app/.eslintrc.js ./ -COPY ./packages/app/src ./src -COPY ./packages/app/pages ./pages -COPY ./packages/app/public ./public +COPY ./packages/app/middleware.ts ./ +COPY ./packages/app/src ./src +COPY ./packages/app/pages ./pages +COPY ./packages/app/public ./public COPY ./packages/app/styles ./styles COPY --from=base /app/node_modules ./node_modules RUN yarn build && yarn install --production --ignore-scripts --prefer-offline diff --git a/packages/app/middleware.ts b/packages/app/middleware.ts new file mode 100644 index 000000000..32071672a --- /dev/null +++ b/packages/app/middleware.ts @@ -0,0 +1,12 @@ +import type { NextRequest } from 'next/server'; +import { NextResponse } from 'next/server'; + +const healthCheckUrl = process.env.HEALTHCHECK_PATH || '/healthcheck'; + +export function middleware(request: NextRequest) { + if (healthCheckUrl === request.nextUrl.pathname) { + return NextResponse.json({ data: 'ok' }, { status: 200 }); + } + + return NextResponse.next(); +} diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index 4ec0ec097..2111fe0a7 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -23,6 +23,6 @@ "@styles/*": ["styles/*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "middleware.ts"], "exclude": ["node_modules"] } From 61ac452fdf29d99dcc54c573c8d7ee39e34a64fd Mon Sep 17 00:00:00 2001 From: sanasol Date: Thu, 19 Sep 2024 22:16:59 +0300 Subject: [PATCH 2/3] feat: Allow to set custom healthcheck endpoint path, add healthcheck to app --- docker-compose.yml | 4 ++-- packages/api/src/routers/api/root.ts | 2 +- packages/app/middleware.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1d7c6f26d..f31703aef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -178,7 +178,7 @@ services: REDIS_URL: redis://redis:6379 SERVER_URL: ${HYPERDX_API_URL}:${HYPERDX_API_PORT} USAGE_STATS_ENABLED: ${USAGE_STATS_ENABLED:-true} - HEALTHCHECK_PATH: '/healthcheck' + HEALTHCHECK_PATH: '/health' networks: - internal depends_on: @@ -195,7 +195,7 @@ services: HYPERDX_API_KEY: ${HYPERDX_API_KEY} NODE_ENV: development PORT: ${HYPERDX_APP_PORT} - HEALTHCHECK_PATH: '/healthcheck' + HEALTHCHECK_PATH: '/health' networks: - internal depends_on: diff --git a/packages/api/src/routers/api/root.ts b/packages/api/src/routers/api/root.ts index 6fc97d9bf..8988d4a6f 100644 --- a/packages/api/src/routers/api/root.ts +++ b/packages/api/src/routers/api/root.ts @@ -43,7 +43,7 @@ const registrationSchema = z const router = express.Router(); -router.get(process.env.HEALTHCHECK_PATH || '/healthcheck', async (req, res) => { +router.get(process.env.HEALTHCHECK_PATH || '/health', async (req, res) => { res.send({ data: 'OK', version: config.CODE_VERSION, ip: req.ip }); }); diff --git a/packages/app/middleware.ts b/packages/app/middleware.ts index 32071672a..66a7221ea 100644 --- a/packages/app/middleware.ts +++ b/packages/app/middleware.ts @@ -1,7 +1,7 @@ import type { NextRequest } from 'next/server'; import { NextResponse } from 'next/server'; -const healthCheckUrl = process.env.HEALTHCHECK_PATH || '/healthcheck'; +const healthCheckUrl = process.env.HEALTHCHECK_PATH || '/health'; export function middleware(request: NextRequest) { if (healthCheckUrl === request.nextUrl.pathname) { From d12cc5100b96ce17d0592506acd2a21e380c926a Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 19 Sep 2024 22:22:42 +0300 Subject: [PATCH 3/3] Create mean-plums-jam.md --- .changeset/mean-plums-jam.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/mean-plums-jam.md diff --git a/.changeset/mean-plums-jam.md b/.changeset/mean-plums-jam.md new file mode 100644 index 000000000..ef3879c33 --- /dev/null +++ b/.changeset/mean-plums-jam.md @@ -0,0 +1,6 @@ +--- +"@hyperdx/api": patch +"@hyperdx/app": patch +--- + +Allow to set custom healthcheck endpoint path + app healthcheck