@lifeomic/graphql-resolvers-xray-tracing

A GraphQL middleware to enable X-Ray tracing subsegments for GraphQL resolvers

Showing:

Popularity

Downloads/wk

3.3K

GitHub Stars

48

Maintenance

Last Commit

3mos ago

Contributors

20

Package

Dependencies

2

Size (min+gzip)

26.1KB

License

MIT

Type Definitions

Built-In

Tree-Shakeable

No?

Categories

Readme

GraphQL Middleware to add X-Ray tracing for resolvers

npm Greenkeeper badge Build Status Coverage Status

To enable X-Ray subsegment creation for GraphQL resolvers, add this package as a dependency of your project and use code like this:

const traceResolvers = require('@lifeomic/graphql-resolvers-xray-tracing');
const schema = makeExecutableSchema( ... );
traceResolvers(schema);

After enabling X-Ray tracing, you should see new subsegments in your X-Ray traces like this:

Image of X-Ray trace

Local Development

If you would like to run your GraphQL server without tracing the resolvers (such as during local development), you can use environment variables to conditionally wrap them. For example, the AWS Lambda runtime injects the AWS_LAMBDA_FUNCTION_NAME which you can use so that the resolvers are only traced when running on Lambda:

const traceResolvers = require('@lifeomic/graphql-resolvers-xray-tracing');
const schema = makeExecutableSchema( ... );
if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
  traceResolvers(schema);
}

AWS Segment Size Limitation

AWS has a 64K upload limit when submitting segements to AWS see AWSXRay concepts segments.

If you try and submit more than this limit you will see the following aws error message
" [ERROR] Segment too large to send: {<traceinformation...}"

One approach to remove this error, is to reduce the size of the batch upload (eg.. setStreamingThreshold(0) which will send each subsegment on close). See SDK - nodejs - setStreamingThreshold.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100