awesome-copilot 技能实战:使用 Azure 门户为 App Service 应用无代码自动接入 Application Insights
2026/9/12 4:00:57 网站建设 项目流程

awesome-copilot 技能实战:使用 Azure 门户为 App Service 应用无代码自动接入 Application Insights

【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot

本篇技术指南聚焦于 awesome-copilot 仓库中appinsights-instrumentation技能的核心路径之一——自动插桩(Auto-instrumentation)。它面向托管在 Azure App Service 中的 ASP.NET Core 与 Node.js 应用,讲解如何在不修改任何应用代码的前提下,借助 Azure 门户为应用一键开启 Application Insights 遥测。读完本文,你将掌握自动插桩的适用条件、Azure 门户直达 URL 的构造方法,以及它与手动插桩(修改代码 + IaC 资源创建)之间的决策边界。

自动插桩是什么

Application Insights 是 Azure Monitor 体系中的应用性能管理(APM)服务,用于采集请求、依赖、异常、性能等遥测数据。传统接入方式需要在应用代码中引入 SDK 并完成初始化(即"手动插桩")。而自动插桩(也称为 codeless instrumentation)由托管平台(如 Azure App Service)在运行时注入遥测能力,对应用代码零侵入——不需要安装客户端库、不需要修改任何源文件、不需要重新部署应用逻辑。

在 appinsights-instrumentation/SKILL.md 中,自动插桩被定义为该技能的首选路径:Prefer auto-instrument if possible(只要条件允许,优先自动插桩)。只有当应用不属于可自动插桩的类型时,才回退到手动插桩路线。

自动插桩能覆盖哪些遥测

开启后,应用无需额外开发即可获得基础可观测能力,例如:

  • 请求量与响应时间(吞吐、延迟分布)
  • 依赖调用(数据库、外部 HTTP 调用等)
  • 异常与失败率
  • 服务器端性能计数器

这些数据进入 Application Insights 资源后,可用于监控应用健康状态、定位性能瓶颈——这正是该技能"使 Web 应用向 Azure Application Insights 发送有用遥测数据以提升可观测性"的初衷(见 SKILL.md 的描述字段)。

适用前提:仅支持两类应用

自动插桩并非对所有应用形态通用。依据 references/AUTO.md,只有以下两种类型的应用可以自动插桩

应用类型托管环境
ASP.NET Core 应用Azure App Service
Node.js 应用Azure App Service

这意味着判断是否走自动插桩路径,取决于(编程语言、应用框架、托管方式)这个三元组。在 SKILL.md 的指南部分明确了这一判断流程:

  • 先阅读源码,对应用的编程语言、框架与托管方式做出合理推断;
  • 必须向用户确认应用托管在哪里——例如本地个人电脑、Azure App Service(以代码形式)、Azure App Service(以容器形式)、Azure Container App 等;
  • 只有确认应用是C# ASP.NET Core 且托管在 Azure App Service时,才采用 AUTO 指南(见 SKILL.md 中 "Prefer auto-instrument if possible" 一节)。

需要特别留意的是,托管形态对结果影响很大:以容器形式部署到 App Service、或部署到 Azure Container App 等场景,不在自动插桩的支持范围内,应改用手动插桩。更完整的支持环境清单以 Azure Monitor 官方"无代码(codeless)接入"文档为准,本文仅以仓库文档明确列出的两类为准。

核心操作:构造 Azure 门户直达 URL

自动插桩的落地动作非常轻量——为 App Service 应用构造一个指向 Azure 门户 Application Insights 配置面板的 URL,引导用户到该面板完成开启操作。

AUTO 指南给出的 URL 模板如下(references/AUTO.md):

https://portal.azure.com/#resource/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Web/sites/{app_service_name}/monitoringSettings

将该 URL 在浏览器中打开后,即可直达该 App Service 应用的监控设置(monitoringSettings)面板,在其中开启 Application Insights 自动插桩。

三个必须替换的占位符

URL 中包含三个占位符,含义与获取方式如下:

占位符含义获取方式
{subscription_id}承载该 App Service 的 Azure 订阅 ID通过会话上下文推断,或询问用户
{resource_group_name}承载该 App Service 的资源组名称通过会话上下文推断,或询问用户
{app_service_name}该 Web 应用的 App Service 名称通过会话上下文推断,或询问用户

