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

如何在C# Azure函数中用Azure.Monitor.Query查询Application Insights CustomEvents?

解决Azure.Monitor.Query查询Application Insights CustomEvents的问题

可以通过Azure.Monitor.Query包查询CustomEvents,你遇到的错误是因为Log Analytics工作区中存储Application Insights自定义事件的表名与AI原生查询的表名不同。

问题原因

当Application Insights实例关联到Log Analytics工作区后,自定义事件数据会被写入AppEvents表(而非AI原生查询时的customEvents表)。直接用customEvents作为表名查询工作区,自然会找不到对应的表。

两种解决方案

方案1:直接查询Log Analytics工作区的AppEvents表

修改Kusto查询语句,将customEvents替换为AppEvents,还可添加筛选条件指定目标Application Insights实例:

// 初始化LogsQueryClient(Azure函数中建议用DefaultAzureCredential)
var logsQueryClient = new LogsQueryClient(new DefaultAzureCredential());

// 构造查询:筛选特定AI实例的自定义事件,时间范围5小时
var query = @"AppEvents
| where AppName == ""你的AI实例名称""
| where TimeGenerated > ago(5h)
| take 3";

var response = await logsQueryClient.QueryWorkspaceAsync(
    "<你的工作区ID>",
    query,
    new QueryTimeRange(TimeSpan.FromHours(5)));

方案2:使用app()函数定向查询特定Application Insights实例

如果更习惯用AI原生的customEvents表名,可通过app()函数指定目标AI实例,查询会直接针对该实例的自定义事件数据,无需切换表名:

var logsQueryClient = new LogsQueryClient(new DefaultAzureCredential());

// 构造查询:用app()函数指定AI实例,使用原生customEvents表名
var query = @"app('你的AI实例ID或名称').customEvents
| where timestamp > ago(5h)
| take 3";

var response = await logsQueryClient.QueryWorkspaceAsync(
    "<你的工作区ID>",
    query,
    new QueryTimeRange(TimeSpan.FromHours(5)));

注意事项

  • 确保Azure函数的身份(如托管标识)拥有Log Analytics Reader或Application Insights Reader权限,能够访问目标工作区和AI实例。
  • 如果使用DefaultAzureCredential,需要在Azure函数的配置中启用托管标识,并为其分配对应的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:11:39