1.0.19 • Published 2 years ago

graphql-prometheus v1.0.19

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

graphql-prometheus

a thin layer to measure the resolvers and queries initiated in your grpahql setup

install

npm i graphql-prometheus
// import the package
import * as metrics from 'graphql-prometheus'

register the metrics, pass in a reporter if you want to create your own

// use default, global register
metrics.register()

// or
metrics.register({ registers: [register] })

// or
import { Registry } from 'graphql-prometheus'
const registry = new Registry(registers)
metrics.register(registry)

listen to each resolve function

// resolvers.js

// measure timing for this resolver, no matter where it is used
export const analytics = metrics.resolver((parent, args, request) => {
  return db.query('select * from analytics')
})

listen to the query / mutation side

// query.js
// use the request method(s) for root entries,
// to only measure complete queries once
const user = {
  type: UserType,
  resolve: metrics.request((parent, args, request) => {
    return await db.getUser(request.userId)
  }),
}

export const query = new graphql.GraphQLObjectType({
  name: 'Query',
  fields: () => ({
    user,
  })
})

// or
export const query = new graphql.GraphQLObjectType({
  name: 'Query',
  fields: () => metrics.requests({
    user: {
      type: UserType,
      resolve: (parent, args, request) => {
        return await db.getUser(request.userId)
      },
    },
  }),
})
// mutation.js
export const mutation = new graphql.GraphQLObjectType({
  name: 'Mutation',
  fields: () => metrics.requests({
    createItem: {
      type: ItemType,
      args: {
        name: { type: graphql.GraphQLString },
      },
      resolve: async (parent, args, request) => {
        return await db.insertItem(args.name)
      },
    },
  }),
})
// parser.js
import * as graphql from 'graphql'
export const parser = metrics.parse()

// or
export const parser = metrics.parse(customParser)
1.0.19

2 years ago

1.0.18

3 years ago

1.0.17

3 years ago

1.0.16

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago