排查 Node.js 中的 OpenTelemetry 问题

本文讨论如何在 Node.js 中排查 OpenTelemetry 问题。

故障排除清单

第 1 步:启用诊断日志记录

Azure Monitor 导出程序将 OpenTelemetry API 记录器用于内部日志。 若要启用记录器,请运行以下代码片段:

const { diag, DiagConsoleLogger, DiagLogLevel } = require("@opentelemetry/api");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");

const provider = new NodeTracerProvider();
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
provider.register();

或者,可以使用以下 环境变量

import { useAzureMonitor } from "@azure/monitor-opentelemetry";
import { DiagLogLevel } from "@opentelemetry/api";

process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL = "VERBOSE";
process.env.APPLICATIONINSIGHTS_LOG_DESTINATION = "file";
process.env.APPLICATIONINSIGHTS_LOGDIR = "C:/applicationinsights/logs";

useAzureMonitor();

第 2 步:测试应用程序主机与引入服务的连接

Application Insights SDK 和代理发送遥测,在引入终结点将其作为 REST 调用引入。 请使用 PowerShell 中的 cURL 命令或原始 REST 请求,测试从 Web 服务器或应用程序主计算机到引入服务终结点的连接。 有关更多信息,请参阅排查 Azure Monitor Application Insights 中缺失应用程序遥测的问题

已知问题

Azure Monitor OpenTelemetry 导出程序存在以下已知问题:

  • 依赖项遥测中缺少操作名称。 缺少的操作名称会导致失败,并对性能选项卡体验产生负面影响。

  • 请求和依赖项遥测数据中缺少设备模型。 缺少的设备模型会对设备队列分析产生负面影响。

  • 依赖项名称中缺少数据库服务器名称。 由于不包括数据库服务器名称,OpenTelemetry 导出程序错误地将具有相同名称的表聚合到不同的服务器上。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区