在 Kusto 查询中显示 JSON 属性 - 特定子网

Posted

技术标签:

【中文标题】在 Kusto 查询中显示 JSON 属性 - 特定子网【英文标题】:Display JSON Properties in Kusto Query - specific Subnets 【发布时间】:2021-02-28 13:11:11 【问题描述】:

您好,我有一个小问题,我在任何地方都找不到我能理解的答案。

我即将使用 Azure Resource Graph Explorer 及其 Kusto 查询语言在 azure 中制作仪表板,我想显示订阅中有多少子网。

但是当我尝试分离并显示其中的子网时,只会显示存在的 Vnet 数量,或者显示一行子网而不是多少。

我尝试使用以下代码来投影子网,但不知道要写什么来显示单行,其中两行名称为“子网”以及它们的数量。

总结:就是这样;我想编写一个 Kusto 查询,我可以将其固定到显示有多少子网的仪表板。

我尝试编写的代码:

resources
| project properties.subnets

输出是: properties_subnets

null
["type":"Microsoft.Network/virtualNetworks/subnets","properties":"provisioningState":"Succeeded", etc. etc. etc. 







    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": 
        "virtualNetworks_Vnet_name": 
            "defaultValue": "Vnet",
            "type": "String"
        
    ,
    "variables": ,
    "resources": [
        
            "type": "Microsoft.Network/virtualNetworks",
            "apiVersion": "2020-05-01",
            "name": "[parameters('virtualNetworks_Vnet_name')]",
            "location": "westeurope",
            "properties": 
                "addressSpace": 
                    "addressPrefixes": [
                        "10.0.0.0/16"
                    ]
                ,
                "subnets": [
                    
                        "name": "default",
                        "properties": 
                            "addressPrefix": "10.0.0.0/24",
                            "delegations": [],
                            "privateEndpointNetworkPolicies": "Enabled",
                            "privateLinkServiceNetworkPolicies": "Enabled"
                        
                    ,
                    
                        "name": "default2",
                        "properties": 
                            "addressPrefix": "10.0.1.0/24",
                            "serviceEndpoints": [],
                            "delegations": [],
                            "privateEndpointNetworkPolicies": "Enabled",
                            "privateLinkServiceNetworkPolicies": "Enabled"
                        
                    
                ],
                "virtualNetworkPeerings": [],
                "enableDdosProtection": false,
                "enableVmProtection": false
            
        ,
        
            "type": "Microsoft.Network/virtualNetworks/subnets",
            "apiVersion": "2020-05-01",
            "name": "[concat(parameters('virtualNetworks_Vnet_name'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_Vnet_name'))]"
            ],
            "properties": 
                "addressPrefix": "10.0.0.0/24",
                "delegations": [],
                "privateEndpointNetworkPolicies": "Enabled",
                "privateLinkServiceNetworkPolicies": "Enabled"
            
        ,
        
            "type": "Microsoft.Network/virtualNetworks/subnets",
            "apiVersion": "2020-05-01",
            "name": "[concat(parameters('virtualNetworks_Vnet_name'), '/default2')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_Vnet_name'))]"
            ],
            "properties": 
                "addressPrefix": "10.0.1.0/24",
                "serviceEndpoints": [],
                "delegations": [],
                "privateEndpointNetworkPolicies": "Enabled",
                "privateLinkServiceNetworkPolicies": "Enabled"
            
        
    ]

【问题讨论】:

您想要在 json 输出中显示 included 的输出也是如此。还是您需要查找其他查询? 子网是虚拟网络的一个属性(子项),我想编写一个查询,只选择子网并显示有多少子网。如果这有意义 你想从收到的json中挑出哪个字段? 我已经更新了我的问题,将我的虚拟网络包含在问题的底部和一个 JSON - 然后我想要查询子网的数量 【参考方案1】:
resources 
| where type=~"Microsoft.Network/virtualNetworks" 
| project array_length(properties.subnets)

【讨论】:

感谢您的帮助和快速响应,我让它工作了,它看起来像这样;资源 |其中 type=~"Microsoft.Network/virtualNetworks" |项目 [“子网数”]=array_length(properties.subnets) | [“子网数”] 前 15 名 你可以写得更短,比如resources | where type=~"Microsoft.Network/virtualNetworks" | project array_length(properties.subnets)。或者这不是真的?

以上是关于在 Kusto 查询中显示 JSON 属性 - 特定子网的主要内容,如果未能解决你的问题,请参考以下文章

Kusto 查询渲染函数忽略指定的 Y 范围

kusto 如何编写子查询

在基于日志的 kusto 查询上设置多个阈值

我们可以在将记录摄取到 Kusto 表之前更改 Kusto 列的值吗?

如何使用 Kusto 查询语言打印树?

如何从 Kusto.Explorer 查询我的 Application Insights 日志(分析)?