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

Azure Log Analytics跨工作区查询时如何调用各目标工作区的监视列表(Watchlist)

Azure Log Analytics跨工作区查询时如何调用各目标工作区的监视列表(Watchlist)

嗨,这个问题我之前处理跨工作区日志查询时也遇到过——默认情况下_GetWatchlist只会读取你当前执行查询所在工作区的监视列表,没法自动匹配每个目标工作区的对应列表,不过咱们可以换个写法解决这个问题~

核心思路是:对每个目标工作区单独编写子查询,在子查询里明确指定要调用该工作区的监视列表,再把所有子查询的结果合并起来。修改后的Kusto查询如下:

union
(
    workspace("<workspace_id1>").Heartbeat
    | where TimeGenerated > ago(timeRange)
    | where not (Computer in ( workspace("<workspace_id1>")._GetWatchlist('<watchlist_name>') | project SearchKey))
    | summarize arg_max(TimeGenerated,*) by Computer, OSType
),
(
    workspace("<workspace_id2>").Heartbeat
    | where TimeGenerated > ago(timeRange)
    | where not (Computer in ( workspace("<workspace_id2>")._GetWatchlist('<watchlist_name>') | project SearchKey))
    | summarize arg_max(TimeGenerated,*) by Computer, OSType
)

为什么这样可行?

_GetWatchlist函数默认作用域是当前查询所在的工作区,所以我们需要给每个_GetWatchlist加上workspace("<工作区ID>").前缀,让它去对应的目标工作区拉取监视列表数据,这样每个子查询里的Heartbeat都会用自身工作区的列表做过滤,最后通过union合并所有符合条件的结果,就达到你要的效果啦。

如果你的工作区数量比较多,还可以考虑把重复的逻辑封装成Kusto函数,传入工作区ID和监视列表名作为参数,这样能减少代码冗余,不过对于少量工作区来说,上面的写法已经足够清晰好用了。

备注:内容来源于stack exchange,提问作者Tiago Duarte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:32:48