0to10/observability-php

简化PHP项目中自定义可观测性集成的库。

2.0.0 2023-05-21 12:36 UTC

This package is auto-updated.

Last update: 2024-09-13 20:10:10 UTC


README

Maintainability Rating Quality Gate Status Code Smells Coverage

Scrutinizer Code Quality Build Status Code Coverage

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);

使用说明

重要的是要理解,此库公开了通用的方法来调整项目内的可观测性。根据使用的可观测性工具的功能,方法可能不会产生预期的结果。在将配置发布到任何生产环境之前,请务必确保您理解自定义设置的影响。