Prometheus
Prometheus is a platform for scraping metrics from services and utilities. You can use
@graphql-mesh/plugin-prometheus plugin to expose and collect metrics from all phases of your
GraphQL execution including internal query planning and outgoing HTTP requests.
This plugin tracks the complete gateway execution flow and exposes the following metrics:
- Successful requests (
requestCount) - Request summary (
requestSummary) - errors (categorized by 
phase) - resolvers tracing and runtime
 - deprecated fields usage
 - count of graphql operations
 parseexecution timevalidateexecution timecontextBuildingexecution timeexecuteexecution time- Latency of outgoing HTTP request
 - Latency of the delegation to the individual sources
 
Getting Started
npm i @graphql-mesh/plugin-prometheus prom-clientExample Configuration
.meshrc.yaml
# ...
plugins:
  - prometheus:
    # all optional, and by default, all set to false, please opt-in to the metrics you wish to get
 
    # requires `execute` to be true
    requestCount: true
    # requires `execute` to be true
    requestSummary: true
    parse: true
    validate: true
    contextBuilding: true
    execute: true
    errors: true
    resolvers: true
 
    # reports metrics for the delegation to the individual sources
    delegation: true
 
    # reports metrics for the outgoing HTTP requests
    fetch: true
    # Adds the request headers to the metrics
    fetchRequestHeaders: true
    # Adds the response headers to the metrics
    fetchResponseHeaders: true
 
    # reports metrics for the incoming HTTP requests (this sets a custom name for http)
    # If you pass a string instead of boolean, it will be used as the name of the metric
    http: my-http-duration-metric
    # Adds the request headers to the metrics
    httpRequestHeaders: true
    # Adds the response headers to the metrics
    httpResponseHeaders: true
 
    # reports metrics also for these resolvers, by default all fields are reported
    resolversWhiteList:
      - Mutation.*
      - Query.user
    deprecatedFields: true
    # the path of the endpoint to expose the metrics, default is /metrics
    endpoint: /metricsNote: Tracing resolvers using
resolvers: truemight have a performance impact on your GraphQL runtime. Please consider to test it locally first and then decide if it's needed.
Custom Registry
You can customize the client's registry by passing a custom registry to the registry option.
myRegistry.ts
// myRegistry.ts
import { Registry } from 'prom-client';
 
export default const myRegistry = new Registry();.meshrc.yaml
# ...
plugins:
  - prometheus:
      # ...
      registry: ./myRegistry.tsConfig API Reference
requestCount- One of:BooleanString
requestTotalDuration- One of:BooleanString
requestSummary- One of:BooleanString
parse- One of:BooleanString
validate- One of:BooleanString
contextBuilding- One of:BooleanString
execute- One of:BooleanString
errors- One of:BooleanString
deprecatedFields- One of:BooleanString
skipIntrospection(type:Boolean)registry(type:String)delegation- One of:BooleanString
fetch- One of:BooleanString
fetchRequestHeaders(type:Boolean)fetchResponseHeaders(type:Boolean)http- One of:BooleanString
httpRequestHeaders(type:Boolean)httpResponseHeaders(type:Boolean)endpoint(type:String) - The path to the metrics endpoint default:/metrics