From e0ce598be5927a3042196046c0dc8f3f7718d2a0 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 12 Feb 2024 11:29:08 +0800 Subject: [PATCH] Move apollo prom init into apollo.ts file --- packages/api/src/apollo.ts | 13 ++++++++++++- packages/api/src/server.ts | 10 +--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/api/src/apollo.ts b/packages/api/src/apollo.ts index c24058a8a..2559197ba 100644 --- a/packages/api/src/apollo.ts +++ b/packages/api/src/apollo.ts @@ -7,6 +7,7 @@ import { makeExecutableSchema } from '@graphql-tools/schema' import * as Sentry from '@sentry/node' import { ContextFunction, PluginDefinition } from 'apollo-server-core' +import { Express } from 'express' import { ApolloServer } from 'apollo-server-express' import { ExpressContext } from 'apollo-server-express/dist/ApolloServer' import * as httpContext from 'express-http-context2' @@ -26,6 +27,7 @@ import { getClaimsByToken, setAuthInCookie } from './utils/auth' import { SetClaimsRole } from './utils/dictionary' import { logger } from './utils/logger' import { ReadingProgressDataSource } from './datasources/reading_progress_data_source' +import { createPrometheusExporterPlugin } from '@bmatei/apollo-prometheus-exporter' const signToken = promisify(jwt.sign) const pubsub = createPubSubClient() @@ -93,7 +95,7 @@ const contextFunc: ContextFunction = async ({ return ctx } -export function makeApolloServer(promExporter: PluginDefinition): ApolloServer { +export function makeApolloServer(app: Express): ApolloServer { let schema = makeExecutableSchema({ resolvers, typeDefs, @@ -101,6 +103,15 @@ export function makeApolloServer(promExporter: PluginDefinition): ApolloServer { schema = sanitizeDirectiveTransformer(schema) + const promExporter: PluginDefinition = createPrometheusExporterPlugin({ + app, + hostnameLabel: false, + defaultMetrics: false, + defaultLabels: { + service: 'api', + }, + }) + const apollo = new ApolloServer({ schema: schema, context: contextFunc, diff --git a/packages/api/src/server.ts b/packages/api/src/server.ts index fa20ddb41..ca08e3e0b 100755 --- a/packages/api/src/server.ts +++ b/packages/api/src/server.ts @@ -168,15 +168,7 @@ export const createApp = (): { res.end(await prom.register.metrics()) }) - const promExporter = createPrometheusExporterPlugin({ - app, - hostnameLabel: false, - defaultMetrics: false, - defaultLabels: { - service: 'api', - }, - }) - const apollo = makeApolloServer(promExporter) + const apollo = makeApolloServer(app) const httpServer = createServer(app) return { app, apollo, httpServer }