NewRelic module provide an object-oriented PHP wrapper for New Relic monitoring service.
NewRelic module provide a logger and a wrapper for New Relic PHP API.
The current route is used to set the name of each transaction. Moreover, the module allow exceptions logging if enabled.
- PHP ^7.2
- Laminas
NewRelic module only officially supports installation through Composer. For Composer documentation, please refer to getcomposer.org.
You can install the module from command line:
$ composer require neeckeloo/newrelic
Alternatively, you can also add manually the dependency in your composer.json
file:
{
"require": {
"neeckeloo/newrelic": "^2.5"
}
}
Enable the module by adding NewRelic
key to your application.config.php
file. Customize the module by copy-pasting
the newrelic.global.php.dist
file to your config/autoload
folder.
return [
'newrelic' => [
// Sets the newrelic app name. Note that this will discard metrics
// collected before the name is set. If empty then your php.ini
// configuration will take precedence. You can set the value by
// environment variable, or by overriding in a local config.
'application_name' => getenv('NEW_RELIC_APP_NAME') ?: null,
// May be null and will only be set if application name is also given.
// You can set the value by environment variable, or by overriding in
// a local config.
'license' => getenv('NEW_RELIC_LICENSE_KEY ') ?: null,
// If false then neither change the auto_instrument or manually
// instrument the real user monitoring.
'browser_timing_enabled' => false,
// When true tell the newrelic extension to insert Real User Monitoring
// scripts automatically.
'browser_timing_auto_instrument' => true,
// When true, a logger with the newrelic writer will be called for
// dispatch error events.
'exceptions_logging_enabled' => false,
// Defines ignored transactions
'ignored_transactions' => [],
// Defines background job transactions
'background_jobs' => [],
],
];
The module use NewRelic\Listener\RequestListener
to specify the transaction name automatically using matched route name by default.
The transaction name is retrieved from a provider (NewRelic\TransactionNameProvider\RouteNameProvider
by default) defined in the configuration.
use NewRelic\TransactionNameProvider\RouteNameProvider;
return [
'newrelic' => [
'transaction_name_provider' => RouteNameProvider::class,
],
];
The package contains some providers:
- RouteNameProvider
- HttpRequestUrlProvider
- NullProvider
You can also defined the transaction name yourself by defining NullProvider
as transaction name provider and using nameTransaction
method of the client.
NewRelic API allows to ignore some transactions. This configuration defines some routes and controllers of transactions that will be ignored.
return [
'newrelic' => [
'ignored_transactions' => [
'routes' => [
'admin*',
'user/login',
],
],
],
];
Those rules ignore all admin routes and the "user/login" route.
return [
'newrelic' => [
'ignored_transactions' => [
'controllers' => [
'FooController',
'BarController',
'BazController',
],
],
],
];
You can also ignore some actions of specified controllers :
return [
'newrelic' => [
'ignored_transactions' => [
'controllers' => [
['FooController', ['foo', 'bar']],
['BarController', ['baz']],
],
],
],
];
You can ignore a transaction manually by calling ignoreTransaction()
method of NewRelic client.
$client = $container->get('NewRelic\Client');
$client->ignoreTransaction();
The configuration of background jobs is identical to ignored transactions but use the key background_jobs
as below.
return [
'newrelic' => [
'background_jobs' => [],
],
];
You can define a transaction as background job manually by calling backgroundJob()
method of NewRelic client.
$client = $container->get('NewRelic\Client');
$client->backgroundJob(true);
You can ignore apdex metrics like transaction metrics using the key ignored_apdex
.
return [
'newrelic' => [
'ignored_apdex' => [],
],
];
You can ignore apdex metrics manually by calling ignoreApdex()
method of NewRelic client.
$client = $container->get('NewRelic\Client');
$client->ignoreApdex();
$client = $container->get('NewRelic\Client');
$client->addCustomMetric('salesprice', $price);