Unofficial PHP library for sending telemetry data to New Relic.
Status | API | Description |
---|---|---|
✅ | Trace API | Used to send distributed tracing data to New Relic (New Relic's format). |
✅ | Metric API | Used to send metric data to New Relic. |
✅ | Event API | Is one way to report custom events to New Relic. |
- | Log API | Not planned. |
⚠️ Heavily under development, but open-sourced seeking for contributions.- It is not an agent wrapper, it calls the New Relic Ingest APIs.
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());
}
- Make sure you are including service.instance.id when reporting your traces and/or metrics.
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.