如何为基于OpenTelemetry的Node.js容器应用启用Application Insights实时指标
启用Azure Monitor实时指标的步骤(Node.js + OpenTelemetry)
1. 确认依赖包版本
确保安装兼容的OpenTelemetry相关包,优先使用最新稳定版:
npm install @azure/monitor-opentelemetry-exporter @opentelemetry/sdk-metrics @opentelemetry/resources @opentelemetry/semantic-conventions
2. 配置指标采集与导出
在OpenTelemetry初始化代码中添加指标SDK配置,将数据导出到Azure Monitor:
const { AzureMonitorMetricExporter } = require("@azure/monitor-opentelemetry-exporter"); const { MeterProvider } = require("@opentelemetry/sdk-metrics"); const { Resource } = require("@opentelemetry/resources"); const { SEMRESATTRS_SERVICE_NAME } = require("@opentelemetry/semantic-conventions"); // 配置资源标识,必须指定服务名称 const resource = new Resource({ [SEMRESATTRS_SERVICE_NAME]: "your-service-name", // 替换为你的实际服务名 }); // 初始化Azure Monitor指标导出器 const metricExporter = new AzureMonitorMetricExporter({ connectionString: "YOUR_AZURE_MONITOR_CONNECTION_STRING", // 替换为你的连接字符串 }); // 创建指标提供者并绑定导出器 const meterProvider = new MeterProvider({ resource }); meterProvider.addMetricReader({ exporter: metricExporter, exportIntervalMillis: 15000, // 实时指标建议设置15-60秒的导出间隔 }); // 设置全局指标提供者 require("@opentelemetry/api").metrics.setGlobalMeterProvider(meterProvider);
3. 启用内置指标采集
添加Node.js instrumentation包来自动采集系统和运行时指标:
npm install @opentelemetry/instrumentation-node
在初始化代码中启用内置工具:
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node"); const { registerInstrumentations } = require("@opentelemetry/instrumentation"); const { HttpInstrumentation } = require("@opentelemetry/instrumentation-http"); // 原有追踪配置保持不变 const tracerProvider = new NodeTracerProvider({ resource }); tracerProvider.register(); // 启用HTTP等内置指标采集工具 registerInstrumentations({ instrumentations: [ new HttpInstrumentation(), // 可按需添加express、mongodb等其他工具包 ], });
4. 自定义业务指标(可选)
若需采集业务相关指标,可通过全局Meter创建计数器、仪表盘等:
const { metrics } = require("@opentelemetry/api"); const meter = metrics.getMeter("app-business-metrics"); const requestCounter = meter.createCounter("app.requests.total", { description: "Total number of requests received", }); // 在请求处理逻辑中调用计数 requestCounter.add(1, { endpoint: "/api/users", status: "200" });
5. 验证实时指标
启动应用后等待数分钟,进入Azure门户的Azure Monitor -> 实时指标页面,选择对应应用资源即可查看采集到的指标数据。
常见排查点
- 确认Azure Monitor连接字符串正确且具备Metrics发布权限
- 导出间隔不宜过短,避免触发限流,建议保持15-60秒区间
- 确保Resource中服务名称配置正确,否则指标无法关联到目标应用
内容的提问来源于stack exchange,提问作者Amrish
相关产品推荐
相关产品推荐

