Dieses Bundle integriert die Newrelic PHP -API in Symfony. Weitere Informationen zu Newrelic finden Sie unter http://newrelic.com. Der integrierte neue Reliktagent fügt nicht so viel Symfony-Integration hinzu, wie es behauptet. Dieses Bündel fügt viel mehr wichtiges Wesentliche hinzu. Hier ist eine kurze Liste:
Bessere Strategie für Transaktionsnamen : Ihre Transaktionsspuren können genau mit Routennamen, dem Controller -Namen oder Sie über eine benutzerdefinierte Benennungsstrategie über eine nahtlose Schnittstelle entscheiden, die eine benannte Konvention verwendet, die Sie für richtig halten. Während des Ausführens von Konsolenbefehlen wird auch der Transaktionsname als Befehlsnamen festgelegt.
Verbesserungen der Konsolenbefehle : Während des Ausführens von Konsolenbefehlen werden die Optionen und Argumente festgelegt, die über die CLI als benutzerdefinierte Parameter an die Transaktionsverfolgung übergeben werden, um das Debuggen zu vereinfachen.
Ausnahmehören : Es erfasst auch alle Symfony -Ausnahmen in Webanfragen und Konsolenbefehlen und sendet sie an New Relic (etwas Neues Relikt macht sich selbst nicht so gut, wenn Symfony aggressiv alle Ausnahmen/Fehler aggressiv fängt). Es stellt auch sicher, dass alle HTTP -Ausnahmen (4xx -Codes) als Mitteilungen in neuem Relikt angemeldet sind und keine Ausnahmen, um das Rauschen in neuem Relikt zu verringern.
Interactor Service : Sie bietet Ihnen die neue Relic -PHP -Agenten -API über eine Serviceklasse NewRelicInteractorInterface::class In meinem Code kann ich ihn in eine beliebige Klasse, Controller, Service und Sachen wie - machen -
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}Protokollierungsunterstützung : In der Entwicklung ist es unwahrscheinlich, dass Sie ein neues Relikt -Setup haben. Es gibt eine Konfiguration, um die Protokollierung zu ermöglichen, die alle neuen Reliktaktionen in Ihrem Symfony -Protokoll ausgibt und damit das nachahmt, was sie tatsächlich in der Produktion tun würde.
Ignorierte Routen, Pfade, Befehle : Sie können eine Liste von Routennamen, URL -Pfaden und Konsolenbefehlen konfigurieren, die von neuen Reliktspuren ignoriert werden sollen.
MISC : Es gibt andere nützliche Konfiguration wie Ihren neuen Relic -API -Schlüssel, der Ihren App -Namen explizit definiert, anstelle von Php.ini, wobei neue Relikt über neue Bereitstellungen über die Kapifonie usw. informiert werden.
Bewertung http://newrelic.com ...
$ composer require ekino/newrelic-bundleRegistrieren Sie dann das Bundle bei Ihrem Kernel:
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);Stellen Sie in der Weboberfläche von New Relic sicher
# app/config/config.yml
ekino_new_relic :
enabled : true # Defaults to true
application_name : Awesome Application # default value in newrelic is "PHP Application", or whatever is set
# as php ini-value
deployment_names : ~ # default value is 'application_name', supports string array or semi-colon separated string
api_key : # New Relic API
api_host : ~ # New Relic API Host (default value is api.newrelic.com, for EU should be set to api.eu.newrelic.com )
license_key : # New Relic license key (optional, default value is read from php.ini)
xmit : false # if you want to record the metric data up to the point newrelic_set_appname is called, set this to true (default: false)
logging : false # If true, logs all New Relic interactions to the Symfony log (default: false)
interactor : ~ # The interactor service that is used. Setting enabled=false will override this value
twig : true # Allows you to disable twig integration (falls back to class_exists(Twig_Environment::class))
exceptions : true # If true, sends exceptions to New Relic (default: true)
deprecations : true # If true, reports deprecations to New Relic (default: true)
instrument : false # If true, uses enhanced New Relic RUM instrumentation (see below) (default: false)
http :
enabled : true
using_symfony_cache : false # Symfony HTTP cache (see below) (default: false)
transaction_naming : route # route, controller or service (see below)
transaction_naming_service : ~ # Transaction naming service (see below)
ignored_routes : [] # No transaction recorded for this routes
ignored_paths : [] # No transaction recorded for this paths
monolog :
enabled : false # When enabled, send application's logs to New Relic (default: disabled)
channels : [app] # Channels to listen (default: null). [See Symfony's documentation](http://symfony.com/doc/current/logging/channels_handlers.html#yaml-specification)
level : error # Report only logs higher than this level (see PsrLogLogLevel) (default: error)
service : app.my_custom_handler # Define a custom log handler (default: ekino.new_relic.monolog_handler)
commands :
enabled : true # If true, logs CLI commands to New Relic as Background jobs (>2.3 only) (default: true)
ignored_commands : [] # No transaction recorded for this commands (background tasks) Das Bundle verfügt über eine Option für eine verbesserte echte Benutzerüberwachung. Normalerweise fügt die neue Relic -Erweiterung (sofern nicht durch Konfiguration deaktiviert) zu allen HTML -Antworten automatisch einen Tracking -Code für die Rum -Instrumentierung hinzu. Mithilfe des Bündels können Sie mithilfe erweiterter Rum -Instrumente die Instrumente für bestimmte Anforderungen selektiv deaktivieren.
Dies kann nützlich sein, wenn Sie HTML -wörtlich für einen HTML -Editor zurückgeben.
Wenn eine verbesserte Rum -Instrumentierung aktiviert ist, können Sie die Instrumentierung für eine bestimmte Anforderung deaktivieren , indem Sie einen _instrument -Anforderungsparameter weitergeben und auf false einstellen. Dies kann durch die Routing -Konfiguration erfolgen.
Das Bundle verfügt über zwei integrierte Transaktionsnamenstrategien. route und controller , die die neue Relikttransaktion nach der Route oder des Controllers benennen. Das Bundle unterstützt jedoch benutzerdefinierte Transaktionsnamenstrategien über die service . Wenn Sie die Option service Configuration" ausgewählt haben, müssen Sie den Namen Ihres eigenen Transaktionsnamendienstes als Option transaction_naming_service übergeben.
Die Transaktionsnamen -Dienstklasse muss die Schnittstelle EkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterface implementieren. Weitere Informationen zum Erstellen Ihrer eigenen Dienste finden Sie in der Symfony -Dokumentation zum Erstellen/Konfigurieren von Diensten im Container.
Wenn Sie den HTTP -Cache von Symfony verwenden, erstellt Ihre app/AppCache.php eine Antwort mit Ihrer Kantenseite (ESI). Dies wird wie eine Transaktion in New Relic aussehen. Wenn Sie using_symfony_cache: true festgelegt werden, wird diese ESI -Anforderung separate Transaktionen sein, die die Statistiken verbessert. Wenn Sie einen anderen Reverse -Proxy -Cache oder keinen Cache verwenden, überlassen Sie dies falsch.
Wenn True erforderlich ist, um den application_name festzulegen.
Sie können den Befehl newrelic:notify-deployment verwenden, um Bereitstellungsbenachrichtigungen an New Relic zu senden. Dies erfordert, dass die api_key -Konfiguration festgelegt wird.
Der Befehl enthält eine Reihe von Optionen, wie in den Hilfedaten angezeigt.
$ app/console newrelic:notify-deployment --help
Usage:
newrelic:notify-deployment [--user[="..."]] [--revision[="..."]] [--changelog[="..."]] [--description[="..."]]
Options:
--user The name of the user/process that triggered this deployment
--revision A revision number (e.g., git commit SHA)
--changelog A list of changes for this deployment
--description Text annotation for the deployment — notes for you
Das Bundle bietet ein Capifonie -Rezept zur Automatisierung der Bereitstellungsbenachrichtigungen (siehe Resources/recipes/newrelic.rb ).
Es stellt eine Anfrage pro app_name her, die von Data REST-API nicht unterstützt werden.
Der Konfigurationsschlüssel ekino_new_relic.interactor akzeptiert eine Service -ID für einen Service, der NewRelicInteractorInterface implementiert. Dieses Bündel verfügt über einige Dienste, die für Sie möglicherweise geeignet sind.
| Konfigurationswert | Beschreibung |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | Dies ist der Standard -Interaktor. Es wird einmal pro Anfrage prüft, ob die Newrelic PHP -Erweiterung installiert ist oder nicht. Es ist ein Dekorateur für den NewRelicInteractor |
EkinoNewRelicBundleNewRelicNewRelicInteractor | Dieser Interaktor kommuniziert mit Newrelic. Es ist der einzige Dekorateur, der tatsächlich etwas Arbeit leistet. |
EkinoNewRelicBundleNewRelicBlackholeInteractor | Dieser Interaktor tut nichts. |
auto | Dieser Wert prüft, ob die Newrelic -PHP -Erweiterung beim Erstellen Ihres Containers installiert ist. |
Beachten Sie, dass Sie, wenn Sie ekino_new_relic.enabled: false festgelegt haben, den BlackholeInteractor immer verwenden, egal welchen Wert für ekino_new_relic.interactor verwendet wird.
setApplicationName , damit wir den richtigen Lizenzschlüssel und den richtigen Namen verwenden.RouterListener kann eine 404 werfen oder Routing -Werte zur Anforderung hinzufügen.setIgnoreTransaction was bedeutet, dass wir NewRelicInteractorInterface::ignoreTransaction() nennen, wenn wir so konfiguriert haben, dass die Route ignoriert wird.setTransactionName ausführen, um unsere TransactionNamingStrategyInterface zu verwenden, um einen schönen Namen festzulegen. Alle 6 Schritte werden für eine normale Anfrage ausgeführt. Ausnahmen davon sind 404- und 403 Antworten, die in Schritt 2 bzw. Schritt 4 erstellt werden. Wenn eine Ausnahme zu diesem Schritt auftritt (ich spreche nicht über Exception ), haben Sie die Transaktion mit dem richtigen Lizenzschlüssel protokolliert, haben jedoch nicht den richtigen Transaktionsnamen. Der setTransactionName hat möglicherweise Abhängigkeiten zu Datensatzen anderer Zuhörer. Deshalb hat er eine so niedrige Priorität.