Apollo Request Tracer
Extension for tracing GraphQL query resolution in ApolloServer
Primary motivation of this lib is tracking cold and warm start performance of GraphQL in serverless environments (AWS Lambda, Google Cloud Functions)
Install
yarn add apollo-request-tracer@1.0.2
Usage
const Tracer = require('apollo-request-tracer');
const tracer = Tracer.start();
let requireTimer = tracer.time('module_requires');
const Express = require('Express');
const {ApolloServer, gql} = require('apollo-server-express');
const Functions = require('firebase-functions');
const Models = require('./Models');
requireTimer.stop();
let setupTimer = tracer.time('graphql_setup');
const typeDefs = gql`
type Query {
hello(name: String): String
}
`;
const resolvers = {
Query: {
hello: async (args, context)=> {
const {tracer} = context;
const timer = tracer.time('build_hello_message');
const message = `Hello ${args.name}!`;
timer.stop();
return message;
}
}
};
const server = new ApolloServer({
typeDefs,
resolvers,
extensions: [tracer.request]
});
const app = Express();
server.applyMiddleware({app, path: '/'});
module.exports = {
graphql: Functions.https.onRequest(app);
};
setupTimer.stop();
tracer.stop();