前提条件
完成vpce接入。
接入步骤
- 引入opentelemetry相关依赖。
npm install --save @opentelemetry/api
npm install --save @opentelemetry/auto-instrumentations-node
npm install --save @opentelemetry/sdk-node
- 查看接入点信息。
应用列表的接入指引会根据您所在资源池提供“通过 HTTP 上报数据”和“通过 gRPC 上报数据”的ENDPOINT(天翼云vpc网络接入点)、鉴权TOKEN信息。
- 初始化Node.js Provider。
- 请将url和token替换成相应地域的接入点信息。
const opentelemetry = require('@opentelemetry/sdk-node');
const { Resource } = require('@opentelemetry/resources');
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
const {
getNodeAutoInstrumentations,
} = require('@opentelemetry/auto-instrumentations-node');
const {
OTLPTraceExporter,
} = require('@opentelemetry/exporter-trace-otlp-proto');
const {
OTLPMetricExporter,
} = require('@opentelemetry/exporter-metrics-otlp-proto');
const { PeriodicExportingMetricReader } = require('@opentelemetry/sdk-metrics');
const { diag, DiagConsoleLogger, DiagLogLevel } = require('@opentelemetry/api');
// 打印日志
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO);
const resource = new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'nodejs-demo', // 在这里设置您的服务名称
});
const sdk = new opentelemetry.NodeSDK({
resource: resource, // 添加resource配置
traceExporter: new OTLPTraceExporter({
url: '<url>', // 通过otel http 方式上报的地址
headers: {'x-ctg-authorization': '<token>'},//上鉴权token
}),
instrumentations: [getNodeAutoInstrumentations()],
});
sdk.start();
- client上报demo。
// 引入OpenTelemetry SDK和自动instrumentation
require('./tracing'); // 确保在代码最顶部引入
const fetch = require('node-fetch');
async function makeRequest() {
const response = await fetch('http://localhost:3001/test');
const data = await response.text();
console.log(data);
}
makeRequest();
- 服务端上报demo。
// 引入OpenTelemetry SDK和自动instrumentation
require('./tracing');// 确保在代码最顶部引入
const express =require('express');
const app =express();
const port =3001;
app.get('/test',(req, res)=>{
res.send('Hello from the server!');
});
app.listen(port,()=>{
console.log(`Server listening at http://localhost:${port}`);
});
- 通过上面步骤就可以在控制台查看node.js产生的监控数据了。