Bundel ini mengintegrasikan API PHP newrelic ke dalam Symfony. Untuk informasi lebih lanjut tentang NewRelic, silakan kunjungi http://newrelic.com. Agen peninggalan baru bawaan tidak menambahkan integrasi simfony sebanyak yang diklaimnya. Bundel ini menambah lebih banyak hal penting. Inilah daftar singkat:
Strategi Penamaan Transaksi yang Lebih Baik : Jejak transaksi Anda dapat dinamai secara akurat dengan nama rute, nama pengontrol atau Anda dapat memutuskan strategi penamaan khusus melalui antarmuka yang mulus yang menggunakan konvensi penamaan yang Anda anggap sesuai. Saat menjalankan perintah konsol, itu juga menetapkan nama transaksi sebagai nama perintah.
Perintah Konsol Peningkatan : Saat menjalankan perintah konsol, menetapkan opsi dan argumen yang dilewati melalui CLI sebagai parameter khusus ke jejak transaksi untuk debugging yang lebih mudah.
Mendengarkan Pengecualian : Ini juga menangkap semua pengecualian simfoni dalam permintaan web dan perintah konsol dan mengirimkannya ke peninggalan baru (sesuatu yang tidak dilakukan oleh peninggalan baru karena simfony secara agresif menangkap semua pengecualian/kesalahan). Ini juga memastikan semua pengecualian HTTP (kode 4xx) dicatat sebagai pemberitahuan dalam peninggalan baru dan bukan pengecualian untuk mengurangi kebisingan dalam peninggalan baru.
Layanan Interactor : Ini memberi Anda Relic PHP Agent API baru melalui kelas layanan NewRelicInteractorInterface::class jadi dalam kode saya, saya dapat menyuntikkannya ke kelas, pengontrol, layanan, dan melakukan hal -hal seperti -
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}Dukungan logging : Dalam pengembangan, Anda tidak mungkin memiliki pengaturan Relic baru. Ada konfigurasi untuk mengaktifkan logging yang menghasilkan semua tindakan peninggalan baru ke log simfony Anda, karenanya meniru apa yang sebenarnya akan dilakukan dalam produksi.
Rute yang diabaikan, jalur, perintah : Anda dapat mengonfigurasi daftar nama rute, jalur URL dan perintah konsol yang harus diabaikan dari jejak peninggalan baru.
MISC : Ada konfigurasi berguna lainnya seperti kunci API Relic baru Anda, secara eksplisit mendefinisikan nama aplikasi Anda alih -alih php.ini, memberi tahu peninggalan baru tentang penyebaran baru melalui capifony, dll.
Tinjau http://newrelic.com ...
$ composer require ekino/newrelic-bundleKemudian daftarkan bundel dengan kernel Anda:
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);Di antarmuka web Relic baru, pastikan untuk mendapatkan kunci API (istirahat) yang valid, jangan bingung dengan kunci lisensi Anda: Dasbor Relik Baru> Pengaturan Akun> Integrasi> Kunci API
# 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) Bundel dilengkapi dengan opsi untuk meningkatkan pemantauan pengguna nyata. Biasanya ekstensi Relic baru (kecuali dinonaktifkan berdasarkan konfigurasi) secara otomatis menambahkan kode pelacakan untuk instrumentasi rum untuk semua respons HTML. Menggunakan instrumentasi rum yang ditingkatkan, bundel memungkinkan Anda untuk secara selektif menonaktifkan instrumentasi pada permintaan tertentu.
Ini bisa berguna jika, misalnya Anda mengembalikan html verbatim untuk editor html.
Jika peningkatan instrumentasi rum diaktifkan, Anda dapat menonaktifkan instrumentasi untuk permintaan yang diberikan dengan meneruskan parameter permintaan _instrument , dan mengaturnya menjadi false . Ini dapat dilakukan misalnya melalui konfigurasi perutean.
Bundel ini hadir dengan dua strategi penamaan transaksi bawaan. route dan controller , menyebutkan transaksi relik baru setelah rute atau pengontrol masing -masing. Namun, bundel mendukung strategi penamaan transaksi khusus melalui opsi konfigurasi service . Jika Anda telah memilih opsi konfigurasi service , Anda harus memberikan nama layanan penamaan transaksi Anda sendiri sebagai opsi konfigurasi transaction_naming_service .
Kelas Layanan Penamaan Transaksi harus mengimplementasikan EkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterface antarmuka. Untuk informasi lebih lanjut tentang membuat layanan Anda sendiri, lihat dokumentasi Symfony tentang membuat/mengonfigurasi layanan di wadah.
Saat Anda menggunakan HTTP Cache Symfony app/AppCache.php Anda akan membangun respons dengan sisi tepi Anda termasuk (ESI). Ini akan terlihat seperti satu transaksi dalam peninggalan baru. Saat Anda mengatur using_symfony_cache: true akankah permintaan ESI ini akan menjadi transaksi terpisah yang meningkatkan statistik. Jika Anda menggunakan beberapa cache proxy terbalik lainnya atau tidak ada cache sama sekali, biarkan ini ke false.
Jika benar diperlukan untuk mengatur application_name .
Anda dapat menggunakan perintah newrelic:notify-deployment untuk mengirim pemberitahuan penyebaran ke peninggalan baru. Ini membutuhkan konfigurasi api_key untuk diatur.
Perintah ini memiliki banyak opsi, seperti yang ditampilkan dalam data bantuan.
$ 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
Bundel ini memberikan resep kapifoni untuk mengotomatisasi pemberitahuan penyebaran (lihat Resources/recipes/newrelic.rb ).
Itu membuat satu permintaan per app_name , nama roll-up tidak didukung oleh data REST API.
Kunci konfigurasi ekino_new_relic.interactor akan menerima ID layanan ke layanan yang mengimplementasikan NewRelicInteractorInterface . Bundel ini dilengkapi dengan beberapa layanan yang mungkin cocok untuk Anda.
| Nilai konfigurasi | Keterangan |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | Ini adalah interaktor default. Ini akan memeriksa sekali per permintaan apakah ekstensi PHP newrelic diinstal atau tidak. Itu adalah dekorator untuk NewRelicInteractor |
EkinoNewRelicBundleNewRelicNewRelicInteractor | Interactor ini berkomunikasi dengan newrelic. Ini adalah satu -satunya dekorator yang benar -benar melakukan beberapa pekerjaan. |
EkinoNewRelicBundleNewRelicBlackholeInteractor | Interactor ini tidak melakukan apa -apa. |
auto | Nilai ini akan memeriksa apakah ekstensi PHP newrelic diinstal saat Anda membangun wadah Anda. |
Perhatikan bahwa jika Anda mengatur ekino_new_relic.enabled: false Anda akan selalu menggunakan BlackholeInteractor apa pun, apa nilai yang digunakan untuk ekino_new_relic.interactor .
setApplicationName sehingga kami menggunakan kunci dan nama lisensi yang benar.RouterListener mungkin melempar 404 atau menambahkan nilai perutean ke permintaan.setIgnoreTransaction yang berarti bahwa kami memanggil NewRelicInteractorInterface::ignoreTransaction() jika kami telah mengkonfigurasi untuk mengabaikan rute.setTransactionName untuk menggunakan TransactionNamingStrategyInterface kami untuk menetapkan nama yang bagus. Semua 6 langkah akan dieksekusi untuk permintaan normal. Pengecualian untuk ini adalah 404 dan 403 tanggapan yang akan dibuat pada Langkah 2 dan Langkah 4 masing -masing. Jika pengecualian untuk langkah ini terjadi (saya tidak berbicara tentang Exception ) Anda akan memiliki transaksi yang dicatat dengan kunci lisensi yang benar tetapi Anda tidak memiliki nama transaksi yang tepat. setTransactionName mungkin memiliki dependensi pada data yang ditetapkan oleh pendengar lain, itulah sebabnya ia memiliki prioritas rendah.