#tracing #metrics #logging #newrelic

tracing-newrelic

New Relic的跟踪集成

3个版本

0.1.2 2022年3月4日
0.1.1 2022年2月17日
0.1.0 2022年2月17日

#470调试

Download history 6/week @ 2024-03-13 14/week @ 2024-03-20 31/week @ 2024-03-27 31/week @ 2024-04-03 1/week @ 2024-04-10 1/week @ 2024-04-17 9/week @ 2024-04-24 30/week @ 2024-05-01 48/week @ 2024-05-08 31/week @ 2024-05-15 39/week @ 2024-05-22 41/week @ 2024-05-29 21/week @ 2024-06-05 28/week @ 2024-06-12 12/week @ 2024-06-19

每月 75 次下载

MIT 许可证

1MB
620

tracing-newrelic

New Relic的跟踪集成

概述

此crate提供从tracing收集跟踪数据并发送到New Relic的层。

tracing::Span将尝试作为跟踪Span,tracing::Event作为日志。

tracing::Attributetracing::Metadata将尝试作为自定义属性。

示例

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. 将上面的YOUR-API-KEY替换为你的API密钥并运行。

  2. 打开New Relic One,导航到实体探索器并搜索tracing-newrelic-demo

  3. 你应该会看到一个名为calculating fibonacci(3)的条目Span,并单击它以获取更多详细信息

newrelic screenshot
  1. 单击查看日志以查看此Span内部的所有事件
newrelic screenshot

并且我强烈建议在您的Span中包含以下属性

  1. span.kind

    New Relic会通过span.kind设置为serverconsumer的Span创建跟踪和响应时间仪表板。

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

    otel.status_code设置为ERROR时,New Relic为Span创建错误率仪表板。

    newrelic error-rate
  3. service.name

    New Relic会通过service.name字段对实体进行分组。

    newrelic services
  4. name

    New Relic会通过name字段对事务进行分组。

    newrelic transactions

许可证

MIT

依赖项

~7–21MB
~326K SLoC