Azure Resource Graph KQL如何合并负载均衡器多条公网IP及FQDN记录
调整后的完整KQL查询语句
Resources | where type =~ 'Microsoft.Network/loadBalancers' | where subscriptionId =~ '11111111-2222-3333-4444-555555555555' | where resourceGroup =~ 'resource-group-name' | mv-expand ipConfig=properties.frontendIPConfigurations | project name, publicIpId = tostring(ipConfig.properties.publicIPAddress.id) | join kind=leftouter ( Resources | where type =~ 'microsoft.network/publicipaddresses' | project publicIpId = id, publicIpAddress = tostring(properties.ipAddress), fqdn = tostring(properties.dnsSettings.fqdn) ) on publicIpId // 仅修改最后一行的summarize逻辑即可 | summarize publicIpAddress = strcat_array(make_list(publicIpAddress), ", "), fqdn = strcat_array(make_list(fqdn), ", ") by name
修改逻辑说明
- 原查询的
summarize语句将name、publicIpAddress、fqdn三个字段共同作为分组维度,所以每个不同的公网IP都会生成独立行 - 调整后仅以负载均衡器名称
name作为分组维度,用make_list()将同一个负载均衡器对应的所有公网IP、FQDN分别聚合为数组,再通过strcat_array()将数组转换为逗号分隔的字符串,即可实现你需要的合并输出效果
如果存在部分公网IP没有配置FQDN的场景,可以在make_list中加入去空逻辑,比如make_list(iff(isempty(fqdn), "", fqdn))避免空值占位。
内容的提问来源于stack exchange,提问作者sepp
相关产品推荐
相关产品推荐

