1.4.1 • Published 6 years ago
appdynamics-nodejs-extras v1.4.1
AppDynamics Node.JS Extras
This package includes additional functionality for the AppDynamics Node.JS agent.
BTs for GraphQL
Use the appdynamics4graphql middleware with apollo-server-express to have an out of the box detection of business transactions for your GraphQL application:
const appdynamics = require("appdynamics");
const { appdynamics4graphql } = require('appdynamics-nodejs-extras')
...
// Set options for appdynamics4graphql
const options = { ... }
const app = express()
app.use(json(), appdynamics4graphql(appdynamics, {debug: true}))
const server = new ApolloServer({
...
})
server.applyMiddleware({ app })
app.listen({ port: 4000 }, () => console.log(`app running`));With this your operation names will be reported as business transactions. If you don't provide an operation name the context wrapper will use the operation type as identifier (query, mutation or subscription) and call the BTs unnamedQuery, unnamedMutation and unnamedSubscription. If an error occurs or no name can be extracted, the default BT name is IntrospectionQuery.
You can reconfigure this default behaviour by setting the following options:
inferWithField(default:false): If set to true and if no operation name is provided, this will add the "root name" of your operation to the BT name. So instead ofunnamedQueryyou will get a BT namedquery fieldname.defaultBt(default:"IntrospectionQuery"): Change the name of the default BT.debug(default:false): If set to true, there will be messages logged toconsole. As alternative you can provide a function that will be used to log those messages.addSnapshotData(default:true): If set to true, addoperationNameandoperationTypeto snapshot data.addAnalyticsData(default:true): If set to true, addopartionNameandoperationTypeto analytics data.logQuery(default:false): If set to true, the received GraphQL query will be logged into snapshot data (no analytics!).logRequestHeaders: (default:[]): Provide a list of response headers that should be collected into snapshot data/analytics data.logResponseHeaders: (default:[]): Provide a list of response headers that should be collected into snapshot data/analytics data.withCCID(default:true): Create a custom correlation ID, send it to analytics/snapshot data and create a custom header calledappdynamics-graphql-ccid, that is collectable on the frontend site.withResponseHook(default:false): If set to true, error information is collected from the query response. If you provide a callback function you can access the response, the response body, a method to collect data and the transaction object:options.withResponseHook = (response, body, collectData, transaction) => { collectData('errorId', body.errors[0].id) }