All Projects → 10up → wp-newrelic

10up / wp-newrelic

Licence: GPL-2.0 license
New Relic APM reports for WordPress.

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to wp-newrelic

ember-new-relic
Adds New Relic to your Ember CLI app based on the app's environment
Stars: ✭ 29 (-50%)
Mutual labels:  new-relic
spring-petclinic-microservices
Distributed version of Spring Petclinic built with Spring Cloud
Stars: ✭ 55 (-5.17%)
Mutual labels:  new-relic

WP New Relic

New Relic APM reports for WordPress.

Support Level Release Version WordPress tested up to version GPLv2 License

Table of Contents

Overview

WP New Relic (WPNR) is designed to be used with the New Relic APM, and uses the New Relic PHP Agent API to augment existing metrics with valuable WordPress details such as templates, users, request type, and Transaction names. This plugin is tested with New Relic's PHP Agent version 6.7.0.174. Data collected by this plugin can be queried in New Relic's Insights product, using New Relic Query Language (NRQL).

New Relic is a trademark of New Relic, Inc.

Administrative settings

After activating the plugin, You will see a new option named New Relic under the Tools menu in your WordPress Dashboard. If you are running WordPress in Network Mode, the settings page will be found in your Network Dashboard.

wp-nr-settings

Capture URL Parameters

If the Capture URLs setting is enabled, the plugin will capture URL parameters for displaying in Transaction traces. As an example, turning on this feature will store a URL like http://example.com/?p=1234, while leaving it off will result in the URL being stored as http://example.com/. This feature can be useful for debugging or providing granular data if required. In certain cases, however, it can cause confusion by creating a "false positive" appearance of multiple URLs (e.g. UTM codes or tracking info from social media).

Basic Config

By default the plugin will setup 3 New Relic configuration parameters:

appname and capture_params config can be overridden using the wp_nr_config filter. The wp_nr_setup_config action hook can also be used to setup any extra config.

New Relic Custom Attributes

Certain useful custom attributes (you can think of these as 'post meta for New Relic') will be set for each event and can provide additional information related to your WordPress installation. You can query events and filter them using these attributes in New Relic Insights. See the NRQL reference for more details on how to query events.

User

The user attribute is set using newrelic_set_user_attributes. If the user is logged in, the user ID will be set as the user attribute and if not the user attribute will be set to not-logged-in. Ex: In New Relic Insights you can query Transactions for non-logged in users as

SELECT * FROM Transaction WHERE appName = '{appName}' AND user = 'not-logged-in'

Post ID

For single posts, the post ID will be set via the post_id custom attribute.

Ex: Get all Transactions for a post with ID 190.

SELECT * FROM Transaction WHERE appName = '{appName}' AND post_id = '190'

You can also perform more complex queries, such as counting the number of views for a post. This can be helpful for determining top content on your site.

SELECT count(*) FROM Transaction WHERE appName = '{appName}' AND post_id = '190'

Template

For each request, the Template being used is set as the template custom attribute.

Ex: You can query all Transactions for a particular template.

SELECT * FROM Transaction WHERE appName = '{appName}' AND template = '{Absolute Template Path}'

Theme

The current theme is set as the theme custom attribute.

Ex: Query all Transactions running the "Twenty Fifteen" theme.

SELECT * FROM Transaction WHERE appName = '{appName}' AND theme = 'Twenty Fifteen'

Request type

There can be 3 type of requests: web, ajax and cli. The current request type is set as the request_type custom attribute. The request type can be overridden using the wp_nr_request_type filter.

Ex: Get all Transactions for the "ajax" request type

SELECT * FROM Transaction WHERE appName = '{appName}' AND request_type = 'ajax'

Transaction Name

The Transaction name is set based on the main WP_Query parameters using newrelic_name_transaction. Possible values are Default Home Page, Front Page, Blog Page, Network Dashboard, Dashboard, Single - {post_type}, Page - {pagename}, Date Archive, Search Page, Feed, Archive - {post_type}, Category - {cat_name}, Tag - {tag_name}, Tax - {taxonomy} - {term}

Custom Error Logging

Using the wp_nr_log_errors function, any plugin/theme can log errors/notices to New Relic for the current Transaction. Note: This function can be called more than once, but only the last call will log the error to New Relic. This is a known limitation of the PHP Agent API. As a reminder, since the PHP Agent runs only when PHP does, any cached requests will not appear in your error logs.

wp_nr_log_errors( 'Error message', Exception $exception );

Runtime of async tasks

This plugin also tracks the runtime of gearman async tasks. A Gearman async task run for a particular hook and its runtime can be tracked using the “wp_async_task-{hook}” custom attribute and queried in New Relic Insights.

Screenshots

wp-nr-transactions (Transactions in New Relic APM)

wp-nr-single-post-query (New Relic Insights query for a single post)

wp-nr-total-post-view-count (Total post view counts for a single post using post_id custom parameter)

wp-nr-databaseduration-query (Get Template used and Transactions whose database duration is more than 0.1)

Known Issues/Caveats

PHP version

PHP version 7.3.3 is known to cause issues with this plugin, updating to 7.3.11 or greater appears to resolve these issues. For more details, see issue#39.

Have an issue to report?

If you identify any errors or have an idea for improving the plugin, please open an issue. We're excited to see what the community thinks of this project, and we would love your input!

Support Level

Active: 10up is actively working on this, and we expect to continue work for the foreseeable future including keeping tested up to the most recent version of WordPress. Bug reports, feature requests, questions, and pull requests are welcome.

Like what you see?

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].