当前位置: 首页 > 知识库问答 >
问题:

开放遥测收集器不会将Metric属性导出到New Relic

葛书
2023-03-14

我正在尝试从节点将度量导出到OpenTelemetry收集器容器。js应用程序,然后将其导出到New Relic。

我正在制作一个简单的请求计数器:

const exporter = new OTLPMetricExporter();


const meter = new MeterProvider({
    exporter,
    interval: 10 * 1000,
    resource: new Resource({
        [SemanticResourceAttributes.SERVICE_NAME]: 'otlp-service',
    }),
}).getMeter('my-meter-name');

const requestCount = meter.createCounter('api.requests', {
    description: 'Count all incoming requests to API.',
});

...

onResponseFinished(res, () => {
        const statusCode = res.statusCode ? res.statusCode : 'N/A';
        const labels = { statusCode };
        requestCount.add(1, labels);
};

我想使用status code属性,以便能够在New Relic中按不同的状态代码进行刻面/分组。为此,我需要在每个请求旁边导出状态代码属性(标签),以便在New Relic中使用它们。但是,这些标签不会在OTLP中导出,也不会显示在日志导出器中。我已经阅读了export helpers上OpenTelemetry GitHub页面上的resource\u to\u telemetry\u conversion:enabled:true设置,并与Prometheus一起用于此StackOverflow问题,但是,将此属性添加到我的OTLP exporter配置会导致其由于配置文件无效而关闭;似乎它只是用于普罗米修斯,而不是一般用于OTLP。

这是我的otel配置。yml:

extensions:
  health_check: {}
receivers:
  otlp:
    protocols:
      grpc:
processors:
  batch: # compresses data and reduces number of outgoing connections.
exporters:
  logging:
    logLevel: debug
  otlp:
    endpoint: https://otlp.nr-data.net:4317
    headers:
      api-key: $NEW_RELIC_API_KEY
service:
  extensions: [health_check]
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, otlp]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, otlp]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, otlp]

我正在使用WSL2和:

➜  ~ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
➜  ~ node --version
v14.18.1

package.json摘录:

...
        "@opentelemetry/api": "^1.0.4",
        "@opentelemetry/exporter-metrics-otlp-grpc": "^0.27.0",
        "@opentelemetry/resources": "^1.0.1",
        "@opentelemetry/sdk-metrics-base": "^0.27.0",
        "@opentelemetry/semantic-conventions": "^1.0.1",
...

我的问题是:需要更改哪些设置才能通过OTLP导出Metric属性,并使它们出现在New Relic中?

谢谢你

共有1个答案

经慈
2023-03-14

我发现这是由版本不匹配引起的,因为opentelemetry-js库JS OTLP导出器仍然使用版本过低的原型。问题正在这个问题下进行跟踪。

 类似资料:
  • 我们将有一个高负荷的遥测服务。我正在寻找能够扩展收集器和后端(zipkin)的解决方案 有一种扩展zipkin的解决方案。看起来很简单-只需使用内部平衡 但是,我找不到使用多个openTelemetry收集器的示例。运行几个收集器实例没有什么问题,但我如何说“myApp”来平衡它们呢?在Exporters中没有这样的选项。

  • 我正在尝试为Lightstep中的Hello world示例设置跟踪安装https://lightstep.com/blog/opentelemetry-nodejs/: 我的tracing.js如下: 我的收集器正在本地主机4317上侦听,配置文件如下: 我正在运行otelcontribcol\u darwin\u amd64版本23。它会将痕迹发送到我的logz。io帐户。它适用于Java和P

  • 我在将开放遥测数据导出并发送到newRelic的GRPCendpoint时遇到问题。这是我尝试连接到newRelicendpoint的代码片段: 它卡在步道里了。新的。 我是开放遥测的新手,我读了打开的遥测留档,我可以在控制台中打印Otel数据,但是当我想将其导出到newrelic时,它不起作用。我也读了newRelic Otel留档,他们有一个导出器SDK但是它停止了,他们提供了这个新的GRPC

  • 我已经运行了官方的Otel collector文档,并使用Docker和以下配置/代码文件运行了collector,但当应用程序尝试发布到/v1/tracesendpoint时,总能从collector获得404。我也尝试过各种代码示例,这篇文章,在macOS和Ubuntu上运行收集器,使用旧版本,但都没有成功。偶数<代码>卷曲-s-X柱'http://localhost:55681/v1/tra

  • 我正在使用一个Java应用程序,并尝试使用OpenTelemetrys Java autoinstrumentation。看起来,autoinstrumentation只对来自应用程序本身的代码直接调用起作用,而依赖项没有被检测? 该项目使用一个依赖项,该依赖项本身使用Apache HttpClient向远程服务器发送请求。然而,这些请求似乎没有被检测。当直接在我的应用程序中执行请求时,它也能正常

  • 如果我有一个垃圾收集器来跟踪分配的每个对象,并在它们不再有对它们的可用引用时立即释放它们,你还会有内存泄漏吗? 考虑到内存泄漏是指没有任何引用的分配,这不是不可能的吗?还是我遗漏了什么? 编辑:所以我认为内存泄漏是您在代码中不再引用的分配。您仍然可以引用的大量累积分配不是我在这里考虑的泄漏。 我也只是在谈论普通的G.C.,已经有一段时间了,但我知道像循环引用这样的案例不会把他们绊倒。我不需要任何语