lumeohq / tracing-newrelic

New Relic integration for tracing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:MIT License


Languages

Language:Rust 100.0%