leocavalcante/newrelic-telemetry-sdk

Unofficial PHP library for sending telemetry data to New Relic

v0.1.1 2021-02-18 12:54 UTC

This package is auto-updated.

Last update: 2024-10-18 21:14:07 UTC


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

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.