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

如何使用C#从Azure Application Insights获取记录(无需额外Azure资源)

无需额外Azure资源的C#读取Application Insights记录方案

你提到的Azure.Monitor.Query NuGet包并非过时版本,它是微软官方维护的Azure Monitor查询SDK,属于当前Azure .NET SDK生态的一部分,一直在持续更新,完全可以放心使用。以下是无需创建额外Azure资源(如App Service)的实现步骤:

1. 安装必要的NuGet包

需要安装两个核心包:

  • Azure.Monitor.Query:用于执行Application Insights日志查询
  • Azure.Identity:提供无密钥身份验证能力,支持多种本地/云端认证方式

通过NuGet命令行安装:

Install-Package Azure.Monitor.Query
Install-Package Azure.Identity

2. 身份验证方式(无额外资源依赖)

本地开发场景

使用DefaultAzureCredential,它会自动从本地环境读取有效认证信息,比如:

  • 你通过az login登录的Azure CLI凭据
  • Visual Studio中已登录的Azure账户
  • Azure PowerShell的登录状态

这种方式不需要创建任何额外Azure资源,直接复用本地已有的认证状态即可。

生产环境场景

如果需要在非本地环境运行,推荐使用服务主体(Service Principal)——这是轻量级的Azure AD身份对象,不属于App Service范畴,仅需为其授予Application Insights的读取权限:

  1. 在Azure AD中创建服务主体(可通过Azure CLI或门户快速完成)
  2. 给该服务主体分配Application Insights资源的Reader角色
  3. 使用ClientSecretCredential传入服务主体的客户端ID、租户ID和客户端密钥进行认证

3. 代码实现示例

以下是使用DefaultAzureCredential进行本地查询的完整代码:

using Azure.Monitor.Query;
using Azure.Identity;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 替换为你的Application Insights资源ID
        string aiResourceId = "/subscriptions/{你的订阅ID}/resourceGroups/{资源组名称}/providers/microsoft.insights/components/{AI资源名称}";
        
        // 初始化日志查询客户端
        var logsClient = new LogsQueryClient(new DefaultAzureCredential());
        
        // Kusto查询语句:获取最近24小时的前10条请求记录
        string kustoQuery = @"
            requests
            | where timestamp >= ago(24h)
            | project id, name, duration, timestamp
            | take 10
        ";
        
        // 执行查询
        var queryResult = await logsClient.QueryAsync(aiResourceId, kustoQuery);
        
        // 遍历输出结果
        foreach (var row in queryResult.Value)
        {
            Console.WriteLine($"请求ID: {row["id"]}, 名称: {row["name"]}, 耗时: {row["duration"]}ms, 时间: {row["timestamp"]}");
        }
    }
}

关键说明

  • 资源ID获取:在Azure门户的Application Insights资源页面,进入「属性」选项卡即可找到完整的资源ID
  • Kusto查询:可根据需求自定义查询语句,支持所有Application Insights日志表(如requests、exceptions、traces等)
  • 权限要求:无论使用哪种认证方式,当前身份必须拥有Application Insights资源的读取权限(Reader角色即可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:05:25