Azure监控日志中如何创建可复用的服务器静态列表用于查询过滤?
在Azure Monitor日志中集中管理静态服务器名称列表的解决方案
以下是几种可行的集中式管理方案,替代直接在查询中嵌入服务器列表:
1. 使用查询函数(Query Functions)
适合静态、小规模的服务器列表,支持多查询共享:
- 创建共享函数:
- 进入Log Analytics工作区的「查询」页面,点击「新建」>「函数」。
- 输入定义服务器列表的Kusto查询,示例:
datatable(ServerName:string) [ "Server01", "Server02", "Server03" ]- 保存函数,命名为
List_of_Servers,设置函数类型为「函数」,并配置共享权限给需要访问的用户/组。
- 在查询中引用:
可以用invoke调用函数,或者结合in子句,示例:AppMessages_CL | where event contains "memory" | extend x = parse_json(tostring(event)) | where x.daemon in (invoke List_of_Servers()) | extend y = parse_json(tostring(x.msg)) | where toint(substring(tostring(y.memory), 0, 3)) >= 200
2. 使用自定义日志表(Custom Log Table)
适合需要频繁更新、条目较多的服务器列表:
- 创建自定义日志表:
- 将服务器列表整理为CSV文件(单列,列名设为
ServerName,每行一个服务器名称)。 - 进入Log Analytics工作区的「自定义日志」页面,上传该CSV文件,创建名为
ServerList的自定义日志表。
- 将服务器列表整理为CSV文件(单列,列名设为
- 在查询中引用:
通过子查询获取列表后过滤,示例:
若需要更新列表,只需重新上传新版CSV文件覆盖即可。AppMessages_CL | where event contains "memory" | extend x = parse_json(tostring(event)) | where x.daemon in (ServerList | project ServerName) | extend y = parse_json(tostring(x.msg)) | where toint(substring(tostring(y.memory), 0, 3)) >= 200
3. 使用工作区变量(Workspace Variables)
适合全局共享、需统一管理的服务器列表(需Azure Monitor工作区支持该功能):
- 创建工作区变量:
- 进入Log Analytics工作区的「设置」>「变量」页面,点击「新建变量」。
- 变量类型选择「字符串数组」,名称设为
AllowedServers,值填入服务器名称数组,示例:["Server01","Server02","Server03"]。
- 在查询中引用:
通过vars()函数调用变量,示例:AppMessages_CL | where event contains "memory" | extend x = parse_json(tostring(event)) | where x.daemon in dynamic(vars('AllowedServers')) | extend y = parse_json(tostring(x.msg)) | where toint(substring(tostring(y.memory), 0, 3)) >= 200
内容的提问来源于stack exchange,提问作者Thorne
相关产品推荐
相关产品推荐