依据 references/AUTO.md 的指引,Agent 应优先从上下文(context)中推断这三个值——例如工作区中已有的 IaC 文件、部署配置或之前的对话;若无法推断,则应主动向用户询问,而不是凭空猜测。

一个完整示例

假设订阅 ID 为aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee、资源组为rg-webapp-prod、App Service 名为my-webapp,则最终 URL 为:

https://portal.azure.com/#resource/subscriptions/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/resourceGroups/rg-webapp-prod/providers/Microsoft.Web/sites/my-webapp/monitoringSettings

打开后按门户提示开启 Application Insights 即可,整个过程无需任何代码更改与重新部署。

自动插桩 vs 手动插桩:如何决策

自动插桩虽然便捷,但覆盖范围有限。当应用不在上述两类支持范围内(例如 Python 应用、以容器运行的 App Service、Azure Container App、本地运行等),该技能会引导走手动插桩路线,大体包含两大步骤:

  1. 创建 Application Insights 资源:按环境二选一——
    • 将 App Insights 资源加入现有的 Bicep 模板(参考 examples/appinsights.bicep);
    • 使用 Azure CLI 创建(参考 scripts/appinsights.ps1)。
  2. 修改应用代码:按语言选择对应指南——
    • ASP.NET Core:references/ASPNETCORE.md;
    • Node.js:references/NODEJS.md;
    • Python:references/PYTHON.md。

可把两条路线对比如下:

维度自动插桩手动插桩
代码修改需要安装客户端库并初始化
支持语言ASP.NET Core、Node.jsASP.NET Core、Node.js、Python 等
支持托管Azure App Service(代码方式)更广(App Service、Container App 等,视 SDK 而定)
落地动作打开门户 URL 开启即可创建 App Insights 资源 + 改代码 + 部署 + 配置连接字符串
是否需重新部署不需要需要(代码变更后需部署生效)

其中"是否需重新部署"是两种方式最直观的差异:自动插桩对存量应用零改动,非常适合"先接入再评估"的快速落地场景;手动插桩则需要经历一次完整的代码修改、部署与连接字符串配置流程。

仓库中的配套资源

自动插桩之外,该技能文件夹(skills/appinsights-instrumentation/)还打包了手动插桩所需的完整配套资产,可作为后续深入实践的素材:

  • 技能说明:SKILL.md —— 定义技能的触发条件、上下文收集原则与整体决策流程;
  • 语言参考指南:ASPNETCORE.md、NODEJS.md、PYTHON.md —— 分别给出各语言的 SDK 安装、初始化与连接字符串配置步骤;
  • IaC 示例:examples/appinsights.bicep —— 同时创建 Log Analytics Workspace(含 30 天保留期、PerGB2018SKU)与 Application Insights 组件(Microsoft.Insights/components@2020-02-02Application_Type: 'web'),并输出connectionString供应用使用;
  • Azure CLI 脚本:scripts/appinsights.ps1 —— 覆盖 App Insights 扩展安装、Log Analytics 工作区创建、App Insights 组件创建、连接字符串查询,以及为 App Service / Container App / Function App 设置环境变量的完整命令序列。

值得一提的是,scripts/appinsights.ps1 与 examples/appinsights.bicep 中涉及的connectionString输出与APPLICATIONINSIGHTS_CONNECTION_STRING环境变量(详见 ASPNETCORE.md 的配置说明)是手动插桩路径的关键衔接点:应用运行时通过该环境变量读取连接字符串并向 Application Insights 上报数据。这些细节对从"自动插桩"升级到"更精细的手动控制"时非常有用。

小结与实操清单

自动插桩是 appinsights-instrumentation 技能中"成本最低、见效最快"的接入方式。执行时可遵循以下清单:

  1. 确认应用为 ASP.NET Core 或 Node.js,且以代码方式托管在 Azure App Service;
  2. 从上下文或用户处取得subscription_idresource_group_nameapp_service_name三个参数;
  3. 按模板拼接 Azure 门户 URL 并交予用户打开;
  4. 在 monitoringSettings 面板开启 Application Insights,等待遥测数据流入;
  5. 若应用不属于支持范围,则转入手动插桩:参考 examples/appinsights.bicep 或 scripts/appinsights.ps1 创建资源,再按语言指南修改代码并配置APPLICATIONINSIGHTS_CONNECTION_STRING环境变量。

掌握以上流程后,你可以在数分钟内为符合条件的 Azure Web 应用建立基础可观测性,并在需要更细粒度埋点时平滑过渡到手动插桩方案。

【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询