You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js查询Azure App Insights日志以实现性能报告自动化

用Node.js自动化查询Azure App Insights日志生成性能报告

别担心,其实App Insights的日志查询和Log Analytics是打通的,用Azure官方的Node.js SDK就能轻松实现自动化查询,正好能满足你生成性能报告的需求——也就是查询requests表中特定URL请求的平均值和99百分位数。下面是具体步骤:

1. 安装必需的SDK依赖

首先要安装两个核心包:一个负责日志查询,一个负责Azure身份验证:

npm install @azure/monitor-query @azure/identity

2. 获取关键信息

你需要提前准备好两个参数:

  • App Insights关联的Log Analytics工作区ID:在App Insights资源的「概览」面板里,找到「工作区资源ID」,提取其中的workspaceId部分(或者直接在Log Analytics工作区的概览里复制ID)
  • 目标URL筛选条件:就是你手动查询时用的特定URL路径,比如/api/checkout

3. 编写查询代码

下面是完整的示例代码,用DefaultAzureCredential做身份验证(本地开发可以用Azure CLI登录,生产环境可以用托管标识),然后执行Kusto查询获取你需要的性能数据:

const { LogsQueryClient, LogsQueryResult } = require("@azure/monitor-query");
const { DefaultAzureCredential } = require("@azure/identity");

async function getAppInsightsPerformanceData() {
  // 初始化客户端
  const credential = new DefaultAzureCredential();
  const client = new LogsQueryClient(credential);

  // 替换成你的工作区ID和目标URL
  const workspaceId = "YOUR_WORKSPACE_ID";
  const targetUrl = "/your-specific-url-path";

  // Kusto查询语句:筛选特定URL,按天聚合计算Avg和P99
  const query = `
requests
| where url contains "${targetUrl}"
| summarize 
    AvgDurationMs = avg(duration), 
    P99DurationMs = percentiles(duration, 99)
by bin(timestamp, 1d)
| order by timestamp desc
`;

  try {
    // 执行查询,这里可以指定时间范围,比如最近7天
    const response = await client.queryLogs(workspaceId, query, {
      timeRange: { duration: "P7D" } // 最近7天,格式符合ISO 8601
    });

    // 处理查询结果
    if (response.status === "Success") {
      const tables = response.tables;
      if (tables.length > 0) {
        const rows = tables[0].rows;
        console.log("性能报告数据(按天):");
        rows.forEach(row => {
          console.log(`日期: ${row[0]}, 平均响应时间(ms): ${row[1].toFixed(2)}, 99百分位响应时间(ms): ${row[2].toFixed(2)}`);
        });
        // 这里可以把结果导出为CSV、JSON,或者集成到你的报告系统里
      }
    } else {
      console.error("查询失败:", response.error);
    }
  } catch (err) {
    console.error("执行查询时出错:", err);
  }
}

// 运行函数
getAppInsightsPerformanceData();

4. 说明和扩展

  • 身份验证:DefaultAzureCredential会自动适配不同环境:本地开发时用Azure CLI登录(执行az login),Azure虚拟机/函数APP等环境会自动用托管标识,无需手动配置密钥。
  • 查询时间范围:你可以调整timeRange参数,比如改成P30D(最近30天),或者指定具体的起始和结束时间。
  • 查询语句定制:如果需要更精细的筛选(比如特定时间段、特定应用版本),可以修改Kusto查询,比如加上| where timestamp between (datetime(2024-01-01) .. datetime(2024-01-31))或者| where cloud_RoleName == "your-app-service-name"。
  • 报告自动化:你可以把这个脚本集成到定时任务(比如用node-schedule),定期运行并把结果发送到邮件、Slack,或者写入数据库生成可视化报告。

这样就能完全替代手动在App Insights「性能」面板的操作,实现性能报告的自动化啦!

内容的提问来源于stack exchange,提问作者JoeBloggs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:12:38