0to10 / observability-php
简化PHP项目中自定义可观测性集成的库。
2.0.0
2023-05-21 12:36 UTC
Requires
- php: >=7.3 | >8.0
- guzzlehttp/guzzle: ^6.2 | ^7.0.0
- monolog/monolog: ~2.3.5
- psr/log: ^1.1.4
Requires (Dev)
- johnkary/phpunit-speedtrap: ^4.0.1
- phpunit/phpunit: ^9.5.11
Suggests
- ext-newrelic: >=9.0
- newrelic/monolog-enricher: >=2.0.0
Replaces
- nouve/application-monitoring: ^1.2.3
This package is auto-updated.
Last update: 2024-09-13 20:10:10 UTC
README
PHP的可观测性库
此包旨在通过泛化常用的方法来简化您自定义代码的监控。
入门
入门通常很简单:只需遵循以下说明。
安装
使用 Composer 将此库安装到您的项目中
composer require 0to10/observability-php
基本用法
以下是使用此库的概述文档。
<?php require 'vendor/autoload.php'; use ZERO2TEN\Observability\Client; use ZERO2TEN\Observability\APM\Agent\NullAgent; $nullAgent = new NullAgent(); $client = new Client($nullAgent); try { // Some application code } catch (\Exception $e) { $client->transaction()->recordException($e); } // Add a parameter to the current transaction $client->transaction()->addParameter('user_id', 50);
处理事务
事务 是软件应用程序中的逻辑工作单元。这可能包括处理请求并发送响应(在Web事务中),执行处理一些业务逻辑的脚本等。
此库通过 Client
实例的 transaction()
方法暴露一个辅助类,可以用来自定义事务的监控。
返回类的方法定义在 TransactionInterface
中。
真实用户监控
可以通过调用 Client
实例的 browser()
方法来自定义真实用户监控(RUM)。
可以使用以下方法禁用自动仪器化(例如,在页面头部和尾部自动注入浏览器脚本):
<?php require 'vendor/autoload.php'; use ZERO2TEN\Observability\Client; use ZERO2TEN\Observability\APM\Agent\NullAgent; $client = new Client(new NullAgent); $browser = $client->browser(); $browser->disableAutomaticTimingScripts();
注意,必须在向浏览器发送任何输出之前执行此操作,并且将RUM作为PHP配置的一部分(如果可用)禁用更为稳定。
<?php require 'vendor/autoload.php'; use ZERO2TEN\Observability\Client; use ZERO2TEN\Observability\APM\Agent\NullAgent; $client = new Client(new NullAgent); $browser = $client->browser(); // Returns the header RUM script (Javascript) as string without <script> tags $browser->getHeaderScript(); // Returns the footer RUM script (Javascript) as string without <script> tags $browser->getFooterScript();
旧用法
版本2.0.0及以下的库继续支持使用位于 Nouve\APM
命名空间中的 Client
类。请勿为此类新项目使用此方法。
<?php require 'vendor/autoload.php'; use Nouve\APM\Agents\NullAgent; use Nouve\APM\Client; // Creates a Client instance with the first supported AgentInterface // implementation configured in the Client class $client = Client::create(); // Alternatively, you can instantiate a Client instance yourself $nullAgent = new NullAgent(); $client = new Client($nullAgent);
使用说明
重要的是要理解,此库公开了通用的方法来调整项目内的可观测性。根据使用的可观测性工具的功能,方法可能不会产生预期的结果。在将配置发布到任何生产环境之前,请务必确保您理解自定义设置的影响。