ชุดนี้รวม PHP API ใหม่เข้ากับ Symfony สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ NewRelic กรุณาเยี่ยมชม http://newrelic.com ตัวแทนที่ระลึกใหม่ในตัวไม่ได้เพิ่มการรวม symfony มากเท่าที่อ้าง ชุดนี้เพิ่มสิ่งจำเป็นมากขึ้น นี่คือรายการด่วน:
กลยุทธ์การตั้งชื่อการทำธุรกรรมที่ดีขึ้น : ร่องรอยการทำธุรกรรมของคุณสามารถตั้งชื่อได้อย่างถูกต้องด้วยชื่อเส้นทางชื่อคอนโทรลเลอร์หรือคุณสามารถตัดสินใจเกี่ยวกับกลยุทธ์การตั้งชื่อที่กำหนดเองผ่านอินเทอร์เฟซที่ไร้รอยต่อที่ใช้การประชุมการตั้งชื่อใด ๆ ที่คุณเห็นว่าเหมาะสม ในขณะที่เรียกใช้คำสั่งคอนโซลมันยังตั้งชื่อธุรกรรมเป็นชื่อคำสั่ง
คำสั่งคอนโซลการปรับปรุง : ในขณะที่เรียกใช้คำสั่งคอนโซลตั้งค่าตัวเลือกและอาร์กิวเมนต์ที่ผ่านผ่าน CLI เป็นพารามิเตอร์ที่กำหนดเองไปยังการติดตามธุรกรรมเพื่อการดีบักที่ง่ายขึ้น
การฟังข้อยกเว้น : นอกจากนี้ยังจับข้อยกเว้น Symfony ทั้งหมดในคำขอเว็บและคำสั่งคอนโซลและส่งพวกเขาไปยัง Relic ใหม่ (สิ่งใหม่ ๆ ที่เกี่ยวข้องไม่ได้ดีเกินไปเพราะ Symfony จับข้อยกเว้น/ข้อผิดพลาดทั้งหมด) นอกจากนี้ยังช่วยให้มั่นใจได้ว่าข้อยกเว้น HTTP ทั้งหมด (รหัส 4xx) จะถูกบันทึกเป็นประกาศใน Relic ใหม่และไม่ใช่ข้อยกเว้นเพื่อลดเสียงรบกวนใน Relic ใหม่
บริการ Interactor : ให้ API ตัวแทน PHP ใหม่ผ่านคลาสบริการ NewRelicInteractorInterface::class ดังนั้นในรหัสของฉันฉันสามารถฉีดเข้าไปในคลาสคอนโทรลเลอร์บริการและสิ่งต่าง ๆ เช่น -
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}การสนับสนุนการบันทึก : ในการพัฒนาคุณไม่น่าจะมีการตั้งค่าที่ระลึกใหม่ มีการกำหนดค่าเพื่อเปิดใช้งานการบันทึกซึ่งส่งออกการกระทำที่ระลึกใหม่ทั้งหมดไปยังบันทึก Symfony ของคุณดังนั้นการเลียนแบบสิ่งที่มันจะทำจริงในการผลิต
เส้นทางที่ละเว้นเส้นทางพา ธ คำสั่ง : คุณสามารถกำหนดค่ารายการชื่อเส้นทางเส้นทาง URL และคำสั่งคอนโซลที่จะถูกละเว้นจากร่องรอยที่ระลึกใหม่
MISC : มีการกำหนดค่าที่มีประโยชน์อื่น ๆ เช่นคีย์ Relic API ใหม่ของคุณกำหนดชื่อแอปของคุณอย่างชัดเจนแทน php.ini แจ้งให้ทราบใหม่เกี่ยวกับการปรับใช้ใหม่ผ่าน capifony ฯลฯ
ตรวจสอบ http://newrelic.com ...
$ composer require ekino/newrelic-bundleจากนั้นลงทะเบียนชุดข้อมูลด้วยเคอร์เนลของคุณ:
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);ในเว็บอินเทอร์เฟซของ New Relic ตรวจสอบให้แน่ใจว่าได้รับรหัส API ที่ถูกต้อง (REST) ที่ถูกต้องไม่ต้องสับสนกับรหัสสิทธิ์การใช้งานของคุณ: แผงควบคุมใหม่> การตั้งค่าบัญชี> การรวม> ปุ่ม 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) ชุดข้อมูลมาพร้อมกับตัวเลือกสำหรับการตรวจสอบผู้ใช้จริงที่ปรับปรุงแล้ว โดยปกติแล้วส่วนขยายที่ระลึกใหม่ (เว้นแต่จะปิดการใช้งานโดยการกำหนดค่า) เพิ่มรหัสติดตามโดยอัตโนมัติสำหรับการใช้เครื่องมือรัมในการตอบกลับ HTML ทั้งหมด การใช้เครื่องมือวัดรัมที่ปรับปรุงแล้วมัดช่วยให้คุณสามารถปิดการใช้งานเครื่องมือในการร้องขอบางอย่าง
สิ่งนี้จะมีประโยชน์หากคุณกำลังส่ง HTML คำต่อคำสำหรับตัวแก้ไข HTML
หากเปิดใช้งานเครื่องมือรัมที่ได้รับการปรับปรุงคุณสามารถ ปิด การใช้งานเครื่องมือสำหรับคำขอที่กำหนดโดยผ่านพารามิเตอร์ _instrument Request และการตั้งค่าเป็น false สามารถทำได้เช่นผ่านการกำหนดค่าการกำหนดเส้นทาง
ชุดมาพร้อมกับกลยุทธ์การตั้งชื่อการทำธุรกรรมในตัวสองกลยุทธ์ route และ controller ตั้งชื่อการทำธุรกรรมใหม่หลังจากเส้นทางหรือคอนโทรลเลอร์ตามลำดับ อย่างไรก็ตามชุดข้อมูลสนับสนุนกลยุทธ์การตั้งชื่อการทำธุรกรรมที่กำหนดเองผ่านตัวเลือกการกำหนดค่า service หากคุณเลือกตัวเลือกการกำหนดค่า service คุณต้องผ่านชื่อบริการการตั้งชื่อธุรกรรมของคุณเองเป็นตัวเลือกการกำหนดค่าการทำ transaction_naming_service
คลาสบริการการตั้งชื่อการทำธุรกรรมจะต้องใช้ EkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterface สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างบริการของคุณเองดูเอกสารประกอบ Symfony เกี่ยวกับการสร้าง/กำหนดค่าบริการในคอนเทนเนอร์
เมื่อคุณใช้ HTTP ของ Symfony แคช app/AppCache.php ของคุณจะสร้างการตอบกลับด้วยด้านขอบของคุณรวมถึง (ESI) สิ่งนี้จะดูเหมือนหนึ่งธุรกรรมในใหม่ของ Relic เมื่อคุณตั้งค่า using_symfony_cache: true คำขอ ESI เหล่านี้จะเป็นธุรกรรมแยกต่างหากซึ่งปรับปรุงสถิติ หากคุณใช้แคชพร็อกซีย้อนกลับอื่น ๆ หรือไม่มีแคชเลยให้ทิ้งสิ่งนี้ไว้เป็นเท็จ
หากจำเป็นต้องตั้ง application_name
คุณสามารถใช้คำสั่ง newrelic:notify-deployment เพื่อส่งการแจ้งเตือนการปรับใช้ไปยัง RELIC ใหม่ สิ่งนี้ต้องการการกำหนดค่า api_key ที่จะตั้งค่า
คำสั่งมีตัวเลือกมากมายดังที่แสดงในข้อมูลช่วยเหลือ
$ 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
ชุดข้อมูลให้สูตร capifony เพื่อทำให้การแจ้งเตือนการปรับใช้เป็นไปโดยอัตโนมัติ (ดู Resources/recipes/newrelic.rb )
มันทำให้หนึ่งคำขอต่อ app_name ชื่อที่ครบกำหนดไม่ได้รับการสนับสนุนโดย Data REST API
คีย์ config ekino_new_relic.interactor จะรับรหัสบริการไปยังบริการที่ใช้งาน NewRelicInteractorInterface ชุดนี้มาพร้อมกับบริการบางอย่างที่อาจเหมาะกับคุณ
| ค่าการกำหนดค่า | คำอธิบาย |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | นี่คืออินเตอร์แล็คเตอร์เริ่มต้น มันจะตรวจสอบหนึ่งครั้งต่อคำขอหากมีการติดตั้งส่วนขยาย PHP ใหม่หรือไม่ เป็นมัณฑนากรสำหรับ NewRelicInteractor |
EkinoNewRelicBundleNewRelicNewRelicInteractor | ผู้ใช้งานนี้สื่อสารกับ Newrelic มันเป็นมัณฑนากรที่ใช้งานได้จริง |
EkinoNewRelicBundleNewRelicBlackholeInteractor | การโต้ตอบนี้ไม่ได้ทำอะไรเลย |
auto | ค่านี้จะตรวจสอบว่ามีการติดตั้งส่วนขยาย PHP ของ NewRelic เมื่อคุณสร้างคอนเทนเนอร์ของคุณหรือไม่ |
โปรดทราบว่าหากคุณตั้งค่า ekino_new_relic.enabled: false คุณจะใช้ BlackholeInteractor เสมอไม่ว่าจะใช้ค่าใดสำหรับ ekino_new_relic.interactor
setApplicationName เพื่อให้เราใช้รหัสลิขสิทธิ์และชื่อที่ถูกต้องRouterListener อาจโยน 404 หรือเพิ่มค่าการกำหนดเส้นทางไปยังคำขอsetIgnoreTransaction ซึ่งหมายความว่าเราเรียกว่า NewRelicInteractorInterface::ignoreTransaction() หากเราได้กำหนดค่าให้เพิกเฉยต่อเส้นทางsetTransactionName เพื่อใช้ TransactionNamingStrategyInterface เพื่อตั้งชื่อที่ดี ทั้งหมด 6 ขั้นตอนจะถูกดำเนินการตามคำขอปกติ ข้อยกเว้นนี้คือการตอบสนอง 404 และ 403 ที่จะสร้างขึ้นในขั้นตอนที่ 2 และขั้นตอนที่ 4 ตามลำดับ หากข้อยกเว้นสำหรับขั้นตอนเหล่านี้เกิดขึ้น (ฉันไม่ได้พูดถึง Exception ) คุณจะมีการบันทึกธุรกรรมด้วยคีย์ใบอนุญาตที่ถูกต้อง แต่คุณไม่มีชื่อธุรกรรมที่เหมาะสม setTransactionName อาจมีการพึ่งพาข้อมูลที่กำหนดโดยผู้ฟังคนอื่น ๆ นั่นคือเหตุผลว่าทำไมจึงมีลำดับความสำคัญต่ำ