check24-cp/newrelic-bundle

在 Symfony 环境中增强与 NewRelic 的交互,确保应用程序的最佳监控和日志记录

安装次数: 3,107

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 4

分支: 1

开放问题: 0

类型:symfony-bundle

1.0.14 2024-05-30 10:54 UTC

This package is auto-updated.

Last update: 2024-08-30 11:38:45 UTC


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

现在,该包应该能够将每个消费的消息作为单独的事务报告,使用消息名称(见配置/事务命名部分)作为事务名称。