check24-cp / newrelic-bundle
在 Symfony 环境中增强与 NewRelic 的交互,确保应用程序的最佳监控和日志记录
1.0.14
2024-05-30 10:54 UTC
Requires
- php: >=8.2
- ext-curl: *
- monolog/monolog: ^3.4
- ostrolucky/polyfill-newrelic: ^1.0
- psr/log: ^2.0 || ^3.0
- symfony/console: ^5.4 || ^6.0 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.0 || ^7.0
- symfony/framework-bundle: ^5.4 || ^6.0 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.0 || ^7.0
- symfony/monolog-bundle: ^3.8
- symfony/uid: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.39
- friendsofphp/php-cs-fixer: ^3.35
- php-http/client-common: ^2.7
- phpstan/phpstan: ^1.10
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^10.4
- symfony/messenger: ^5.4 || ^6.0 || ^7.0
- symfony/security-bundle: ^5.4 || ^6.0 || ^7.0
Suggests
- ext-newrelic: Install the New Relic PHP agent on your system
- symfony/security-bundle: Track users impacted by transaction error
README
简介
此包提供在 Symfony 环境中与 NewRelic 的增强交互,确保应用程序的最佳监控和日志记录。
特性
- 事务:自动将事务推送到 New Relic。
- 事务命名策略:可配置 HTTP 请求和 CLI(例如:messenger)的事务命名策略。
- 日志:将日志推送到 NewRelic,使用
traceId将它们链接在一起。该包还提供批处理以优化性能,通过logging.buffer_size进行配置。 - 事务排除:根据 Symfony 路由名称、路径或甚至命令排除特定事务。
- 异常排除:排除特定异常,以防止它们出现在 NewRelic 错误收件箱中,例如
HttpExceptions。
安装
要安装 CHECK24 New Relic 包,请使用 composer
composer require check24-cp/newrelic-bundle
配置
安装包后,您需要根据应用程序的需求进行配置。以下是根据提供的扩展对每个配置选项的详细说明。
基本配置
- appname:应用程序名称。如果未设置,则默认为
ini_get('newrelic.appname')。 - license:您的 NewRelic 许可证。如果未设置,则默认为
ini_get('newrelic.license')。 - xmit:一个布尔值,表示是否应立即将数据传输到 NewRelic,默认为
false。 - interactor:用于与代理通信的 NewRelic 交互器的服务 ID。默认为
check24.new_relic.interactor。 - logging.buffer_size:确定在将日志条目批量发送到 NewRelic 之前要缓冲的日志条目数。范围为 1 到 1000,默认为 100。
事务命名
- transaction_naming.messenger:命名 messenger 事务的策略所用的服务 ID。默认为
check24.new_relic.transaction_name.messenger.message_name。 - transaction_naming.request:命名 HTTP 请求事务的策略所用的服务 ID。默认为
check24.new_relic.transaction_name.request.route_name。
排除
- excluded_transactions.commands:要排除从 NewRelic 的 CLI 命令数组。
- excluded_transactions.routes:要排除从 NewRelic 的 Symfony 路由名称数组。
- excluded_transactions.paths:要排除从 NewRelic 的 HTTP 路径数组。
- excluded_exceptions:要排除从 NewRelic 错误收件箱中的异常类数组。
跟踪 ID
- trace_id_factory:创建每个请求或消息的唯一跟踪 ID 的工厂的服务 ID。默认为
check24.new_relic.trace_id.uuid_factory。
使用 Symfony Yaml 的示例配置
以下是您可能使用 Symfony 的 yaml 配置此包的基本示例。
check24_new_relic: appname: "My Symfony App" license: "YOUR_NEWRELIC_LICENSE_KEY" xmit: false interactor: 'custom.new_relic.interactor' logging: buffer_size: 200 transaction_naming: messenger: 'custom.transaction_name.messenger' request: 'custom.transaction_name.request' excluded_transactions: commands: - 'app:exclude-this-command' routes: - 'exclude_route_name' paths: - '/exclude-this-path' excluded_exceptions: - 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' trace_id_factory: 'custom.trace_id.factory' when@dev: check24_new_relic: # This is useful to be able to get logs about different NewRelic events in Symfony's profiler interactor: 'check24.new_relic.logging_interactor'
根据您的需求调整值。确保用实际值替换像 YOUR_NEWRELIC_LICENSE_KEY 这样的占位符。
与 Monolog 集成
此包的突出特点之一是能够无缝地将日志与 NewRelic 集成,通过 trace.id 将它们链接在一起。这确保了在诊断问题时具有所有必要上下文,因为您可以在 NewRelic 中看到与特定请求或进程对应的相关日志。它消除了日志和监控分别处理的常见断开连接。在问题或故障期间,拥有这种一致的观点可以非常有价值,允许快速诊断和解决。
为了利用此日志集成,您需要专门配置您的monolog设置以支持此包提供的NewRelicHandler。
使用以下配置更新您的config/packages/monolog.yaml
monolog: handlers: main: type: fingers_crossed action_level: error handler: nested excluded_http_codes: - 404 - 405 channels: ['!event'] nested: type: service id: 'check24.new_relic.monolog_handler'
与消息传递器的集成
为了能够跟踪通过消息传递器接收到的消息,您需要更新config/packages/messenger以包含以下配置
framework: messenger: buses: default: middleware: - check24.new_relic.messenger_middleware
现在,该包应该能够将每个消费的消息作为单独的事务报告,使用消息名称(见配置/事务命名部分)作为事务名称。