Context Hub 文档精读:@azure/monitor-opentelemetry JavaScript 分发版接入 Azure Monitor 实战指南(1.16.0)

发布时间:2026/10/10 1:50:02

Context Hub 文档精读:@azure/monitor-opentelemetry JavaScript 分发版接入 Azure Monitor 实战指南(1.16.0) 【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载本文基于 Context Hub 仓库中由维护者撰写并锁定版本的技术指南 content/azure/docs/monitor-opentelemetry/javascript/DOC.md 展开并结合仓库内的姊妹文档与相关源码证据进行深化。读完本文你将掌握如何在 Node.js 进程启动阶段通过一次useAzureMonitor(...)调用完成 Azure Monitor / Application Insights 的 OpenTelemetry 引导正确配置连接字符串与 Microsoft Entra ID 认证、按需选择捆绑插桩并编写自定义 Span 与自定义指标。文档定位一份锁定版本的维护者指南这份指南在 Context Hub 中归属于azure作者下的monitor-opentelemetry条目采用 JavaScript 语言变体。其 frontmatter 记录了关键的元信息字段含义可参考 docs/content-guide.md字段值说明namemonitor-opentelemetry条目名构成azure/monitor-opentelemetry这个文档 IDmetadata.languagesjavascript本文档面向 JavaScript / Node.jsmetadata.versions1.16.0指南锁定 npm 包版本azure/monitor-opentelemetry1.16.0metadata.sourcemaintainer信任级别为维护者编写metadata.updated-on2026-03-13最后修订日期仓库中还存在同条目的 Python 变体 content/azure/docs/monitor-opentelemetry/python/DOC.md锁定azure-monitor-opentelemetry1.8.6两篇文档遵循相同的Golden Rule 配置 使用模式 陷阱骨架可作为跨语言对照阅读。在 Context Hub 的定位中这类文档是供编码 Agent 通过chubCLIcli/skills/get-api-docs/SKILL.md按需拉取并直接用于写代码的权威事实源因此它刻意保持精炼、面向实操。Golden Rule启动时只调用一次Call useAzureMonitor(...) exactly once during Node.js process startup, before you initialize HTTP servers, Azure SDK clients, database drivers, or loggers that you want auto-instrumented.useAzureMonitor(...)必须在 Node.js 进程启动阶段恰好调用一次调用时机必须先于任何你希望被自动插桩的 HTTP 服务器、Azure SDK 客户端、数据库驱动或日志器的初始化全篇所有配置均基于azure/monitor-opentelemetry1.16.0其他版本的行为以对应版本官方文档为准。这个包解决什么问题azure/monitor-opentelemetry是微软官方提供的 Node.js OpenTelemetry分发版distro用于对接 Azure Monitor / Application Insights。它做了两件核心的事把 Azure Monitor 导出器接入 OpenTelemetry——不需要你手工创建SpanProcessor、MetricReader、LogRecordProcessor并逐一手动装配导出器内置一组捆绑插桩——启动后受支持的 Node.js 依赖库如 HTTP 客户端等自动产生 traces、metrics 与依赖遥测。适用场景你希望以Azure Monitor 作为遥测后端并让分发版接管 OpenTelemetry 的引导过程。需要特别区分的是网上大量旧教程围绕独立的applicationinsights包展开那是另一套 SDK 和另一套初始化模型不要把它与azure/monitor-opentelemetry混用。安装与前置环境变量固定版本安装推荐与本文行为保持一致npm install azure/monitor-opentelemetry1.16.0如果需要 Microsoft Entra IDAzure AD认证同时安装 Azure Identitynpm install azure/monitor-opentelemetry1.16.0 azure/identity启动前设置好连接字符串与资源标识export APPLICATIONINSIGHTS_CONNECTION_STRINGInstrumentationKey...;IngestionEndpointhttps://... export OTEL_SERVICE_NAMEbilling-api export OTEL_RESOURCE_ATTRIBUTESservice.namespacepayments,service.instance.idworker-1三个变量的作用变量作用APPLICATIONINSIGHTS_CONNECTION_STRING标识目标 Application Insights 资源是导出器工作的前提OTEL_SERVICE_NAME设置 OpenTelemetry 资源的service.name决定 Azure Monitor 中展示的服务名OTEL_RESOURCE_ATTRIBUTES追加资源属性如service.namespace命名空间分组、service.instance.id实例标识最小可用示例遥测引导建议放在一个专门的启动模块中并在应用其余部分之前导入import { useAzureMonitor } from azure/monitor-opentelemetry; import { metrics, trace } from opentelemetry/api; if (!process.env.APPLICATIONINSIGHTS_CONNECTION_STRING) { throw new Error(APPLICATIONINSIGHTS_CONNECTION_STRING is required); } useAzureMonitor({ azureMonitorExporterOptions: { connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }, }); const tracer trace.getTracer(billing-api); const meter metrics.getMeter(billing-api); const jobsProcessed meter.createCounter(jobs_processed); const span tracer.startSpan(sync-job); try { span.setAttribute(job.name, sync); jobsProcessed.add(1, { job: sync, status: success }); } finally { span.end(); }这一小段代码给你带来的能力一次启动调用完成 Azure Monitor 导出配置——无需手工组装导出器管线可直接使用 OpenTelemetry API创建自定义 Span 与自定义指标启动后加载的受支持 Node.js 库自动获得捆绑插桩。注意getTracer/getMeter返回的是全局 provider 的句柄这与下面的初始化规则一致——分发版会安装全局的 OpenTelemetry provider应用侧直接复用即可。初始化规则务必遵守每个进程只调用一次useAzureMonitor()在导入或构造你希望被插桩的库之前调用遥测引导放在入口文件或一个被提前导入的启动模块中不要放在请求处理器或反复执行的业务代码里复用分发版安装的全局 OpenTelemetry provider不要在旁边再手工创建第二条 tracing 或 metrics 管线否则会造成重复导出与混乱的 provider 状态。配置与认证连接字符串与服务身份标准配置是把 Application Insights 连接字符串传给azureMonitorExporterOptions.connectionString。如果你倾向于用环境变量表达服务身份就在启动前设置OTEL_SERVICE_NAME与OTEL_RESOURCE_ATTRIBUTES。import { useAzureMonitor } from azure/monitor-opentelemetry; useAzureMonitor({ azureMonitorExporterOptions: { connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }, enableLiveMetrics: true, samplingRatio: 1, });samplingRatio固定百分比 trace 采样。取值含义为 01 的采样比例1表示全量采样0.25表示约 25%。需要控制数据量成本时用它enableLive Metrics开启实时指标Live Metrics始终通过OTEL_SERVICE_NAME显式给出服务名避免 Azure Monitor 把无关工作负载归并到通用的进程名之下。Microsoft Entra ID 认证Azure Monitor 对 OpenTelemetry 的认证建议是使用一个 Azure Identity 凭据 连接字符串连接字符串用于标识目标资源。典型做法是把DefaultAzureCredential传给导出器选项import { DefaultAzureCredential } from azure/identity; import { useAzureMonitor } from azure/monitor-opentelemetry; useAzureMonitor({ azureMonitorExporterOptions: { connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, credential: new DefaultAzureCredential(), }, });要点Azure 托管的负载尽量使用**托管身份managed identity**或其他基于TokenCredential的流即使认证走 Microsoft Entra ID连接字符串仍然要配置——它负责标识写入哪个资源关于凭据选择的更多细节ManagedIdentityCredential、WorkloadIdentityCredential、ClientSecretCredential的适用场景仓库内有一份专门的 content/azure/docs/identity/javascript/DOC.md 指南可对照参考其 Golden Rule 同样建议本地与云端共用时用DefaultAzureCredential环境固定后收窄到具体凭据类型。选择性启用捆绑插桩通过instrumentationOptions在启动时逐个开关分发版内置插桩——这是开关内置插桩最安全的位置必须在相关模块被加载之前完成选择import { useAzureMonitor } from azure/monitor-opentelemetry; useAzureMonitor({ azureMonitorExporterOptions: { connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }, instrumentationOptions: { http: { enabled: true }, azureSdk: { enabled: true }, }, samplingRatio: 0.25, enableLiveMetrics: true, });例如上面的配置开启 HTTP 与 Azure SDK 两类插桩采样率设为 25%同时开启实时指标。对于不需要的插桩如某个客户端库可以显式{ enabled: false }关闭减少无谓的开销与噪声。核心使用模式手动 Span对捆绑插桩覆盖不到的工作或希望为重要业务操作附加业务属性时直接用 OpenTelemetry API 创建手动 Spanimport { SpanKind, SpanStatusCode, trace, } from opentelemetry/api; const tracer trace.getTracer(payments); const span tracer.startSpan(reconcile-invoice, { kind: SpanKind.INTERNAL, }); try { span.setAttribute(invoice.id, invoiceId); await reconcileInvoice(invoiceId); } catch (error) { span.recordException(error); span.setStatus({ code: SpanStatusCode.ERROR, message: error instanceof Error ? error.message : String(error), }); throw error; } finally { span.end(); }模式要点span.setAttribute(invoice.id, invoiceId)附加业务属性出错时先span.recordException(error)记录异常再span.setStatus({ code: SpanStatusCode.ERROR, message })标记错误状态最后throw error让调用方感知失败finally中务必span.end()保证正常与异常路径都能结束 Span。自定义指标用 OpenTelemetry metrics API 创建 meter 与 instrumentimport { metrics } from opentelemetry/api; const meter metrics.getMeter(payments); const invoicesProcessed meter.createCounter(invoices_processed); invoicesProcessed.add(1, { status: success, tenant: tenantId, });createCounter创建单调递增计数器add(1, attributes)中的第二个参数即维度属性如status、tenant可用于在指标浏览器中按维度聚合。如果你希望在 Application Insights Metrics Explorer 中看到指标命名空间Azure Monitor 文档给出的做法是显式开启环境变量export APPLICATIONINSIGHTS_METRIC_NAMESPACE_OPT_INtrue启动模块先行导入把遥测引导放在独立文件并在应用其余代码之前导入让初始化顺序一目了然// telemetry.js import { useAzureMonitor } from azure/monitor-opentelemetry; useAzureMonitor({ azureMonitorExporterOptions: { connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }, });// server.js import ./telemetry.js; import express from express; const app express(); app.get(/healthz, (_req, res) { res.json({ ok: true }); }); app.listen(3000);import ./telemetry.js放在express导入之前保证 Express 在被加载时已经处于插桩就绪状态从而让http插桩能捕获到真实请求链路。这种模式避免不小心过早导入被插桩库导致漏插桩的隐蔽问题。常见陷阱清单在服务器、SDK 客户端、数据库驱动或日志器已经加载之后才初始化遥测——插桩窗口已经错过相关库不会被自动插桩多次调用useAzureMonitor()——导致重复或混乱的遥测用了DefaultAzureCredential就忘记设置APPLICATIONINSIGHTS_CONNECTION_STRING——连接字符串依然必需不设置OTEL_SERVICE_NAME——Azure Monitor 中的服务身份会退化为通用的进程名难以区分工作负载把旧版applicationinsights包的示例直接照搬进基于分发版的azure/monitor-opentelemetry项目——两者的包名、初始化顺序与配置对象完全不同。1.16.0 版本敏感说明本指南针对azure/monitor-opentelemetry1.16.0编写文档化的引导入口是useAzureMonitor(...)本文实际使用的配置面为azureMonitorExporterOptions、instrumentationOptions、samplingRatio、enableLiveMetrics其他 Azure Monitor Node SDK 的旧教程可能使用不同的包名、初始化顺序与配置对象复制示例前务必对照官方文档核对版本。跨语言对照Python 变体要点仓库中同条目还维护了 Python 版本content/azure/docs/monitor-opentelemetry/python/DOC.md锁定azure-monitor-opentelemetry1.8.6两篇文档思路一致Golden Rule 都是进程启动时调用一次、先于被插桩库的加载JS 的useAzureMonitor()对应 Python 的configure_azure_monitor()azureMonitorExporterOptions对应connection_string/credential关键字instrumentationOptions、samplingRatio、enableLiveMetrics均有对应项。Python 变体还额外展示了traces_per_second限速采样、logger_name、storage_directory与离线重试存储等能力可作为你在 JavaScript 生态中理解分发版通用设计模型的参照。延伸阅读仓库内本文档源文件content/azure/docs/monitor-opentelemetry/javascript/DOC.mdPython 变体content/azure/docs/monitor-opentelemetry/python/DOC.mdAzure Identity 凭据选择指南JScontent/azure/docs/identity/javascript/DOC.mdContext Hub 内容组织与 frontmatter 规范docs/content-guide.mdAgent 获取此类文档的方式chub get azure/monitor-opentelemetry --lang jscli/skills/get-api-docs/SKILL.md 与 README.md原文档的官方来源部分列出的 Microsoft Learn 配置指南、Microsoft Entra 认证指南与 npm 包页面属于外部资料本文不展开外部链接建议在阅读本指南后以仓库内这份维护者文档为准并结合你所部署的1.16.0版本实际行为进行验证。赞分享【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载相关推荐三步QQ空间备份历史说说完整导出指南三步QQ空间备份历史说说完整导出指南 你是不是也遇到过这种情况翻QQ空间时想找五年前发的一条说说结果越翻越深网页版根本没有批量导出入口。GetQzoneContext Hub 精选文档Azure Speech SDK for Pythonazure-cognitiveservices-speech完整实战指南Context Hub 精选文档Azure Speech SDK for Pythonazure cognitiveservices speech完整实战agentic-awesome-skills 实战Java 应用接入 Azure Monitor OpenTelemetry Exporter 与 Autoconfigure 迁移指南agentic awesome skills 实战Java 应用接入 Azure Monitor OpenTelemetry Exporter 与 AutocAI 技能AI 插件上一篇Loop for macOS5分钟掌握优雅窗口管理的完整教程下一篇Claude Code System Prompts 中的 Claude API Ruby SDK 实战参考安装、客户端初始化、流式消息与 Beta Tool Runner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/10 1:45:02

