承接 ivoglent/elastic-apm-php-agent 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ivoglent/elastic-apm-php-agent

Composer 安装命令:

composer require ivoglent/elastic-apm-php-agent

包简介

A php agent for Elastic APM

README 文档

README

Please note 1: This is not an official Elastic APM agent, the PHP APM agent is a community developed agent. Please note 2: This is a forked repository from original repo. But I've modified too many things so I can not create PR to merge it back :). Anyway, thank to @philkra.

This is a PHP agent for Elastic.co's APM product: https://www.elastic.co/solutions/apm. It's working on v2 APM' apis only.

Installation

The recommended way to install the agent is through Composer.

Run the following composer command

php composer.phar require ivoglent/elastic-apm-php-agent

After installing, you need to require Composer's autoloader:

require 'vendor/autoload.php';

Usage

Initialize the Agent with minimal Config

$config = [
    'name' => 'Service Name',
    'secretToken' => 'APM api token',
    'transport' => [
        'host' => 'APM server host',
        'config' => [
            'base_uri' => 'base URL to APM server',
        ],
    ],
    'framework' => [
        'name' => 'Framework Name',
        'version' => 'Framework version',
    ]
];
$contexts = [
    'user' => [
        'id' => 'USER_ID',
        'username' => 'USER_NAME',
        'email' => 'EMAIL'
    ]
];
$agent = new \PhilKra\Agent($config, $contexts);

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

$error = $agent->factory()->newError(new \Exception());
$error->setTransaction($transaction);
$error->setParentId($transaction->getId());
$agent->register($error);

Usage of transaction and 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 APM agent
$agent = new \PhilKra\Agent($config, $contexts);

//Create new transaction
$transaction = $agent->factory()->newTransaction($transactionName, $transactionType);
//Start current transaction
$transaction->start();

//Create new span
$span = $agent->factory()->newSpan($spanName, $spanType, $spanAction);
$span->setTransaction($transaction);
$span->setParentId($transaction->getId());

//Start span
$span->start();

//Add sql context to span
$context = new \PhilKra\Traces\SpanContexts\SpanContext();
$context->statement = 'SQL Query String';
$trace->addContext('db', $context);


//Stop span
$span->stop();

//Register span to agent
$agent->register($span);


//Stop transaction
$transaction->stop();

//Register transaction to agent
$agent->register($transaction);

//Send all data to APM server
$agent->send();

Tests

vendor/bin/phpunit

Knowledgebase

Disable Agent for CLI

In case you want to disable the agent dynamically for hybrid SAPI usage, please use the following snippet.

'active' => PHP_SAPI !== 'cli'

In case for the Laravel APM provider:

'active' => PHP_SAPI !== 'cli' && env('ELASTIC_APM_ACTIVE', false)

Thank you to @jblotus, (philkra/elastic-apm-laravel#19)

ivoglent/elastic-apm-php-agent 适用场景与选型建议

ivoglent/elastic-apm-php-agent 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.9k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 06 月 24 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ivoglent/elastic-apm-php-agent 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ivoglent/elastic-apm-php-agent 我们能提供哪些服务?
定制开发 / 二次开发

基于 ivoglent/elastic-apm-php-agent 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.9k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 93
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-06-24