New Relic Reporting for WordPress

Description

WP New Relic (WPNR) is designed to use with New Relic APM which uses New Relic PHP Agent API to properly augment existing metrics with valuable WordPress details such as templates, users, request type, transaction names etc. This plugin is tested with PHP Agent 10.19.0.9.

New Relic is a trademark of New Relic, Inc.

Admin 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.

Capture URL Parameters: If Capture URLs setting is enabled, it will capture URL parameters for displaying in transaction traces.

Basic Config

By default plugin will setup 3 configs.
– newrelic.appname
– newrelic.capture_params
– newrelic.framework (value is wordpress)

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

New Relic Custom Attributes

Certain useful custom attrribute (just like WordPress post meta) will be set for each event which can provide additional information using key-value pair. You can query events and filter them using these attributes in New Relic Insights. See NRQL reference for more details on how to query events.

  1. User

    User attribute is getting set using newrelic_set_user_attributes. If user is logged in, user ID will be set to user attribute and if not it 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’

  2. Post ID

    For single post, post ID will be set via post_id custom parameter in transaction.

    Ex: Get all transactions for a post ID 190.

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

    One can also query for post view count for post 190.

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

  3. Template

    For each request, template being used getting set as template custom parameter in transaction.

    Ex: You can query all transactions for a particular template as following.

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

  4. Theme

    Current theme is getting set as theme custom parameter in transaction.

    Ex: Query all transactions for “Twenty Fifteen” theme.

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

  5. Request type

    There can be 3 type of requests namely web, ajax and cli. Current request type getting set as request_type custom parameter in transaction.
    Request type can be override using wp_nr_request_type filter.

    Ex: Get all transaction for “ajax” request type

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

  6. Transaction Name

    Transaction name is getting set as per 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}

  7. Custom Error Logging

    Using wp_nr_log_errors function, any plugin/theme can log errors/notices to New Relic for current transaction.
    Note: This function can be used more than once but only last use will be considered to log the error to New Relic. It’s limitation of PHP Agent API.

    wp_nr_log_errors( ‘Error message’, Exception $exception );

  8. Runtime of async tasks

    This plugin also tracks runtime of gearman async tasks. Gearman async task run for a particular hook and it’s runtime can be track using “wp_async_task-{hook}” custom attribute in New Relic Insights.

Issues

  1. 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.

  2. 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!

Installation

  1. First, you will need to install and configure New Relic PHP agent on server.
  2. Activate the plugin in WordPress.
  3. Enjoy!

Reviews

April 9, 2024
This makes it easy to see in new relic admin, thank you!
February 15, 2018
Just installed the plugin and it works like a charm with NewRelic’s service. Thank you for developing this plugin.
July 13, 2017
I’m biased, since other members of my team built this, but using it for some clients I’m serving, I can say that the added data – particularly around the page template and user properties – saves significant time in diagnostics.
Read all 4 reviews

Contributors & Developers

“New Relic Reporting for WordPress” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.3.3 – 2024-06-26

Note this release bumps the PHP minimum from 7.3.11 to 8.0 and the WordPress minimum from 4.0 to 6.3.
* Added: Minimum PHP version check for 7.3.11 (props @bmarshall511, @Sidsector9 via #60).
* Changed: Support Level downgraded from Active to Stable (props @jeffpaul, @dkotter, @felipeelia, @oscarssanchezz via #65).
* Changed: Bump WordPress “tested up to” version 6.5 (props @zamanq, @jeffpaul, @oscarssanchezz via #58, #66).
* Fixed: Improve compatibility with PHP 8.1 by replacing the deprecated FILTER_SANITIZE_STRING (props @burhandodhy, @jeffpaul, @felipeelia, Sven via #68).

1.3.2 – 2022-06-28

View historical changelog details here.