middleware / agent-apm-php
PHP的Agent APM
dev-master
2023-07-03 06:27 UTC
Requires
- php: ^8.1
- google/protobuf: dev-master
- guzzlehttp/promises: ^1.5@dev
- nyholm/psr7: ^1.5
- open-telemetry/api: 1.0.0beta5
- open-telemetry/exporter-otlp: dev-main
- open-telemetry/opentelemetry-auto-psr15: 1.0.0beta5
- open-telemetry/sdk: 1.0.0beta5
- php-http/httplug: 2.x-dev
- php-http/message-factory: ^1.0@dev
- psr/http-client: 1.0.x-dev
- symfony/http-client: 6.3.x-dev
This package is auto-updated.
Last update: 2024-09-16 10:13:43 UTC
README
agent-apm-php
描述:PHP的Agent APM
先决条件
- 要在仪表板上监控APM数据,需要安装 Middleware Host-agent,您可以参考 此演示项目 了解APM的使用案例。
- PHP需要至少PHP 8+和 OpenTelemetry PHP-Extension 来运行此代理。
指南
要使用此APM代理,请按照以下步骤操作
- 在项目目录中运行
composer require middleware/agent-apm-php
。 - 安装成功后,您需要在文件中添加
require 'vendor/autoload.php';
。 - 然后,添加
use Middleware\AgentApmPhp\MwTracker;
行。 - 现在,在下一行添加以下代码,包括您的项目和服务名称
$tracker = new MwTracker('<PROJECT-NAME>', '<SERVICE-NAME>');
- 然后我们有2个函数,分别命名为
preTrack()
和postTrack()
,您的代码必须放置在这两个函数之间。在调用 preTrack() 之后,您需要按照以下方式注册所需的类和函数$tracker->preTrack(); $tracker->registerHook('<CLASS-NAME-1>', '<FUNCTION-NAME-1>'); $tracker->registerHook('<CLASS-NAME-2>', '<FUNCTION-NAME-2>');
- 您可以将自己的自定义属性作为第三个参数添加,并在此处查看许多其他预定义属性 这里。
$tracker->registerHook('<CLASS-NAME-1>', '<FUNCTION-NAME-1>', [ 'custom.attr1' => 'value1', 'custom.attr2' => 'value2', ]);
- 最后,只需调用
postTrack()
函数,该函数将所有跟踪发送到Middleware Host-agent。$tracker->postTrack();
- 如果您想在项目中同时启用日志记录功能,可以使用以下代码片段
$tracker->warn("this is warning log."); $tracker->error("this is error log."); $tracker->info("this is info log."); $tracker->debug("this is debug log.");
- 因此,最终代码片段将如下所示
<?php require 'vendor/autoload.php'; use Middleware\AgentApmPhp\MwTracker; $tracker = new MwTracker('<PROJECT-NAME>', '<SERVICE-NAME>'); $tracker->preTrack(); $tracker->registerHook('<CLASS-NAME-1>', '<FUNCTION-NAME-1>', [ 'custom.attr1' => 'value1', 'custom.attr2' => 'value2', ]); $tracker->registerHook('<CLASS-NAME-2>', '<FUNCTION-NAME-2>'); $tracker->info("this is info log."); // ---- // Your code goes here. // ---- $tracker->postTrack();
注意:所有跟踪的OTEL收集器端点默认为 https://:9320/v1/traces
。
示例代码
<?php
require 'vendor/autoload.php';
use Middleware\AgentApmPhp\MwTracker;
$tracker = new MwTracker('DemoProject', 'PrintService');
$tracker->preTrack();
$tracker->registerHook('DemoClass', 'runCode', [
'code.column' => '12',
'net.host.name' => 'localhost',
'db.name' => 'users',
'custom.attr1' => 'value1',
]);
$tracker->registerHook('DoThings', 'printString');
$tracker->info("this is info log.");
class DoThings {
public static function printString($str): void {
// sleep(1);
global $tracker;
$tracker->warn("this is warning log, but from inner function.");
echo $str . PHP_EOL;
}
}
class DemoClass {
public static function runCode(): void {
DoThings::printString('Hello World!');
}
}
DemoClass::runCode();
$tracker->postTrack();