@opentelemetry/instrumentation-graphql

OpenTelemetry @opentelemetry/instrumentation-graphql automatic instrumentation package.

Usage no npm install needed!

<script type="module">
  import opentelemetryInstrumentationGraphql from 'https://cdn.skypack.dev/@opentelemetry/instrumentation-graphql';
</script>

README

OpenTelemetry Instrumentation GraphQL

NPM Published Version dependencies devDependencies Apache License

This module provides automated instrumentation and tracing for GraphQL in Node.js applications.

Note: graphql plugin instruments graphql directly. it should work with any package that wraps the graphql package (e.g apollo).

Compatible with OpenTelemetry JS API and SDK 1.0+.

Installation

npm install @opentelemetry/instrumentation-graphql

Supported Versions

>=14 <16

Usage

'use strict';

const { GraphQLInstrumentation } = require('@opentelemetry/instrumentation-graphql');
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');

const provider = new NodeTracerProvider();
provider.register();

registerInstrumentations({
  instrumentations: [
    new GraphQLInstrumentation({
    // optional params
      // allowValues: true,
      // depth: 2,
      // mergeItems: true,
    }),
  ],
});

Optional Parameters

Param type Default Value Description
mergeItems boolean false Whether to merge list items into a single element. example: users.*.name instead of users.0.name, users.1.name
depth number -1 The maximum depth of fields/resolvers to instrument. When set to 0 it will not instrument fields and resolvers. When set to -1 it will instrument all fields and resolvers.
allowValues boolean false When set to true it will not remove attributes values from schema source. By default all values that can be sensitive are removed and replaced with "*"
responseHook GraphQLInstrumentationExecutionResponseHook undefined Hook that allows adding custom span attributes based on the data returned from "execute" GraphQL action.

Examples

Can be found here

Useful links

License

Apache 2.0 - See LICENSE for more information.