apollo-server-plugin-operation-duration
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

apollo-server-plugin-operation-duration Build Status

NPM

This Apollo server plugin exposes an interface for instrumentation of query operation duration.

The following information are exposed for instrumentation:

  • operationName
  • operationDuration
  • parsingDuration
  • validationDuration
  • executionDuration

Refer to Apollo server request lifecycle event flow.

Callback for instrumentation will only be executed for successful operations.

Usage

This is an example when instrumenting with Prometheus.

import ApolloServerOperationDuration from 'apollo-server-plugin-operation-duration';
 
import { ApolloServer, gql } from 'apollo-server';
import { Histogram, exponentialBuckets } from 'prom-client';
 
const operationDurationHistogram = new Histogram({
  name: 'operation_duration_histogram',
  help: 'GraphQL query operation duration histogram',
  labelNames: ['name'],
  buckets: exponentialBuckets(100, 2, 8),
});
 
const server = new ApolloServer({
  typeDefs: gql`
    type Book {
      title: String
      author: String
    }
 
    type Query {
      books: [Book]
    }
  `,
  mocks: true,
  mockEntireSchema: true,
  plugins: [
    ApolloServerOperationDuration({
      callback: ({ operationName, operationDuration, parsingDuration, validationDuration, executionDuration }) => {
        operationDurationHistogram.labels(operationName).observe(operationDuration);
      },
    })
  ],
});
 
server.listen().then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`);
});

Package Sidebar

Install

npm i apollo-server-plugin-operation-duration

Weekly Downloads

2

Version

0.1.1

License

MIT

Unpacked Size

11.4 kB

Total Files

8

Last publish

Collaborators

  • zulhilmizainuddin