anik / elastic-apm-php
此包已被放弃,不再维护。未建议替代包。
用于将 PHP 应用程序事务推送到 APM 服务器的 elastic/apm-agent-php 包装器
v2.1
2021-04-24 13:26 UTC
Requires
- php: ^7.2
- ext-elastic_apm: *
- illuminate/support: ^6.0|^7.0|^8.0
Requires (Dev)
README
⚠️ 警告:包依赖 ext-elastic_apm
正处于开发模式,不时推送破坏性更改。也不建议在生产环境中使用。因此,本项目将在依赖项稳定性问题解决之前不再维护。您可以自由地分叉并相应地进行更改。或者使用任何可用的替代方案
要求
- 该包依赖于 elastic 的 apm-agent-php 扩展。
- php
^7.2
- 如果想要与 Laravel 一起使用,Laravel 版本应大于等于
6.x
。
安装
要使用 composer 安装此包,请运行
composer require anik/elastic-apm-php
如果需要安装特定版本,请在安装时使用适当的版本。上述命令将安装最新可用的版本。
Laravel
- 此包使用 Laravel 的自动发现功能。但是,如果您仍然想安装,那么
- 将
Anik\ElasticApm\Providers\ElasticApmServiceProvider::class
添加到您的config/app.php
文件的 providers 数组中。 - 将
Anik\ElasticApm\Facades\Agent::class
添加到您的config/app.php
文件的 facade 数组中。 - 运行
php artisan vendor:publish
并选择要发布的提供程序以在配置目录中发布配置文件。它将在您的配置目录中复制elastic-apm.php
。
- 将
Lumen
- 要使用 Lumen 安装此包,您不需要启用 Facade。
- 在您的
bootstrap/app.php
中注册服务提供程序,使用$app->register(Anik\ElasticApm\Providers\ElasticApmServiceProvider::class);
- 如果您想更改配置,请将
elastic-apm.php
从vendor/anik/elastic-apm-php/src/config/elastic-apm.php
复制到您的config/app.php
文件。 - 在您的
bootstrap/app.php
中注册复制的配置文件$app->configure('elastic-apm')
使用方法
错误跟踪
如果您想记录错误,那么
- 对于 Laravel,在您的
bootstrap/app.php
中,
// COMMENT THIS SECTION $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class );
// USE THIS SECTION FOR LARAVEL <= 7 $app->singleton(Illuminate\Contracts\Debug\ExceptionHandler::class, function ($app) { return new Anik\ElasticApm\Exceptions\Handler(new App\Exceptions\Handler($app), [ // NotFoundHttpException::class, // (1) // ConnectException::class, // (2) ]); });
// USE THIS SECTION FOR LARAVEL >= 8 $app->singleton(Illuminate\Contracts\Debug\ExceptionHandler::class, function ($app) { return new Anik\ElasticApm\Exceptions\HandlerThrowable(new App\Exceptions\Handler($app), [ // NotFoundHttpException::class, // (1) // ConnectException::class, // (2) ]); });
- 对于 Lumen,在您的
bootstrap/app.php
中,
// COMMENT THIS SECTION $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class );
// USE THIS SECTION FOR LUMEN <= 7 $app->singleton(Illuminate\Contracts\Debug\ExceptionHandler::class, function ($app) { return new Anik\ElasticApm\Exceptions\Handler(new App\Exceptions\Handler(), [ // NotFoundHttpException::class, // (1) // ConnectException::class, // (2) ]); });
// USE THIS SECTION FOR LUMEN >= 8 $app->singleton(Illuminate\Contracts\Debug\ExceptionHandler::class, function ($app) { return new Anik\ElasticApm\Exceptions\HandlerThrowable(new App\Exceptions\Handler(), [ // NotFoundHttpException::class, // (1) // ConnectException::class, // (2) ]); });
请求响应跟踪
如果您想记录应用程序接收和服务的请求,
- 对于 Laravel,在您的
App\Http\Kernel
的中间件中添加Anik\ElasticApm\Middleware\RecordForegroundTransaction
类。
<?php class Kernel extends HttpKernel { protected $middleware = [ // ... \Anik\ElasticApm\Middleware\RecordForegroundTransaction::class, // .. ]; }
- 对于 Lumen,在您的
bootstrap/app.php
文件中添加Anik\ElasticApm\Middleware\RecordForegroundTransaction
类。
$app->middleware([ // ... \Anik\ElasticApm\Middleware\RecordForegroundTransaction::class, // ... ]);
后台作业跟踪
对于 Laravel 和 Lumen,您需要在作业的中间件中添加 Anik\ElasticApm\Middleware\RecordBackgroundTransaction
类。
HTTP 调用跟踪
要跟踪 HTTP 调用,您需要使用 Guzzle。可以将 RecordHttpTransaction
类作为 Guzzle 的处理程序堆栈。它将记录 HTTP 调用。
$stack = \GuzzleHttp\HandlerStack::create(); $stack->push(new \Anik\ElasticApm\Middleware\RecordHttpTransaction(), 'whatever-you-wish'); $client = new \GuzzleHttp\Client([ 'base_uri' => 'http://httpbin.org', 'timeout' => 10.0, 'handler' => $stack, ]); $client->request('GET', '/');
文档
请查看项目描述中的给定 URL,以全面了解您可以使用它做什么。以及如何自定义它。
提交请求(PR)?
如果您发现任何错误并进行更新,请确保您发送一个提交请求(PR)。提交请求总是受到欢迎。