subzerobo / elastic-apm-php-agent
支持 Intake API V2 和 UDP 的 PHP Elastic APM 代理
2.0.0
2024-08-28 03:33 UTC
Requires
- php: >=7.0
- google/protobuf: ^3.7
- guzzlehttp/guzzle: ^6.5
- ircmaxell/random-lib: ^1.2
- psr/http-server-handler: ^1.0
- ralouphie/getallheaders: ^3.0
- ramsey/uuid: ^3.8
- subzerobo/sabalim-action-wrapper: ^1.0
Requires (Dev)
- phpunit/phpunit: 11.3.*
Suggests
- ext-sockets: Required for sending payload using UDP to go middleware
- ext-xdebug: Required for processing of request headers
README
支持 Intake API v2 + UDP + ProtoBuf 的 PHP Elastic APM 代理
示例
使用 PSR7Middleware
项目使用 PSR7 标准通过 PSR7Middleware 类包装整个应用程序或您可能需要的任何特定路由
<?php
$app = new \Slim\App();
$container = $app->getContainer();
$settings = [
'defaultConnector' => 'udp', // Send Data Using UDP or TCP
'appName' => 'Sample APP',
'appVersion' => '2.0.0',
'active' => true && PHP_SAPI !== 'cli',
'serverUrl' => 'http://your_elastic_apm_server_ip.com/intake/v2/events',
'secretToken' => null,
'host' => 'your_elastic_apm_server.com', // to disable dns resolve
'hostname' => gethostname(),
'timeout' => 5, // seconds
'apmVersion' => 'v2',
'env' => ['DOCUMENT_ROOT', 'REMOTE_ADDR'],
'cookies' => [],
'httpClient' => [],
'environment' => 'development',
'backtraceLimit' => 0,
'udpAgentIP' => '144.22.22.22', // Go UDP Sidecar IP Address
'udpAgentPort' => 1113, // GO UDP Sidecar Port
'udpUseProto' => true, // Use Protobuf Transport i GO UDP Sidecar
'isDockerContainer' => false,
'containerIdEnv' => 'CONTAINER_ID',
'isKubernetes' => false,
'kuberNamespaceEnv' => 'MY_POD_NAMESPACE',
'kuberPodNameEnv' => 'MY_POD_NAME',
'kuberPodUidEnv' => 'MY_POD_UID' ,
'kuberNodeNameEnv' => 'MY_NODE_NAME' ,
'cleanup_rules' => [], // Cleanup naming
];
$apmAgent = new \Subzerobo\ElasticApmPhpAgent\ApmAgent($settings);
$mw = new \Subzerobo\ElasticApmPhpAgent\Middlewares\PSR7Middleware($container, $apmAgent)
$app->add($mw);