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、本地运行等),该技能会引导走手动插桩路线,大体包含两大步骤:
- 创建 Application Insights 资源:按环境二选一——
- 将 App Insights 资源加入现有的 Bicep 模板(参考 examples/appinsights.bicep);
- 使用 Azure CLI 创建(参考 scripts/appinsights.ps1)。
- 修改应用代码:按语言选择对应指南——
- ASP.NET Core:references/ASPNETCORE.md;
- Node.js:references/NODEJS.md;
- Python:references/PYTHON.md。
可把两条路线对比如下:
| 维度 | 自动插桩 | 手动插桩 |
|---|---|---|
| 代码修改 | 无 | 需要安装客户端库并初始化 |
| 支持语言 | ASP.NET Core、Node.js | ASP.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-02,Application_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 技能中"成本最低、见效最快"的接入方式。执行时可遵循以下清单:
- 确认应用为 ASP.NET Core 或 Node.js,且以代码方式托管在 Azure App Service;
- 从上下文或用户处取得
subscription_id、resource_group_name、app_service_name三个参数; - 按模板拼接 Azure 门户 URL 并交予用户打开;
- 在 monitoringSettings 面板开启 Application Insights,等待遥测数据流入;
- 若应用不属于支持范围,则转入手动插桩:参考 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),仅供参考