Skip to content

PoiScript/tracing-newrelic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

New Relic integration for tracing

Topics

Resources

License

Stars

Watchers

Forks

Languages