首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenTelemetry Nodejs -将收集器连接到工具

OpenTelemetry Nodejs -将收集器连接到工具
EN

Stack Overflow用户
提问于 2021-07-19 20:32:08
回答 3查看 160关注 0票数 1

我正在尝试为Lightstep https://lightstep.com/blog/opentelemetry-nodejs/中的Hello world示例设置跟踪安装

代码语言:javascript
复制
const express = require("express");

const PORT = process.env.PORT || "8080";
const app = express();

app.get("/", (req, res) => {
  res.send("Hello World");
});

app.listen(parseInt(PORT, 10), () => {
  console.log(`Listening for requests on http://localhost:${PORT}`);
});

我的tracing.js如下所示:

代码语言:javascript
复制
'use strict';

const opentelemetry = require('@opentelemetry/api');
const { NodeTracerProvider } = require('@opentelemetry/node');
const { BatchSpanProcessor } = require("@opentelemetry/tracing");
const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { autoinstrumentationsnode } = require('@opentelemetry/auto-instrumentations-node');

module.exports = () => {
 const provider = new NodeTracerProvider();

 const exporterOptions = {
  serviceName: "my-service-name",
  url: "http://localhost:4317",
 }


 const exporter = new CollectorTraceExporter(exporterOptions);
 provider.addSpanProcessor(new BatchSpanProcessor(exporter));
 provider.register();

 registerInstrumentations({
  instrumentations: [
    new autoinstrumentationsnode(),
  ],
 })
 return opentelemetry.trace.getTracer("instrumentation-example");
}

我的收集器正在监听localhost:4317,配置文件如下:

代码语言:javascript
复制
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: "localhost:4317"

exporters:
  logzio:
    account_token: token

processors:
  batch:

extensions:
  pprof:
    endpoint: :1777
  zpages:
    endpoint: :55679
  health_check:

service:
  extensions: [health_check, pprof, zpages]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [logzio]

我运行的是otelcontribcol_darwin_amd64版本23。它会把跟踪信息发送到我的logz.io账户。它适用于Java和Python应用程序。

我被node.js卡住了。终端显示节点在localhost:8080上运行,但它不会向任何地方发送任何跟踪。当我将输出更改为console时,它确实显示了跟踪。所以问题出在收集器和插装之间的通信中。

你能告诉我我可以试着解决这个问题吗?

非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2021-07-20 02:08:51

你在哪里找到收集器url http://localhost:4317的?这是不正确的配置。截至今天,端口4317为grpc保留,55681端口为http保留。当您使用http发送遥测时,您应该按照建议的here为每个信号(跟踪/度量/日志)配置您的url。用http://localhost:55681/v1/traces更新你的收集器url应该可以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2021-07-20 04:20:50

谢谢你Srikanth!我已经为收集器尝试了这个配置:

代码语言:javascript
复制
receivers:
  otlp:
    protocols:
      http:
        endpoint: localhost:55681

exporters:
  logzio:
    account_token: token


processors:
  batch:

extensions:
  pprof:
    endpoint: :1777
  zpages:
    endpoint: :55679
  health_check:

service:
  extensions: [health_check, pprof, zpages]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [logzio]

追踪器是这样的:

代码语言:javascript
复制
'use strict';

const opentelemetry = require('@opentelemetry/api');
const { NodeTracerProvider } = require('@opentelemetry/node');
const { BatchSpanProcessor } = require("@opentelemetry/tracing");
const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');

module.exports = () => {
 const provider = new NodeTracerProvider();

 const exporterOptions = {
  serviceName: "my-service-name",
  url: "http://localhost:55681/v1/traces",
 }


 const exporter = new CollectorTraceExporter(exporterOptions);
 provider.addSpanProcessor(new BatchSpanProcessor(exporter));
 provider.register();

 registerInstrumentations({
  instrumentations: [
    new HttpInstrumentation(),
  ],
 })
 return opentelemetry.trace.getTracer("instrumentation-example");
}

不幸的是,它仍然不能工作。

我尝试将"v1/traces“添加到

代码语言:javascript
复制
receivers:
  otlp:
    protocols:
      http:
        endpoint: localhost:55681/v1/traces

但收集器随后拒绝运行,因为它无法识别端点格式。

票数 0
EN

Stack Overflow用户

发布于 2021-08-04 00:43:41

请检查示例,该示例应始终是最新的https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/collector-exporter-node

首先,我可以看到在您的配置中定义“端点”是不必要的。您也可以跳过"exporterOptions“中的"url”参数,以便使用默认值。

请尝试使用收集器的最新版本,我一直在使用"otel/opentelemetry- collector :0.30.0“,它对我来说工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68440565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档