Skip to content
返回云服务

Application Insights

实时应用的应用性能监控 (APM):请求追踪、依赖关系图、异常捕获、实时指标和通过 KQL 的日志分析。

Azure进阶

为什么

App Insights 通过一个设置即可自动注入 App Service、Functions 和 AKS,免费获得请求延迟、失败率、依赖调用(SQL、HTTP)和分布式追踪。数据存入 Log Analytics,用 Kusto (KQL) 查询并对任何指标告警。Azure holds 21% cloud market share (Synergy Research Q4 2024)。

Azure 是拥有 Microsoft 365 / Active Directory 资产的企业的默认选择 — 95% 的财富 500 强使用 Azure。AKS 和 Cosmos DB 对 .NET 工作负载是一等公民。

何时使用

从第一天起在每个 Azure 托管应用上启用 App Insights —— 开销极小且无法为过去的事故追溯收集遥测。自定义指标或业务事件用 trackMetric/trackEvent。

日志密集负载需积极采样以控制成本。

如何做

1. 创建 Application Insights 资源(或在 App Service/Functions 上启用,会自动创建)。 2. 获取检测密钥或连接字符串。 3. 添加 SDK(浏览器用 @microsoft/applicationinsights-web,Node.js 用 applicationinsights)。 4. 自动收集请求、依赖、异常;按需添加自定义事件/指标。 5. 在 Log Analytics 工作区用 KQL 查询遥测。 6. 对失败率、延迟或自定义指标设置告警。 ```bash az monitor app-insights component create --name myai --app myapp --resource-group rg --location eastus az monitor app-insights component show --name myai --resource-group rg --query "connectionString" ```

示例

Node.js 自动检测加自定义业务事件,以及慢请求的 KQL 查询: ```ts import appInsights from "applicationinsights"; appInsights.setup(process.env.AI_CONNECTION_STRING!).start(); const client = appInsights.defaultClient; client.trackEvent({ name: "下单", properties: { sku: "A1", qty: 3 } }); client.trackMetric({ name: "购物车金额", value: 99.95 }); ``` ```kusto // 过去一小时内慢于 1 秒的请求,按操作分组 requests | where timestamp > ago(1h) and duration > 1000 | summarize count(), avgDuration=avg(duration) by operation_Name | order by avgDuration desc ```

常见问题

  • ⚠无数据显示 —— 连接字符串/检测密钥错误或 SDK 未启动;调用 .start() 并在门户验证连接字符串。
  • ⚠遥测过多导致高成本 —— 启用自适应采样(Node.js SDK 默认)或对高量应用固定采样 5–10% 以限制摄入成本。
  • ⚠跨服务分布式追踪断裂 —— 每个服务须用相同连接字符串并传播 traceparent 头;SDK 对 HTTP 调用自动处理。

最佳实践

  • ✓通过 App Service/Functions 设置启用自动检测而非手动添加 SDK —— 零代码覆盖请求、依赖和日志。
  • ✓高量应用使用采样(5–10%)控制 Log Analytics 成本,同时保留慢/失败请求的统计显著追踪。
  • ✓编写 KQL 告警规则 '5 分钟内失败率 > 5%' 和 'p95 延迟 > 2s',在用户投诉前收到告警。

常见问题解答

什么是Application Insights?它解决什么问题?

实时应用的应用性能监控 (APM):请求追踪、依赖关系图、异常捕获、实时指标和通过 KQL 的日志分析。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手Application Insights?

两步即可跑通:① 创建 Application Insights 资源(或在 App Service/Functions 上启用,会自动创建)。;② 获取检测密钥或连接字符串。。建议先用免费套餐验证流程,再接入生产环境。

Application Insights 最容易踩的坑是什么?

最高频的问题是:无数据显示 —— 连接字符串/检测密钥错误或 SDK 未启动;调用 .start() 并在门户验证连接字符串。。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

Application Insights 的最佳实践有哪些?

Application Insights 的最佳实践包括:通过 App Service/Functions 设置启用自动检测而非手动添加 SDK —— 零代码覆盖请求、依赖和日志。;高量应用使用采样(5–10%)控制 Log Analytics 成本,同时保留慢/失败请求的统计显著追踪。;编写 KQL 告警规则 '5 分钟内失败率 > 5%' 和 'p95 延迟 > 2s',在用户投诉前收到告警。。其中首条「通过 App Service/Functions 设置启用自动检测而非手动添加 SDK —— 零代码覆盖请求、依赖和日志。」应作为团队默认规范写入 IaC 模板。

Application Insights 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。Application Insights 多数提供免费套餐,先在免费额度内验证再放量。