neeckeloo / newrelic
NewRelic module for Laminas
Installs: 195 413
Dependents: 0
Suggesters: 0
Security: 0
Stars: 33
Watchers: 5
Forks: 13
Open Issues: 6
Requires
- php: ^7.2
- laminas/laminas-console: ^2.6
- laminas/laminas-eventmanager: ^2.6 || ^3.0
- laminas/laminas-http: ^2.5
- laminas/laminas-mvc: ^2.7 || ^3.0
- laminas/laminas-servicemanager: ^2.7 || ^3.0
- laminas/laminas-stdlib: ^3.2.1
- monolog/monolog: ^1.17 || ^2.0
- psr/container: 1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpspec/prophecy: ^1.9
- phpunit/phpunit: ^8.5.8
Conflicts
README
NewRelic module provide an object-oriented PHP wrapper for New Relic monitoring service.
Introduction
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.
Requirements
- PHP ^7.2
- Laminas
Installation
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.
Default configuration
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' => [], ], ];
Usage
Define transaction name
The module use NewRelic\Listener\RequestListener
to specify the transaction name automatically using matched route name by default.
Transaction name providers
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
Specify transaction name manually
You can also defined the transaction name yourself by defining NullProvider
as transaction name provider and using nameTransaction
method of the client.
Ignore transactions
NewRelic API allows to ignore some transactions. This configuration defines some routes and controllers of transactions that will be ignored.
Ignore routes
return [ 'newrelic' => [ 'ignored_transactions' => [ 'routes' => [ 'admin*', 'user/login', ], ], ], ];
Those rules ignore all admin routes and the "user/login" route.
Ignore controllers
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']], ], ], ], ];
Ignore a transaction manually
You can ignore a transaction manually by calling ignoreTransaction()
method of NewRelic client.
$client = $container->get('NewRelic\Client'); $client->ignoreTransaction();
Define background jobs
The configuration of background jobs is identical to ignored transactions but use the key background_jobs
as below.
return [ 'newrelic' => [ 'background_jobs' => [], ], ];
Define a background job manually
You can define a transaction as background job manually by calling backgroundJob()
method of NewRelic client.
$client = $container->get('NewRelic\Client'); $client->backgroundJob(true);
Ignore apdex metrics
You can ignore apdex metrics like transaction metrics using the key ignored_apdex
.
return [ 'newrelic' => [ 'ignored_apdex' => [], ], ];
Ignore apdex metrics manually
You can ignore apdex metrics manually by calling ignoreApdex()
method of NewRelic client.
$client = $container->get('NewRelic\Client'); $client->ignoreApdex();
Add custom metric
$client = $container->get('NewRelic\Client'); $client->addCustomMetric('salesprice', $price);