leocavalcante / newrelic-telemetry-sdk
Unofficial PHP library for sending telemetry data to New Relic
Installs: 1 075
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
- ext-zlib: *
- ramsey/uuid: ^4.1
Requires (Dev)
- mockery/mockery: ^1.4
- pestphp/pest: ^0.3.12
- phpunit/phpunit: ^9.4
- swoole/ide-helper: ^4.6
- vimeo/psalm: ^4.1
README
Unofficial PHP library for sending telemetry data to New Relic.
- ⚠️ Heavily under development, but open-sourced seeking for contributions.
- It is not an agent wrapper, it calls the New Relic Ingest APIs.
Usage
Example
Sending a Gauge metric.
use NewRelic\Adapter; use NewRelic\Metric; $metric_api = new Metric\API(new Adapter\Curl(getenv('NR_API_KEY'))); $metric_api->setCommonAttrs(['service.name' => 'PHP-SDK']); $metric_api->send(new Metric\Gauge('memory.heap', 2.3)); $response = $metric_api->commit(); if ($response->isOk()) { echo sprintf("Request ID: %s\n", $response->getId()); } else { echo sprintf("Metric send error: %s\n", $response->getMessage()); }
Companion resources
Tips
- Make sure you are including service.instance.id when reporting your traces and/or metrics.
Why
Main reasons includes:
- Too many segfaults with the regular agent.
- Even for simple use cases the regular agent doesn't play well with Swoole. This small snippet is enough to throw a segfault:
Co\run(static function () { go(static function () { (new Co\Http\Client('swoole.co.uk'))->get('/'); }); });
- There are other SDKs for other languages, this is an unofficial PHP version.
- Could be used to build a New Relic exporter for the upcoming OpenTelemetry PHP library.