leads2b/elastic-apm-php-agent
Composer 安装命令:
composer require leads2b/elastic-apm-php-agent
包简介
A php 5.6 agent for Elastic APM
README 文档
README
This is a PHP agent for Elastic.co's APM product: https://www.elastic.co/solutions/apm.
New: Laravel & Lumen package https://github.com/philkra/elastic-apm-laravel
Installation
The recommended way to install the agent is through Composer.
Run the following composer command
php composer.phar require philkra/elastic-apm-php-agent
After installing, you need to require Composer's autoloader:
require 'vendor/autoload.php';
Usage
Initialize the Agent with minimal Config
$agent = new \PhilKra\Agent( [ 'appName' => 'demo' ] );
When creating the agent, you can directly inject shared contexts such as user, tags and custom.
$agent = new \PhilKra\Agent( [ 'appName' => 'with-custom-context' ], [ 'user' => [ 'id' => 12345, 'email' => 'email@acme.com', ], 'tags' => [ // ... more key-values ], 'custom' => [ // ... more key-values ] ] );
Capture Errors and Exceptions
The agent can capture all types or errors and exceptions that are implemented from the interface Throwable (http://php.net/manual/en/class.throwable.php).
$agent->captureThrowable( new Exception() );
Adding spans
Addings spans (https://www.elastic.co/guide/en/apm/server/current/transactions.html#transaction-spans) is easy. Please consult the documentation for your exact needs. Below is an example for adding a MySQL span.
// create the agent $agent = new \PhilKra\Agent(['appName' => 'Demo with Spans']); // start a new transaction $transaction = $agent->startTransaction('GET /some/transaction/name'); // create a span $spans = []; $spans[] = [ 'name' => 'Your Span Name. eg: ORM Query', 'type' => 'db.mysql.query', 'start' => 300, // when did tht query start, relative to the transaction start, in milliseconds 'duration' => 23, // duration, in milliseconds 'stacktrace' => [ [ 'function' => "\\YourOrMe\\Library\\Class::methodCall()", 'abs_path' => '/full/path/to/file.php', 'filename' => 'file.php', 'lineno' => 30, 'library_frame' => false, // indicated whether this code is 'owned' by an (external) library or not 'vars' => [ 'arg1' => 'value', 'arg2' => 'value2', ], 'pre_context' => [ // lines of code leading to the context line '<?php', '', '// executing query below', ], 'context_line' => '$result = mysql_query("select * from non_existing_table")', // source code of context line 'post_context' => [// lines of code after to the context line '', '$table = $fakeTableBuilder->buildWithResult($result);', 'return $table;', ], ], ], 'context' => [ 'db' => [ 'instance' => 'my_database', // the database name 'statement' => 'select * from non_existing_table', // the query being executed 'type' => 'sql', 'user' => 'root', // the user executing the query (don't use root!) ], ], ]; // add the array of spans to the transaction $transaction->setSpans($spans); // send our transactions to te apm $agent->send();
Transaction without minimal Meta data and Context
$trxName = 'Demo Simple Transaction'; $agent->startTransaction( $trxName ); // Do some stuff you want to watch ... $agent->stopTransaction( $trxName );
Transaction with Meta data and Contexts
$trxName = 'Demo Transaction with more Data'; $agent->startTransaction( $trxName ); // Do some stuff you want to watch ... $agent->stopTransaction( $trxName, [ 'result' => '200', 'type' => 'demo' ] ); $agent->getTransaction( $trxName )->setUserContext( [ 'id' => 12345, 'email' => "hello@acme.com", ] ); $agent->getTransaction( $trxName )->setCustomContext( [ 'foo' => 'bar', 'bar' => [ 'foo1' => 'bar1', 'foo2' => 'bar2' ] ] ); $agent->getTransaction( $trxName )->setTags( [ 'k1' => 'v1', 'k2' => 'v2' ] );
Tests
vendor/bin/phpunit
leads2b/elastic-apm-php-agent 适用场景与选型建议
leads2b/elastic-apm-php-agent 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.19k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 09 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 leads2b/elastic-apm-php-agent 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 leads2b/elastic-apm-php-agent 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1.19k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-09-19