jomashop / module-new-relic-monitoring-for-gql
Send GraphQL transactions to New Relic
Installs: 100 873
Dependents: 1
Suggesters: 0
Security: 0
Stars: 16
Watchers: 3
Forks: 3
Open Issues: 3
Type:magento2-module
Requires
- magento/framework: *
This package is not auto-updated.
Last update: 2024-10-31 08:22:37 UTC
README
New Relic's PHP agent has support for automatic transaction naming for REST and SOAP, but not GraphQL. Thus, this Magento 2 module is developed to support sending a GraphQL transaction name to New Relic automatically.
Details
A transaction is named based on the service class and method that handled the request, /GraphQl/Controller/GraphQl\{operation name|(query|mutation)}\{name|Multiple}
.
The logic is explained as follows:
- If the
operationName
field is set, use the operation name. - If the
operationName
field is not set, use the name of the query or mutation. - If a GraphQL query consists of multiple queries or mutations, the transaction would be indicated as 'Multiple'. Note that in any cases, the
operationName
field takes the priority.
Installation
composer require jomashop/module-new-relic-monitoring-for-gql
Examples
- Operation name is set
mutation createCustomerTest{ createCustomer( input: { firstname: "Bob" lastname: "Loblaw" email: "test@example.com" password: "b0bl0bl@w" is_subscribed: true } ) { customer { firstname lastname email is_subscribed } } }
In New Relic, the transaction name would be: /GraphQl/Controller/GraphQl\Mutation\createCustomerTest
- Operation name is not set and only 1 query/mutation is requested
mutation { createCustomer( input: { firstname: "Bob" lastname: "Loblaw" email: "test@example.com" password: "b0bl0bl@w" is_subscribed: true } ) { customer { firstname lastname email is_subscribed } } }
In NR, the transaction name would be /GraphQl/Controller/GraphQl\Mutation\createCustomer
- Operation name is not set and multiple queries/mutations are requested
query { cmsBlocks(identifiers: "footer_links_block") { items { identifier title content } }, storeConfig { id code website_id locale base_currency_code default_display_currency_code timezone weight_unit base_url base_link_url base_static_url base_media_url secure_base_url secure_base_link_url secure_base_static_url secure_base_media_url store_name } }
In NR, the transaction name would be /GraphQl/Controller/GraphQl\Query\Multiple
Change Log
- v1.1.1: Send requested fields as a custom parameter to NR
- v1.1.0: Able to log GraphQl errors