felix-lessoer/cakephp-elasticapm

此包最新版本(dev-master)没有可用的许可证信息。

使用 elastic APM 监控您的 cakephp 项目

dev-master 2020-03-17 20:13 UTC

This package is not auto-updated.

Last update: 2024-09-26 15:40:50 UTC


README

目前此插件支持收集 cake php 的常见事件。已在 cake php v3.8 上测试。此插件基于 Elastic APM php agent

安装

只需使用 composer 设置插件

composer require felix-lessoer/cakephp-elasticapm

配置

config/app.php 中包含此片段

'ElasticApm' => [
        'enabled' => true,
        'rumEnabled' => true,
        'appName' => '<app name>',
        'appVersion' => "1.0",
        'serverUrl' => '<apm server url>',
        'secretToken' => '<apm server secret token>',
        'environment' => "development"
    ]

enabled: 如果为 false,则收集将被禁用

在您的 src/Application.php 中的 bootstrap() 函数中包含此片段

if (Configure::read('ElasticApm.enabled')) {
    $this->addPlugin(ElasticApmPlugin::class);
}

添加 RUM 代理

RUM 代理是可选的,但可以提供关于页面速度的更深入见解。

在此 下载代理并将其添加到您的 webroot/js 目录

将此添加到您的页面的 <head> 区域 <?php echo $this->Html->script('elastic-apm-rum.umd.min.js'); ?>

将此片段直接添加到 <body> 的开头

  <script>
    var parts = window.location.pathname.split('?');
    var pageName = window.location.pathname;
    if (parts.length > 0) {
      pageName = parts[0]
    }
    if (<?php echo Configure::read('ElasticApm.rumEnabled'); ?>) {
      elasticApm.init({
        serviceName: '<?php echo Configure::read('ElasticApm.appName'); ?> RUM',
        serverUrl: '<?php echo Configure::read('ElasticApm.serverUrl'); ?>',
        environment: '<?php echo Configure::read('ElasticApm.environment'); ?>',
        serviceVersion: '<?php echo Configure::read('ElasticApm.appVersion'); ?>',
        pageLoadTraceId: '<?= $traceId ?>',
        pageLoadSpanId: '<?= $spanId ?>',
        pageLoadSampled: true,
        pageLoadTransactionName: pageName,
        breakdownMetrics: true,
        //monitorLongtasks: true,
      });
      //Optional adding user context
      elasticApm.setUserContext({
        id: <userid>,
        username: <username>,
      });
    }
  </script>