我正在尝试为Lightstep https://lightstep.com/blog/opentelemetry-nodejs/中的Hello world示例设置跟踪安装
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如下所示:
'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,配置文件如下:
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时,它确实显示了跟踪。所以问题出在收集器和插装之间的通信中。
你能告诉我我可以试着解决这个问题吗?
非常感谢!
发布于 2021-07-20 02:08:51
发布于 2021-07-20 04:20:50
谢谢你Srikanth!我已经为收集器尝试了这个配置:
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]追踪器是这样的:
'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“添加到
receivers:
otlp:
protocols:
http:
endpoint: localhost:55681/v1/traces但收集器随后拒绝运行,因为它无法识别端点格式。
发布于 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“,它对我来说工作得很好。
https://stackoverflow.com/questions/68440565
复制相似问题