作物害虫识别实战:从数据集预处理到迁移学习模型训练全流程

简介:面向计算机、人工智能、数据科学及相关专业的同学和从业者,这套基于机器学习的作物害虫识别与分类项目包,覆盖从数据加载、模型训练到分类结果输出的完整流程,既可用来练手入门,也可作为大作业、课程设计或毕业设…

2026/10/10 1:45:02

博光D110 940nm VCSEL驱动与温控工程实践指南

简介:本资源为博光D110型940nm三结VCSEL激光器的官方英文数据手册(Datasheet),面向光学工程师、LiDAR系统开发者及3D传感硬件研发人员,聚焦于高性能脉冲光源的选型与集成应用。文档完整涵盖电光特性(70W峰值…

2026/10/10 6:05:16

单片机毕设选题推荐:基于单片机的多因子室内环境数据采集上传与超标联动响应系统设计 基于单片机的室内环境综合监测系统及移动端远程交互装置设计(030110)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/10 6:05:16

Beyond Compare高效使用指南:从文本比较到文件夹同步与三路合并

Beyond Compare到底怎么用才叫“高效”——我把它翻来覆去用了一遍之后先说个我自己的经历。有次处理一个发布包,上一个版本和这个版本之间文件改了几十个,靠肉眼去翻目录、逐个看修改时间,折腾一晚上,最后还是漏掉了两个配置文件…

2026/10/10 6:05:16

Cursor中MCP配置大更新:旧方式已废弃,新标准接入全指南

最近把项目里的AI辅助编程配置从头捋了一遍,起因是同事发来一条消息:之前那篇《在Cursor中使用MCP》里的配置方法已经废弃了,按老写法配完之后,工具面板里根本找不到自定义的MCP服务。我打开自己的Cursor一试,果然如此…

2026/10/10 6:05:16

SSD固态硬盘价格去哪看

SSD 固态硬盘价格去哪看 主流容量 SSD 的报价到处都有,难的是找到一个把「哪个型号、哪家渠道、哪个市场」写清楚的行情入口。即刻数码(https://bytenows.com/)的硬件行情页 https://bytenows.com/market 目前把主流容量 SSD 列进跟踪范围&am…

2026/10/10 6:05:16

Git在线闯关:用游戏化方式突破分支管理与版本控制难点

第一次意识到“Git要闯关式地学”,是在某一年我带几个新人接入团队仓库的时候。当时我给每个人都发了一份整理好的Git命令速查表,从git init到git merge写得清清楚楚。过了一周,我问大家“能不能把feature分支合并回main,有冲突就…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