tracing-newrelic

Crates.iotracing-newrelic
lib.rstracing-newrelic
version0.1.2
sourcesrc
created_at2022-02-17 04:33:11.901666
updated_at2022-03-04 17:18:41.646085
descriptionNew Relic integration for tracing
homepagehttps://github.com/PoiScript/tracing-newrelic
repositoryhttps://github.com/PoiScript/tracing-newrelic
max_upload_size
id533845
size1,135,456
yƫdachi (PoiScript)

documentation

README

tracing-newrelic

New Relic integration for tracing

Overview

This crate provides a layer for collecting trace data from tracing and sending them to New Relic.

tracing::Span will be tried as Trace Span, and tracing::Event as Logs.

tracing::Attribute and tracing::Metadata wil be tried as Custom Attributes.

Examples

use std::thread::sleep;
use std::time::Duration;

use tracing_subscriber::{layer::SubscriberExt, Registry};

#[tracing::instrument(name = "fibonacci()")]
fn fibonacci(n: u32) -> u32 {
    let ms = 100 * n as u64;

    tracing::info!(n = n, "sleep {}ms", ms);

    sleep(Duration::from_millis(ms));

    match n {
        0 | 1 => 1,
        _ => fibonacci(n - 1) + fibonacci(n - 2),
    }
}

fn main() {
    env_logger::init();

    let newrelic = tracing_newrelic::layer("YOUR-API-KEY");

    let fmt = tracing_subscriber::fmt::layer();

    let subscriber = Registry::default().with(newrelic).with(fmt);

    tracing::subscriber::with_default(subscriber, || {
        let span = tracing::info_span!(
            "calculating fibonacci(3)",
            service.name = "tracing-newrelic-demo"
        );

        let _enter = span.enter();

        fibonacci(3);
    });
}
  1. Replace YOUR-API-KEY above with your api key and run it.

  2. Open New Relic One, navigate to Entity explorer and search for tracing-newrelic-demo.

  3. You should see a entry span named calculating fibonacci(3) and click it for more details:

newrelic screenshot
  1. Click See logs to view all events inside this span:
newrelic screenshot

And I strongly recommend include these attributes in your spans:

  1. span.kind

    New Relic creates throught and response time dashboards for spans with span.kind set to server and consumer.

    newrelic throughtput-reponse-time
  2. otel.status_code & otel.status_description

    New Relic creates error rate dashboard for spans with otel.status_code set to ERROR.

    newrelic error-rate
  3. service.name

    New Relic group entity by their service.name field.

    newrelic services
  4. name

    New Relic group trnsations by their name field.

    newrelic transactions

License

MIT

Commit count: 34

cargo fmt