diff --git a/Workbooks/Workloads/SAP/Inventory Checks for SAP/Inventory Checks for SAP.workbook b/Workbooks/Workloads/SAP/Inventory Checks for SAP/Inventory Checks for SAP.workbook
index 15f831d9a7..db1e6e716a 100644
--- a/Workbooks/Workloads/SAP/Inventory Checks for SAP/Inventory Checks for SAP.workbook
+++ b/Workbooks/Workloads/SAP/Inventory Checks for SAP/Inventory Checks for SAP.workbook
@@ -31,46 +31,29 @@
{
"id": "c3c353f3-249e-49cd-87c4-4c10376ba65c",
"version": "KqlParameterItem/1.0",
- "name": "Help",
- "label": "Show Help",
- "type": 10,
- "isRequired": true,
- "typeSettings": {
- "additionalResourceOptions": []
- },
- "jsonData": "[\r\n { \"value\": \"Yes\", \"label\": \"Yes\"},\r\n { \"value\": \"No\", \"label\": \"No\", \"selected\":true },\r\n { \"value\": \"Change Log\", \"label\": \"Change Log\"}\r\n]",
- "timeContext": {
- "durationMs": 86400000
- }
- },
- {
- "id": "31184e31-8b2f-4743-a165-1666fe11613f",
- "version": "KqlParameterItem/1.0",
- "name": "Resource_Filter",
+ "name": "Expand_Summary",
+ "label": "Expand Summary Report",
"type": 2,
- "description": "Filer Resource base on \"Resource Group\" or \"VIS [Virtual Instance for SAP Solutions]\"",
"isRequired": true,
- "isGlobal": true,
+ "query": "{\"version\":\"1.0.0\",\"content\":\"[\\\"Yes\\\", \\\"No\\\"]\",\"transformers\":null}",
"typeSettings": {
"additionalResourceOptions": [],
"showDefault": false
},
- "jsonData": "[\r\n { \"value\": \"ResourceGroup\", \"label\": \"ResourceGroup\"},\r\n { \"value\": \"VIS\", \"label\": \"VIS\", \"selected\":true }\r\n]",
"timeContext": {
"durationMs": 86400000
},
- "value": "ResourceGroup"
+ "queryType": 8,
+ "value": "No"
},
{
"id": "a0e701f9-fe18-4d0a-bbfc-c75960795243",
"version": "KqlParameterItem/1.0",
- "name": "Report_check",
- "label": "Report",
+ "name": "Dashboard",
"type": 2,
"description": "Single page view",
"isRequired": true,
- "query": "{\"version\":\"1.0.0\",\"content\":\"[\\\"Yes\\\", \\\"No\\\"]\",\"transformers\":null}",
- "value": "No",
+ "query": "{\"version\":\"1.0.0\",\"content\":\"[\\\"Summary\\\", \\\"Extended_Report\\\", \\\"AzSecurity\\\",\\\"VIS\\\"]\",\"transformers\":null}",
"typeSettings": {
"additionalResourceOptions": [],
"showDefault": false
@@ -78,17 +61,18 @@
"timeContext": {
"durationMs": 86400000
},
- "queryType": 8
+ "queryType": 8,
+ "value": "Summary"
}
],
"style": "pills",
"queryType": 0,
"resourceType": "microsoft.operationalinsights/workspaces"
},
- "customWidth": "40",
+ "customWidth": "45",
"name": "Overview of Inventory checks",
"styleSettings": {
- "maxWidth": "40"
+ "maxWidth": "45"
}
},
{
@@ -125,7 +109,9 @@
"defaultValue": "value::1",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
- "value": []
+ "value": [
+ "value::all"
+ ]
}
],
"style": "above",
@@ -133,9 +119,9 @@
"resourceType": "microsoft.resourcegraph/resources"
},
"conditionalVisibility": {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "ResourceGroup"
+ "parameterName": "Dashboard",
+ "comparison": "isNotEqualTo",
+ "value": "VIS"
},
"customWidth": "20",
"name": "parameters - Resource Group Filter"
@@ -149,13 +135,11 @@
],
"parameters": [
{
- "id": "1010a239-d7fb-419f-8589-83b91412f852",
+ "id": "77f02dfd-2e76-40b1-9f3c-f0a16f004f91",
"version": "KqlParameterItem/1.0",
"name": "system_SID",
"type": 5,
- "description": "VIS",
"isRequired": true,
- "isGlobal": true,
"multiSelect": true,
"quote": "'",
"delimiter": ",",
@@ -165,6 +149,7 @@
],
"typeSettings": {
"additionalResourceOptions": [
+ "value::1",
"value::all"
],
"showDefault": false
@@ -176,11 +161,10 @@
"resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "44e23a9f-fc1e-482f-993a-42bda9dd7ab1",
+ "id": "02d052a5-2987-41dd-add1-e78bd1f90dea",
"version": "KqlParameterItem/1.0",
"name": "VIS_VMs",
"type": 5,
- "isGlobal": true,
"multiSelect": true,
"quote": "'",
"delimiter": ",",
@@ -190,14 +174,16 @@
],
"isHiddenWhenLocked": true,
"typeSettings": {
- "additionalResourceOptions": [],
- "showDefault": false
+ "additionalResourceOptions": []
+ },
+ "timeContext": {
+ "durationMs": 86400000
},
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "12dbb639-192b-4907-82bf-2fdf443ec2a1",
+ "id": "9fcab2e6-688b-4f4c-ad0d-a29ac564d789",
"version": "KqlParameterItem/1.0",
"name": "Resource_group",
"type": 5,
@@ -207,34 +193,38 @@
],
"isHiddenWhenLocked": true,
"typeSettings": {
- "additionalResourceOptions": [],
- "showDefault": false
+ "additionalResourceOptions": []
+ },
+ "timeContext": {
+ "durationMs": 86400000
},
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
}
],
"style": "above",
+ "doNotRunWhenHidden": true,
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
},
"conditionalVisibility": {
- "parameterName": "Resource_Filter",
+ "parameterName": "Dashboard",
"comparison": "isEqualTo",
"value": "VIS"
},
"customWidth": "20",
- "name": "parameters - VIS Filter",
+ "name": "parameters - VIS",
"styleSettings": {
- "maxWidth": "10"
+ "margin": "20",
+ "padding": "10"
}
},
{
"type": 1,
"content": {
- "json": "Welcome to SAP Inventory checks.\r\nFor any support with this workbook, please log a case under Virtual Machines running for SAP."
+ "json": "Welcome to SAP Observability Dashboard.\r\nFor any support with this workbook, please log a case under Virtual Machines running for SAP."
},
- "customWidth": "20",
+ "customWidth": "30",
"name": "text - Home text",
"styleSettings": {
"showBorder": true
@@ -243,63 +233,25 @@
{
"type": 1,
"content": {
- "json": "** Greetings to the Inventory Checks for SAP workbook. **\r\n\r\nThis workbook is designed for a self-service examination of your Azure resources dedicated to SAP workloads. We leverage platform resources and refer to best practices wherever applicable. Additionally, we offer a Resource_Filter, allowing you to choose an Azure Resource Group or VIS (Virtual Instance for SAP = SID) for reviewing resources on Azure within the selected subscription.\r\n\r\nKindly choose the subscription where the workload/resources requiring review are deployed."
- },
- "conditionalVisibility": {
- "parameterName": "Subscriptions",
- "comparison": "isEqualTo"
- },
- "name": "text - Welcome text"
- },
- {
- "type": 1,
- "content": {
- "json": "## Azure SAP Inventory Checks\r\n### Change Log\r\nThis workbook is for Azure SAP Inventory Checks. Use this checks the overall Azure SAP Health Check from Azure Platform.\r\n\r\n|Version|Description|Update on | Update By|\r\n|---|---|---|\r\n|v0.0.0| Initial Release | November 2021 | Developer1\r\n|v0.0.1| Code update | December 2021 | Developer1\r\n|v0.1.0| Added Report tab | January 2022 | Developer1\r\n"
- },
- "conditionalVisibility": {
- "parameterName": "Help",
- "comparison": "isEqualTo",
- "value": "Change Log"
- },
- "customWidth": "60",
- "name": "text - Change log"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "66a08934-0e82-48c9-91df-5a54a7418f62",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Azure Inventory Checks Report",
- "subTarget": "Single_Page_View",
- "preText": "Report",
- "style": "link"
- }
- ]
+ "json": "## Overview Group"
},
"conditionalVisibility": {
- "parameterName": "Report_check",
+ "parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "Yes"
+ "value": "NoShow"
},
- "customWidth": "20",
- "name": "links - Report"
+ "name": "text - Overview"
},
{
"type": 1,
"content": {
- "json": "## Overview Group"
+ "json": "**Welcome to the Azure Observability Workbook.** \r\nTo begin using this workbook, select the appropriate Subscriptions and Resource Groups to display the relevant deployment details.\r\n\r\nFor feedback or suggestions for improvement, please contact the Microsoft ACSS Support Team.\r\n"
},
"conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
+ "parameterName": "Resource_Group",
+ "comparison": "isEqualTo"
},
- "name": "text - Overview"
+ "name": "text - Information on the workbook"
},
{
"type": 12,
@@ -308,793 +260,1046 @@
"groupType": "editable",
"items": [
{
- "type": 11,
+ "type": 9,
"content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
{
- "id": "a19cfc88-cfe4-4dda-9c1b-916950e8d04d",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Azure resource Overview",
- "subTarget": "overview",
- "style": "link"
- }
- ]
- },
- "customWidth": "25",
- "conditionalVisibility": {
- "parameterName": "Extended_Checks",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- "name": "links - Azure Resource Overview"
- },
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
+ "id": "20f2a425-28db-4dbb-bd6b-31fa06a5c227",
+ "version": "KqlParameterItem/1.0",
+ "name": "VM_Count",
+ "type": 1,
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
{
+ "id": "00de1056-e10a-4e8c-a29d-87c106bd8b03",
+ "version": "KqlParameterItem/1.0",
+ "name": "AvZone_VMs",
"type": 1,
- "content": {
- "json": "## Overview Azure Resources"
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where isnotempty(zones)\r\n| project id, name, avZone = tostring(zones)\r\n| summarize avZone = count()\r\n| project Message = strcat(avZone)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
},
- "conditionalVisibilities": [
- {
- "parameterName": "Extended_Checks",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "overview"
- }
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "11b7f778-6429-499e-8eaa-a2ef294950b1",
+ "version": "KqlParameterItem/1.0",
+ "name": "VMSS_VMs",
+ "type": 1,
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend VMSS = (properties.virtualMachineScaleSet.id)\r\n| where isnotempty(VMSS)\r\n| summarize VMSS = count()\r\n| project Message = strcat(VMSS)\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "name": "Overview-Title"
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources | summarize count(type)",
- "size": 4,
- "title": "Count of All Resources",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "tiles",
- "tileSettings": {
- "titleContent": {
- "columnMatch": "count_type",
- "formatter": 12,
- "formatOptions": {
- "palette": "blue"
- }
- },
- "showBorder": true,
- "sortCriteriaField": "count_type",
- "sortOrderField": 2
- }
+ "id": "75a3c8e3-245e-4435-9629-3f537091597c",
+ "version": "KqlParameterItem/1.0",
+ "name": "VM_deallocated",
+ "type": 1,
+ "query": "Resources\r\n| where type =~ \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend powerState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| where powerState == \"VM deallocated\"\r\n| project name, PowerState = powerState\r\n| summarize name = count()\r\n| project Message = strcat(name)\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
},
- "conditionalVisibilities": [
- {
- "parameterName": "Extended_Checks",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "overview"
- }
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "f5e42550-4433-4dcf-92d7-ac845bf592af",
+ "version": "KqlParameterItem/1.0",
+ "name": "VM_Standard_OS",
+ "type": 1,
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where tostring(properties.storageProfile.osDisk.managedDisk.storageAccountType) contains 'Standard_'\r\n| project VMName = name, OS_DISK_SKU = tostring(properties.storageProfile.osDisk.managedDisk.storageAccountType)\r\n| summarize OS_DISK_SKU = count()\r\n| project Message = strcat(OS_DISK_SKU)",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "name": "query - Overview Count"
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources \r\n| extend type = case(\r\ntype contains 'microsoft.netapp/netappaccounts', 'NetApp Accounts',\r\ntype contains \"microsoft.compute\", \"Azure Compute\",\r\ntype contains \"microsoft.logic\", \"LogicApps\",\r\ntype contains 'microsoft.keyvault/vaults', \"Key Vaults\",\r\ntype contains 'microsoft.storage/storageaccounts', \"Storage Accounts\",\r\ntype contains 'microsoft.compute/availabilitysets', 'Availability Sets',\r\ntype contains 'microsoft.operationalinsights/workspaces', 'Azure Monitor Resources',\r\ntype contains 'microsoft.operationsmanagement', 'Operations Management Resources',\r\ntype contains 'microsoft.insights', 'Azure Monitor Resources',\r\ntype contains 'microsoft.desktopvirtualization/applicationgroups', 'WVD Application Groups',\r\ntype contains 'microsoft.desktopvirtualization/workspaces', 'WVD Workspaces',\r\ntype contains 'microsoft.desktopvirtualization/hostpools', 'WVD Hostpools',\r\ntype contains 'microsoft.recoveryservices/vaults', 'Backup Vaults',\r\ntype contains 'microsoft.web', 'App Services',\r\ntype contains 'microsoft.managedidentity/userassignedidentities','Managed Identities',\r\ntype contains 'microsoft.storagesync/storagesyncservices', 'Azure File Sync',\r\ntype contains 'microsoft.hybridcompute/machines', 'ARC Machines',\r\ntype contains 'Microsoft.EventHub', 'Event Hub',\r\ntype contains 'Microsoft.EventGrid', 'Event Grid',\r\ntype contains 'Microsoft.Sql', 'SQL Resources',\r\ntype contains 'Microsoft.HDInsight/clusters', 'HDInsight Clusters',\r\ntype contains 'microsoft.devtestlab', 'DevTest Labs Resources',\r\ntype contains 'microsoft.containerinstance', 'Container Instances Resources',\r\ntype contains 'microsoft.portal/dashboards', 'Azure Dashboards',\r\ntype contains 'microsoft.containerregistry/registries', 'Container Registry',\r\ntype contains 'microsoft.automation', 'Automation Resources',\r\ntype contains 'sendgrid.email/accounts', 'SendGrid Accounts',\r\ntype contains 'microsoft.datafactory/factories', 'Data Factory',\r\ntype contains 'microsoft.databricks/workspaces', 'Databricks Workspaces',\r\ntype contains 'microsoft.machinelearningservices/workspaces', 'Machine Learnings Workspaces',\r\ntype contains 'microsoft.alertsmanagement/smartdetectoralertrules', 'Azure Monitor Resources',\r\ntype contains 'microsoft.apimanagement/service', 'API Management Services',\r\ntype contains 'microsoft.dbforpostgresql', 'PostgreSQL Resources',\r\ntype contains 'microsoft.scheduler/jobcollections', 'Scheduler Job Collections',\r\ntype contains 'microsoft.visualstudio/account', 'Azure DevOps Organization',\r\ntype contains 'microsoft.network/', 'Network Resources',\r\ntype contains 'microsoft.migrate/' or type contains 'microsoft.offazure', 'Azure Migrate Resources',\r\ntype contains 'microsoft.servicebus/namespaces', 'Service Bus Namespaces',\r\ntype contains 'microsoft.classic', 'ASM Obsolete Resources',\r\ntype contains 'microsoft.resources/templatespecs', 'Template Spec Resources',\r\ntype contains 'microsoft.virtualmachineimages', 'VM Image Templates',\r\ntype contains 'microsoft.documentdb', 'CosmosDB DB Resources',\r\ntype contains 'microsoft.alertsmanagement/actionrules', 'Azure Monitor Resources',\r\ntype contains 'microsoft.kubernetes/connectedclusters', 'ARC Kubernetes Clusters',\r\ntype contains 'microsoft.purview', 'Purview Resources',\r\ntype contains 'microsoft.security', 'Security Resources',\r\ntype contains 'microsoft.cdn', 'CDN Resources',\r\ntype contains 'microsoft.devices','IoT Resources',\r\ntype contains 'microsoft.datamigration', 'Data Migraiton Services',\r\ntype contains 'microsoft.cognitiveservices', 'Congitive Services',\r\ntype contains 'microsoft.customproviders', 'Custom Providers',\r\ntype contains 'microsoft.appconfiguration', 'App Services',\r\ntype contains 'microsoft.search', 'Search Services',\r\ntype contains 'microsoft.maps', 'Maps',\r\ntype contains 'microsoft.containerservice/managedclusters', 'AKS',\r\ntype contains 'microsoft.signalrservice', 'SignalR',\r\ntype contains 'microsoft.resourcegraph/queries', 'Resource Graph Queries',\r\ntype contains 'microsoft.batch', 'MS Batch',\r\ntype contains 'microsoft.analysisservices', 'Analysis Services',\r\ntype contains 'microsoft.synapse/workspaces', 'Synapse Workspaces',\r\ntype contains 'microsoft.synapse/workspaces/sqlpools', 'Synapse SQL Pools',\r\ntype contains 'microsoft.kusto/clusters', 'ADX Clusters',\r\ntype contains 'microsoft.resources/deploymentscripts', 'Deployment Scripts',\r\ntype contains 'microsoft.aad/domainservices', 'AD Domain Services',\r\ntype contains 'microsoft.labservices/labaccounts', 'Lab Accounts',\r\ntype contains 'microsoft.automanage/accounts', 'Automanage Accounts',\r\nstrcat(\"Not Translated: \", type))\r\n| summarize count() by type",
- "size": 0,
- "title": "Resource Count by Type",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "barchart",
- "tileSettings": {
- "titleContent": {
- "columnMatch": "type",
- "formatter": 1
- },
- "leftContent": {
- "columnMatch": "count_",
- "formatter": 12,
- "formatOptions": {
- "palette": "auto"
- },
- "numberFormat": {
- "unit": 17,
- "options": {
- "style": "decimal",
- "maximumFractionDigits": 2,
- "maximumSignificantDigits": 3
- }
- }
- },
- "showBorder": true,
- "sortCriteriaField": "count_",
- "sortOrderField": 2
- }
+ "id": "bfc288aa-6345-4f50-a45e-9b533c7e75fb",
+ "version": "KqlParameterItem/1.0",
+ "name": "Accn_false",
+ "type": 1,
+ "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project nicId = tostring(nic.id), id, vmSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations \r\n //| where ipconfig.properties.primary =~ 'true' \r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| where AcceleratedNetworkingOn == \"false\"\r\n| where vmSize !contains \"Standard_B\" and vmSize != \"Standard_D2\" and vmSize != \"Standard_E2\"\r\n| summarize nicId = count()\r\n| project Message = strcat(nicId)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
},
- "conditionalVisibilities": [
- {
- "parameterName": "Extended_Checks",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "overview"
- }
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "9d82e86c-761c-4818-880e-596ff25fe55d",
+ "version": "KqlParameterItem/1.0",
+ "name": "NonZonalVM",
+ "type": 1,
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where isempty(zones)\r\n| project id, name, avZone = tostring(zones)\r\n| summarize name = count()\r\n| project Message = strcat(name)\r\n\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "name": "query - Resource Count by Type"
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resourcecontainers \r\n| where type has \"microsoft.resources/subscriptions/resourcegroups\"\r\n| summarize Count=count(type) by type, subscriptionId | extend type = replace(@\"microsoft.resources/subscriptions/resourcegroups\", @\"Resource Groups\", type)",
- "size": 4,
- "title": "Subscription Overview",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "$gen_group",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": null,
- "showIcon": true
- }
- },
- {
- "columnMatch": "type",
- "formatter": 16,
- "formatOptions": {
- "showIcon": true
- }
- },
- {
- "columnMatch": "subscriptionId",
- "formatter": 5
- }
- ],
- "hierarchySettings": {
- "treeType": 1,
- "groupBy": [
- "subscriptionId"
- ],
- "expandTopLevel": true
- }
- }
+ "id": "9adf5024-b9af-4972-9441-037387467b4e",
+ "version": "KqlParameterItem/1.0",
+ "name": "Unplannedoutage",
+ "type": 1,
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Unplanned\"\r\n| where Context == \"Platform Initiated\"\r\n| where Reason !contains \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0])\r\n| summarize VMName = count()\r\n| project Message = strcat(VMName)\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
},
- "conditionalVisibilities": [
- {
- "parameterName": "Extended_Checks",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "overview"
- }
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "297719d9-c6d1-4f52-b95d-f7c9d11fb59c",
+ "version": "KqlParameterItem/1.0",
+ "name": "VMExtension_failed",
+ "type": 1,
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion\r\n| where provisioningState == \"Failed\"\r\n| summarize Extensions = count()\r\n| project Message = strcat(Extensions)",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "name": "query - Subscription Overview"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Extended_Checks",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "overview"
- }
- ],
- "name": "Overview_Group"
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "overview"
- },
- "name": "group - Overview"
- },
- {
- "type": 1,
- "content": {
- "json": "### AzSAP CoE Group"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
- },
- "name": "text - AzSAPCoE"
- },
- {
- "type": 1,
- "content": {
- "json": "### SAP Overview"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
- },
- "name": "text - 23"
- },
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
{
- "id": "9c811240-eb66-4610-910c-31ff2a59054b",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Overview",
- "subTarget": "SAPOverview",
- "style": "link"
+ "id": "7d89c9bf-2cd7-4c5f-8421-04f9b40483fc",
+ "version": "KqlParameterItem/1.0",
+ "name": "OrphanedDisk",
+ "type": 1,
+ "query": "Resources \r\n| where type contains \"microsoft.compute/disks\" \r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend diskState = tostring(properties.diskState)\r\n| where managedBy == \"\" \r\n and (diskState == 'Unattached' or diskState != 'ActiveSAS')\r\n| project id, diskState\r\n| summarize id = count()\r\n| project Message = strcat(id)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "1761e5b7-35da-4bb7-83ea-691c30916c4f",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Virtual Machine",
- "subTarget": "compute",
- "style": "link"
+ "id": "b6dbc944-c8eb-4762-8e9c-0b280b1bcae8",
+ "version": "KqlParameterItem/1.0",
+ "name": "OrphanedANFPool",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.netapp/netappaccounts/capacitypools\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, ANFAccount_Name=tostring(split(name,\"/\",0)[0]), ANFPool_Name=tostring(split(name,\"/\",1)[0]), serviceLevel=tostring(properties.serviceLevel) , usageThreshold = tostring(properties.size), qosType= tostring(properties.qosType), coolAccess= tostring(properties.coolAccess) ,location, resourceGroup\r\n| join kind=leftouter (\r\nresources\r\n| where type == \"microsoft.netapp/netappaccounts/capacitypools/volumes\"\r\n| project ANFAccount_Name=tostring(split(name,\"/\",0)[0]), ANFPool_Name=tostring(split(name,\"/\",1)[0]) ,volume_name = tostring(split(name,\"/\",2)[0]))\r\non ANFPool_Name\r\n| where isempty( volume_name)\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, ANFAccount_Name\r\n| summarize id = count()\r\n| project Message = strcat(id)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "8e966843-9fdf-4768-9ecd-fbb47f408dab",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Storage",
- "subTarget": "storage",
- "style": "link"
+ "id": "2930203e-6b49-4e97-bf5e-e21de4c9a824",
+ "version": "KqlParameterItem/1.0",
+ "name": "Plannedoutage",
+ "type": 1,
+ "query": "healthresourcechanges\r\n | where type == \"microsoft.resources/changes\"\r\n | where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n | where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n | extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp), AnnotationName = properties['changes']['properties.annotationName']['newValue'], Reason = properties['changes']['properties.reason']['newValue'], \r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue'])\r\n | where isnotempty(AnnotationName)\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, AnnotationName, Reason, Context, Category\r\n| order by Timestamp desc\r\n| extend Timestamp = format_datetime(Timestamp, 'dd/MM/yyyy, hh:mm:ss tt')\r\n| where Category == \"Planned\"\r\n| summarize VMName = count()\r\n| project Message = strcat(VMName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "c7bc3c19-9ac2-40f4-a4d7-5368fd93dcf2",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Network",
- "subTarget": "network",
- "style": "link"
+ "id": "aca2c278-0f65-4b9c-a337-4fe924b8e9ac",
+ "version": "KqlParameterItem/1.0",
+ "name": "AvSet",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where isnotempty(properties.availabilitySet.id) // Filter for VMs part of an Availability Set\r\n| summarize VMName = count()\r\n| project Message = strcat(VMName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "54b7e56f-7c8f-49bb-af90-67e6d7c82e0e",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Orphaned Resources",
- "subTarget": "housekeeping",
- "style": "link"
+ "id": "aa9365fb-bd3b-4682-a97d-b2844dc8e904",
+ "version": "KqlParameterItem/1.0",
+ "name": "VMGen1",
+ "type": 1,
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer)\r\n| where not (imagesku contains \"gen2\" or imagesku contains \"g2\" or imagesku contains \"gensecond\")\r\n| summarize imagesku = count()\r\n| project Message = strcat(imagesku)\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "ff290cf1-862a-438c-8860-146abc24a1d7",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Configuration Checks",
- "subTarget": "configchecks",
- "style": "link"
+ "id": "0d983c40-d731-44fc-bcb6-0cc82e8b4bd0",
+ "version": "KqlParameterItem/1.0",
+ "name": "Location",
+ "type": 1,
+ "query": "resources\r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| distinct location",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "typeSettings": {
+ "multiLineText": true,
+ "editorLanguage": "text"
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "d1b68ea6-9a2f-4907-b137-f070620d3619",
- "cellValue": "SelectedTab",
- "linkTarget": "parameter",
- "linkLabel": "Monitoring",
- "subTarget": "monitor",
- "style": "link"
- }
- ]
- },
- "customWidth": "60",
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- },
- "name": "Overview"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
+ "id": "0c41fb9a-e369-468f-a07e-ee79ded023ea",
+ "version": "KqlParameterItem/1.0",
+ "name": "LiveMigration",
+ "type": 1,
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Unplanned\"\r\n| where Context == \"Platform Initiated\"\r\n| where Reason == \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0])\r\n| summarize VMName = count()\r\n| project Message = strcat(VMName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
{
- "id": "bfbbba3d-8abb-4f3d-9f7c-2f45a9cb78dc",
- "cellValue": "sapoverview",
- "linkTarget": "parameter",
- "linkLabel": "Azure Resources Overview ",
- "subTarget": "bycount",
- "style": "link"
+ "id": "845cc87d-5dad-48ce-a920-fea05f8740a7",
+ "version": "KqlParameterItem/1.0",
+ "name": "AzFirewall",
+ "type": 1,
+ "query": "Resources\r\n| where type =~ 'microsoft.network/azurefirewalls'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "dc79bbf4-87bb-470b-bfb0-704d22ee847a",
- "cellValue": "sapoverview",
- "linkTarget": "parameter",
- "linkLabel": "Azure Resources By List",
- "subTarget": "bylist",
- "style": "link"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAPOverview"
- }
- ],
- "name": "links - SAP Resource Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name, vmsize = tostring(properties.hardwareProfile.vmSize)\r\n| summarize count() by vmsize",
- "size": 3,
- "title": "Virtual Machine SKU Overview",
- "noDataMessage": "No VM resource found in selected subscription.",
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart",
- "tileSettings": {
- "showBorder": false,
- "titleContent": {
- "columnMatch": "vmsize",
- "formatter": 1
+ "id": "ea416a95-266a-4f88-b302-22b3a349e011",
+ "version": "KqlParameterItem/1.0",
+ "name": "AzvWAN",
+ "type": 1,
+ "query": "Resources\r\n| where type =~ 'microsoft.network/virtualwans'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize VMName = count()\r\n| project Message = strcat(VMName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- "leftContent": {
- "columnMatch": "count_",
- "formatter": 12,
- "formatOptions": {
- "palette": "auto"
+ {
+ "id": "87f7216f-c4c3-4066-8b8b-4a72831ad5b1",
+ "version": "KqlParameterItem/1.0",
+ "name": "Vnets",
+ "type": 1,
+ "query": "Resources\r\n| where type =~ 'microsoft.network/virtualnetworks'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "bc2cbb70-509c-4415-8d30-287465f06f8e",
+ "version": "KqlParameterItem/1.0",
+ "name": "LBprobeThreshold",
+ "type": 1,
+ "query": "// LB probes\r\nresources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project subscriptionId, lbName=name, lbSku=sku.name, location, lbProbes=properties.probes, resourceGroup\r\n| mv-expand lbProbes\r\n| project subscriptionId, lbName, probeName=tostring(lbProbes.name), probePort=toint(lbProbes.properties.port), \r\n probeNumberOfProbes=lbProbes.properties.numberOfProbes, probeThreshold=lbProbes.properties.probeThreshold,\r\n lbSku, location, probeProtocol=lbProbes.properties.protocol, resourceGroup\r\n | where probeThreshold !contains \"2\"\r\n| order by lbName asc, probePort asc\r\n| summarize lbName = count()\r\n| project Message = strcat(lbName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
},
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
- }
- },
- "graphSettings": {
- "type": 0,
- "topContent": {
- "columnMatch": "vmsize",
- "formatter": 1
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- "centerContent": {
- "columnMatch": "count_",
- "formatter": 1,
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
+ {
+ "id": "d0499dd7-c512-4d2f-ab16-4a8f0b1e607d",
+ "version": "KqlParameterItem/1.0",
+ "name": "OldDiskSnapshot",
+ "type": 1,
+ "query": "Resources\r\n| where type == 'microsoft.compute/snapshots'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend snapshotTime = todatetime(properties.timeCreated)\r\n| where snapshotTime < ago(30d)\r\n| project id, name, location, resourceGroup, snapshotTime\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "69267544-793c-470a-931d-1eba4ccd7cf4",
+ "version": "KqlParameterItem/1.0",
+ "name": "p_PremiumSSDv2Percentage",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where isnull(properties.osType) // Excludes OS disks\r\n| extend DiskType = iff(sku.name startswith \"PremiumV2\", \"Premium SSDv2\", \"Other\")\r\n| summarize TotalDisks = count(), PremiumSSDv2Count = countif(DiskType == \"Premium SSDv2\")\r\n| extend PremiumSSDv2Percentage = strcat(round(todouble(PremiumSSDv2Count) * 100 / todouble(TotalDisks), 2), \"%\")\r\n| extend p_PremiumSSDv2Percentage = PremiumSSDv2Percentage // Creates a parameter\r\n| project p_PremiumSSDv2Percentage\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "02d90db2-cb4d-4485-b4fb-7751f4723b97",
+ "version": "KqlParameterItem/1.0",
+ "name": "VMwithPPG",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.proximityPlacementGroup != \"\"\r\n| project name, id, resourceGroup, subscriptionId, ProximityPlacementGroup = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0])\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "b31d890f-8d3a-4c99-bfd2-01c42d693ddf",
+ "version": "KqlParameterItem/1.0",
+ "name": "Customerreboot",
+ "type": 1,
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout events\r\n//| where Category == \"Unplanned\"\r\n//| where Context == \"Platform Initiated\"\r\n| where Reason contains \"Reboot\" or Reason contains \"crashed\"\r\n// Group by VM Id and aggregate multiple events for each VM\r\n| summarize id = count()\r\n| project Message = strcat(id)\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "578ce8f8-9c79-4c66-9294-9cc768fec394",
+ "version": "KqlParameterItem/1.0",
+ "name": "Degraded",
+ "type": 1,
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = format_datetime(todatetime(properties.changeAttributes.timestamp), \"yyyy-MM-dd HH:mm:ss\"), // Format Timestamp\r\n summary = tostring(properties['changes']['properties.summary']['newValue']),\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where Context == \"Platform Initiated\"\r\n| where Category != \"Planned\"\r\n| where Reason !contains \"Live Migration Succeeded\"\r\n| where summary !contains \"Accelerated Networking\"\r\n| where ImpactType == \"Degraded\"\r\n| extend RedeployBy = extract(@\"(\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}\\s(?:AM|PM))\", 1, summary)\r\n| extend RedeployBy = format_datetime(todatetime(RedeployBy), \"yyyy-MM-dd HH:mm:ss\") // Standardize RedeployBy format\r\n| project Id, VMName = tostring(split(Id, \"/\", 8)[0]), Timestamp, ImpactType, Reason, summary, RedeployBy, Context, Category\r\n| order by Timestamp desc\r\n| summarize VMName = count()\r\n| project Message = strcat(VMName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "version": "KqlParameterItem/1.0",
+ "name": "p_PremiumSSDv2Count",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name = tostring(sku.name),tier = tostring(sku.tier)\r\n| where name startswith \"PremiumV2\"\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "a5f9933a-a817-4f68-9b0a-9e4b10488b2f"
+ },
+ {
+ "id": "72ff44cd-4243-42a4-b89d-aec20ba1dfb0",
+ "version": "KqlParameterItem/1.0",
+ "name": "crg",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.compute/capacityreservationgroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "version": "KqlParameterItem/1.0",
+ "name": "p_ZonalVMsPercentage",
+ "type": 1,
+ "query": "resources \r\n| where type =~ \"microsoft.compute/virtualmachines\"\r\n| extend IsZonal = iff(isnotempty(zones), 1, 0)\r\n| summarize TotalVMs = count(), ZonalVMs = countif(IsZonal == 1)\r\n| extend ZonalVMsPercentage = strcat(round(todouble(ZonalVMs) * 100 / todouble(TotalVMs), 2),\"%\")\r\n| extend p_ZonalVMsPercentage = ZonalVMsPercentage // Creates a parameter\r\n| project p_ZonalVMsPercentage\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "84bdb029-06e5-42e9-90a7-552f223598e4"
}
- },
- "chartSettings": {
- "yAxis": [
- "count_"
- ]
- }
+ ],
+ "style": "pills",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- "customWidth": "33",
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAPOverview"
- },
- {
- "parameterName": "sapoverview",
- "comparison": "isEqualTo",
- "value": "bycount"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- }
- ],
- "name": "query - VM Overview",
- "styleSettings": {
- "margin": "0",
- "padding": "0"
- }
+ "name": "parameters - 1"
},
{
- "type": 3,
+ "type": 1,
"content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name = tostring(sku.name),tier = tostring(sku.tier)\r\n| summarize count() by name",
- "size": 3,
- "title": "Managed Disk overview",
- "noDataMessage": "No Azure Managed Disk found in selected subscription.",
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
+ "json": "
\r\n SAP on Azure Deployment Summary\r\n
\r\n\r\n Azure Region of deployment for selected resources: {Location}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n | Item | \r\n Observation | \r\n
\r\n \r\n \r\n \r\n | AZR-001 | Out of {VM_Count} VMs, {AvZone_VMs} are in Availability Zones, {VMSS_VMs} use VMSS Flex, and {AvSet} are in an Availability Set. |
\r\n | AZR-002 | {p_ZonalVMsPercentage} of the total VMs are deployed in availability zones, while {NonZonalVM} VMs are not zonal.\r\n |
| AZR-003 | {VM_Standard_OS} VMs use a Standard OS disk SKU, impacting the Single VM SLA. |
\r\n | AZR-004 | {VM_deallocated} VMs are in a deallocated state. |
\r\n \r\n \r\n | AZR-005 | {Plannedoutage} VMs were affected by Planned Maintenance. |
\r\n | AZR-006 | {LiveMigration} VMs were migrated due to Live Migration Maintenance. |
\r\n | AZR-007 | {Unplannedoutage} VMs were impacted by Unplanned Maintenance. |
\r\n \r\n \r\n | AZR-008 | {Accn_false} NICs have Accelerated Networking disabled. |
\r\n | AZR-009 | {VMExtension_failed} VM Extensions are in a failed state. |
\r\n \r\n \r\n | AZR-010 | {OrphanedDisk} managed disks are orphaned. |
\r\n | AZR-011 | {OldDiskSnapshot} disk snapshots are older than 30 days. |
\r\n | AZR-012 | {p_PremiumSSDv2Count} managed disks are Premium SSDv2, {p_PremiumSSDv2Percentage} of data disks are Premium SSDv2. |
\r\n \r\n \r\n | AZR-013 | {Vnets} VNets are deployed in the selected subscription. |
\r\n | AZR-014 | {AzFirewall} Azure Firewalls and {AzvWAN} Azure vWANs are deployed in the selected subscription. |
\r\n \r\n \r\n | AZR-015 | {LBprobeThreshold} Load Balancers do not have probeThreshold set to 2. |
\r\n \r\n \r\n | AZR-016 | {VMwithPPG} Virtual Machines are part of a Proximity Placement Group (PPG). |
\r\n | AZR-017 | {Customerreboot} Virtual Machines were rebooted by a user. |
\r\n | AZR-018 | {Degraded} Virtual Machines in a degraded state require attention. |
\r\n | AZR-019 | {crg} Capacity Reservation Groups (CRG) found in the selected scope. |
\r\n\t| AZR-020 | {OrphanedANFPool} ANF Pools are Orphaned ANF pools. |
\r\n | AZR-021 | {VMGen1} Linux Virtual Machines are running with Gen1 or custom image SKU. |
\r\n \r\n
"
},
- "customWidth": "33",
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAPOverview"
- },
- {
- "parameterName": "sapoverview",
- "comparison": "isEqualTo",
- "value": "bycount"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- }
- ],
- "name": "query - Managed Disk overview",
+ "name": "ECS Observability Summary",
"styleSettings": {
- "margin": "0",
- "padding": "0",
- "maxWidth": "33%"
+ "showBorder": true
}
},
{
- "type": 3,
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "a96b682d-c024-4f38-bd7b-cd67509a8e51",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-001",
+ "subTarget": "AZR-001",
+ "preText": "",
+ "style": "link"
+ },
+ {
+ "id": "3f69a3f1-ccb2-434d-9b39-4d7b34bc37b1",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-002",
+ "subTarget": "AZR-002",
+ "style": "link"
+ },
+ {
+ "id": "a5f939b9-1ab4-4dcf-93ab-f7958f34bef8",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-003",
+ "subTarget": "AZR-003",
+ "style": "link"
+ },
+ {
+ "id": "542b1c00-688a-4dbf-b1d3-76da4d91027a",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-004",
+ "subTarget": "AZR-004",
+ "style": "link"
+ },
+ {
+ "id": "a11694ac-b035-4116-9456-b119eb994ecc",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-005",
+ "subTarget": "AZR-005",
+ "style": "link"
+ },
+ {
+ "id": "7af871a0-d990-41e6-a276-fa28ef253554",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-006",
+ "subTarget": "AZR-006",
+ "style": "link"
+ },
+ {
+ "id": "1b54f671-647e-4ce1-b135-b15ec2a6fd7e",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-007",
+ "subTarget": "AZR-007",
+ "style": "link"
+ },
+ {
+ "id": "6cf2483d-1a6d-41d7-b554-4182739841b8",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-008",
+ "subTarget": "AZR-008",
+ "style": "link"
+ },
+ {
+ "id": "3a8a613e-b044-49c3-b8a3-292e56a85c1c",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-009",
+ "subTarget": "AZR-009",
+ "style": "link"
+ },
+ {
+ "id": "c562f4bc-3ec0-43ce-9dac-9d3281883819",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-010",
+ "subTarget": "AZR-010",
+ "style": "link"
+ },
+ {
+ "id": "90bd9a8f-fa70-48dd-ac09-2d8f0ddd7dd4",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-011",
+ "subTarget": "AZR-011",
+ "style": "link"
+ },
+ {
+ "id": "92dedc21-5f76-48fa-ab58-2f080aef3349",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-012",
+ "subTarget": "AZR-012",
+ "style": "link"
+ },
+ {
+ "id": "99c9d6db-fa72-436e-aa67-6936ea2cf74e",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-013",
+ "subTarget": "AZR-013",
+ "style": "link"
+ },
+ {
+ "id": "e368cc51-2ce2-4d0c-9dcd-6680481c6c1f",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-014",
+ "subTarget": "AZR-014",
+ "style": "link"
+ },
+ {
+ "id": "6fef8092-1601-4b4f-bbba-ad827733de46",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-015",
+ "subTarget": "AZR-015",
+ "style": "link"
+ },
+ {
+ "id": "6083d29a-f820-4112-8994-276e35853825",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-016",
+ "subTarget": "AZR-016",
+ "style": "link"
+ },
+ {
+ "id": "91bb5b5a-10d6-410a-b4d1-55f4f398d9e2",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-017",
+ "subTarget": "AZR-017",
+ "style": "link"
+ },
+ {
+ "id": "fce8deb4-bb01-4080-8d42-a24871ad905d",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-018",
+ "subTarget": "AZR-018",
+ "style": "link"
+ },
+ {
+ "id": "e581820f-5da1-465b-be37-ceecb2ac188e",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-019",
+ "subTarget": "AZR-019",
+ "style": "link"
+ },
+ {
+ "id": "0e224d36-f33d-469f-8c45-09b4cfe37bce",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-020",
+ "subTarget": "AZR-020",
+ "style": "link"
+ },
+ {
+ "id": "4ac0a73d-e54d-4631-9af3-cb69e97edc37",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AZR-021",
+ "subTarget": "AZR-021",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "links - Azure Summary"
+ },
+ {
+ "type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "where type has \"microsoft.netapp\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend type = case(\r\n\ttype == 'microsoft.netapp/netappaccounts', \"ANF Accounts\",\r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools', \"Capacity Pools\", \r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools/volumes', \"Volumes\", \r\n\ttype == 'microsoft.netapp/netappaccounts/snapshotpolicies', \"snapshotpolicies\", \r\n\ttype == 'microsoft.netapp/netappaccounts/backuppolicies', \"backuppolicies\",\r\n\tstrcat(\"Not Translated: \", type))\r\n| summarize count() by type",
- "size": 3,
- "title": "ANF Storage Overview",
- "noDataMessage": "No ANF Resource found in selected subscription.",
- "exportToExcelOptions": "all",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend VMSS = tostring(properties.virtualMachineScaleSet.id) // Extract VMSS information\r\n| extend Sku = tostring(properties.hardwareProfile.vmSize) // Add the VM SKU column\r\n| where isnotempty(VMSS)\r\n| project id, Sku, VMSS, resourceGroup\r\n",
+ "size": 0,
+ "title": "{VMSS_VMs} VMs are in VMSS Flex ",
+ "noDataMessage": "No VM found in VMSS Flex in the current selection",
+ "noDataMessageStyle": 3,
+ "exportParameterName": "VMSS_VMs",
+ "showExportToExcel": true,
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "VMSS",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ }
+ ]
+ }
},
- "customWidth": "34",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
- },
- {
- "parameterName": "sapoverview",
- "comparison": "isEqualTo",
- "value": "bycount"
+ "value": "AZR-001"
},
{
- "parameterName": "Report_check",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "No"
+ "value": "Yes"
}
],
- "name": "query - ANF Overview"
+ "name": "query - VMSS Flex for SAP",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ \"microsoft.network/applicationgateways\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend tier = parse_json(properties).sku.tier\r\n| project SKU = iff(tier contains \"v2\", \"v2\", \"v1\")\r\n| summarize count() by SKU",
- "size": 3,
- "title": "Application Gateway Overview",
- "noDataMessage": "No App GW found in selected subscription.",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where isempty(zones)\r\n| extend AvSet = tostring(properties.availabilitySet.id) // Add Availability Set column\r\n| extend PPG = tostring(properties.proximityPlacementGroup.id) // Add Proximity Placement Group column\r\n| project id, VM_SKU = tostring(properties.hardwareProfile.vmSize), AvSet, PPG\r\n",
+ "size": 0,
+ "title": "{NonZonalVM} VMs deployed as zonal VM",
+ "noDataMessage": "No VM found in zone in current selection",
+ "showExportToExcel": true,
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart",
- "chartSettings": {
- "seriesLabelSettings": [
+ "gridSettings": {
+ "formatters": [
{
- "seriesName": "v2",
- "label": "Application GW V2"
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkColumn": "id",
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
},
{
- "seriesName": "v1",
- "label": "Application GW V1"
+ "columnMatch": "name",
+ "formatter": 5
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
}
]
}
},
- "customWidth": "33",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
- },
- {
- "parameterName": "sapoverview",
- "comparison": "isEqualTo",
- "value": "bycount"
+ "value": "AZR-002"
},
{
- "parameterName": "Report_check",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "No"
+ "value": "Yes"
}
],
- "name": "query - App GW Overview",
+ "name": "query - NonZonal VMs",
"styleSettings": {
- "maxWidth": "50%"
+ "showBorder": true
}
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
- "size": 3,
- "title": "Azure Load Balancer Overview",
- "noDataMessage": "No Azure Load Balancer found in selected subscription.",
- "exportToExcelOptions": "all",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where tostring(properties.storageProfile.osDisk.managedDisk.storageAccountType) contains 'Standard_'\r\n| project id, VM_SKU = tostring(properties.hardwareProfile.vmSize), OS_DISK_SKU = tostring(properties.storageProfile.osDisk.managedDisk.storageAccountType)",
+ "size": 0,
+ "title": "{VM_Standard_OS} VMs with Standard OS Disk",
+ "noDataMessage": "No VM found with Standard OS Disk",
+ "showExportToExcel": true,
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ }
+ ]
+ }
},
- "customWidth": "34",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
- },
- {
- "parameterName": "sapoverview",
- "comparison": "isEqualTo",
- "value": "bycount"
+ "value": "AZR-003"
},
{
- "parameterName": "Report_check",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "No"
+ "value": "Yes"
}
],
- "name": "query - Azure Load Balancer Overview"
+ "name": "query - VMs with Standard OS Disk",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
- "size": 3,
- "title": "Azure Storage Accounts",
- "noDataMessage": "No Storage Account found in selected subscription.",
- "exportToExcelOptions": "all",
+ "query": "Resources\r\n| where type =~ \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend powerState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| where powerState == \"VM deallocated\"\r\n| project id, VM_SKU = tostring(properties.hardwareProfile.vmSize), PowerState = powerState\r\n",
+ "size": 0,
+ "title": "{VM_deallocated} VMs in Deallocated status",
+ "noDataMessage": "No VM found in deallocated status in current selection",
+ "showExportToExcel": true,
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ }
+ ]
+ }
},
- "customWidth": "33",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
- },
- {
- "parameterName": "sapoverview",
- "comparison": "isEqualTo",
- "value": "bycount"
+ "value": "AZR-004"
},
{
- "parameterName": "Report_check",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "No"
+ "value": "Yes"
}
],
- "name": "query - Storage Account Overview"
+ "name": "query - Deallocated VMs",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 9,
+ "type": 3,
"content": {
- "version": "KqlParameterItem/1.0",
+ "version": "KqlItem/1.0",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Planned\"\r\n| where Reason != \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Category, summary\r\n| order by Timestamp desc",
+ "size": 0,
+ "title": "{Plannedoutage} VM Planned Maintenance",
+ "noDataMessage": "No VM observed planned maintenance",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "parameters": [
- {
- "id": "58b04bca-a5a9-460d-a619-4d50ed8c3aa2",
- "version": "KqlParameterItem/1.0",
- "name": "VM_Messages",
- "type": 1,
- "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total VMs # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 5,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true
+ }
},
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "value": null
- },
- {
- "id": "54c9eec3-283b-4990-9506-82b2c69713e0",
- "version": "KqlParameterItem/1.0",
- "name": "Storage_Messages",
- "type": 1,
- "query": "Resources\r\n| where type == 'microsoft.storage/storageaccounts'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total Storage Accounts # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
+ {
+ "columnMatch": "VMName",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": null,
+ "showIcon": true
+ }
},
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "value": null
- },
- {
- "id": "ecdcb0a6-4340-4125-a135-769f25e29308",
- "version": "KqlParameterItem/1.0",
- "name": "Disk_Message",
- "type": 1,
- "query": "Resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total Managed Disks # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
+ {
+ "columnMatch": "Reason",
+ "formatter": 1
},
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "value": null
- },
- {
- "id": "1013df3c-f6c9-4ca6-9423-db40ee6f5b29",
- "version": "KqlParameterItem/1.0",
- "name": "ANF_Message",
- "type": 1,
- "query": "Resources\r\n| where type == \"microsoft.netapp/netappaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total ANF Accounts # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
+ {
+ "columnMatch": "Context",
+ "formatter": 1
},
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "value": null
- }
- ],
- "style": "pills",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
- "name": "parameters - Future Parameters"
- },
- {
- "type": 1,
- "content": {
- "json": "Azure Resources : {VM_Messages} , {Disk_Message} , {Storage_Messages} , {ANF_Message}\r\n"
+ {
+ "columnMatch": "Category",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "AnnotationName",
+ "formatter": 1
+ }
+ ],
+ "filter": true
+ }
},
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
+ "value": "AZR-005"
},
{
- "parameterName": "sapoverview",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "bylist"
+ "value": "Yes"
}
],
- "name": "text - 12"
+ "name": "query - Planned VM Outage",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, vmsize = tostring(properties.hardwareProfile.vmSize)\r\n| summarize count() by vmsize\r\n| order by tolower(vmsize) asc",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Unplanned\"\r\n| where Context == \"Platform Initiated\"\r\n| where Reason == \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Context, Category, summary\r\n| order by Timestamp desc",
"size": 0,
- "title": "VM SKU's",
+ "title": "{LiveMigration} VMs migrated under Live Migration Maintenance.",
+ "noDataMessage": "No VM observed Live Migration event in current selection",
"showExportToExcel": true,
- "exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
"gridSettings": {
- "rowLimit": 10000,
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "34ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "22ch"
+ },
+ "dateFormat": {
+ "showUtcTime": true,
+ "formatName": "shortDateTimeNoMsPattern"
+ }
+ },
+ {
+ "columnMatch": "ImpactType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "16ch"
+ }
+ },
+ {
+ "columnMatch": "Reason",
+ "formatter": 1,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
+ }
+ },
+ {
+ "columnMatch": "Context",
+ "formatter": 1,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "Category",
+ "formatter": 1,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "AnnotationName",
+ "formatter": 1
+ }
+ ],
"filter": true,
"labelSettings": [
{
- "columnId": "vmsize",
- "label": "VM SKU"
+ "columnId": "VMName",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "Timestamp",
+ "label": "Timestamp [UTC]"
+ },
+ {
+ "columnId": "ImpactType",
+ "label": "Impact Type"
}
]
}
},
- "customWidth": "25",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
+ "value": "AZR-006"
},
{
- "parameterName": "sapoverview",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "bylist"
+ "value": "Yes"
}
],
- "name": "query - VM SKU's",
+ "name": "query - VMs Live Migration",
"styleSettings": {
"showBorder": true
}
@@ -1103,42 +1308,72 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name\r\n| order by tolower(name) asc",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary !contains \"Authorized\" and summary !contains \"pause\"\r\n| where Context != \"Customer Initiated\"\r\n| where Category != \"Planned\"\r\n| where Reason !contains \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, summary\r\n| order by Timestamp desc",
"size": 0,
- "title": "Azure Managed Disks",
+ "title": "VMs with Unplanned Events",
+ "noDataMessage": "No VM found with unplanned events",
"showExportToExcel": true,
- "exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "table",
"gridSettings": {
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
+ "formatters": [
{
- "columnId": "name",
- "label": "Disk SKU"
+ "columnMatch": "id",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "28ch"
+ },
+ "dateFormat": {
+ "formatName": "shortDateTimePattern"
+ }
+ },
+ {
+ "columnMatch": "Reason",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "55ch"
+ }
}
- ]
+ ],
+ "filter": true
}
},
- "customWidth": "25",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
+ "value": "AZR-007"
},
{
- "parameterName": "sapoverview",
+ "parameterName": "Unplanned",
"comparison": "isEqualTo",
- "value": "bylist"
+ "value": "Allunplanned"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ {
+ "parameterName": "noshow",
+ "comparison": "isEqualTo"
}
],
- "name": "query - Azure Managed Disks",
+ "name": "query - All Unplanned Maintenance",
"styleSettings": {
"showBorder": true
}
@@ -1147,45 +1382,106 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name\r\n| order by tolower(name) asc",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"crash\" or summary contains \"restart\" or summary contains \"pause\" or summary contains \"preempted\" // Filter for blackout or brownout\r\n| where Context == \"Platform Initiated\"\r\n| where Category != \"Planned\"\r\n| where Reason !contains \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Context, Category, summary\r\n| order by Timestamp desc",
"size": 0,
- "title": "Azure Storage Resources",
+ "title": "{Unplannedoutage} VMs with Unplanned Maintenance",
+ "noDataMessage": "No Unplanned Impactful downtime observed for the selected resources",
"showExportToExcel": true,
- "exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "table",
"gridSettings": {
- "filter": true,
- "labelSettings": [
+ "formatters": [
{
- "columnId": "name",
- "label": "Storage Type"
+ "columnMatch": "id",
+ "formatter": 5
},
{
- "columnId": "count_",
- "label": "Count"
- }
- ]
- }
- },
- "customWidth": "25",
+ "columnMatch": "VMName",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": null,
+ "showIcon": true,
+ "customColumnWidthSetting": "28ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "24ch"
+ },
+ "dateFormat": {
+ "showUtcTime": true,
+ "formatName": "shortDateTimeNoMsPattern"
+ }
+ },
+ {
+ "columnMatch": "ImpactType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "17ch"
+ }
+ },
+ {
+ "columnMatch": "Reason",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "Context",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "17ch"
+ }
+ },
+ {
+ "columnMatch": "Category",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "VMName",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "Timestamp",
+ "label": "Timestamp [UTC]"
+ },
+ {
+ "columnId": "ImpactType",
+ "label": "Impact Type"
+ }
+ ]
+ }
+ },
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
+ "value": "AZR-007"
},
{
- "parameterName": "sapoverview",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "bylist"
+ "value": "Yes"
+ },
+ {
+ "parameterName": "Unplanned",
+ "comparison": "isNotEqualTo",
+ "value": "Allunplanned"
}
],
- "name": "Query - Storage Accounts Overview",
+ "name": "query - VMs with Unplanned Impact",
"styleSettings": {
"showBorder": true
}
@@ -1194,2230 +1490,1435 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "where type has \"microsoft.netapp\"\r\n| extend type = case(\r\n\ttype == 'microsoft.netapp/netappaccounts', \"ANF Accounts\",\r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools', \"ANF Capacity Pools\", \r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools/volumes', \"ANF Volumes\",\r\n type == 'microsoft.netapp/netappaccounts/snapshotpolicies', \"Snapshot Policies\",\r\n type == 'microsoft.netapp/netappaccounts/backuppolicies', \"Backup Policies\",\r\n type == 'microsoft.netapp/netappaccounts/capacitypools/volumes/mounttargets',\"Mount Targets\",\r\n\tstrcat(\"Not Translated: \", type))\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type\r\n| order by tolower(type) asc",
+ "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project nicId = tostring(nic.id), id, vmSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations \r\n //| where ipconfig.properties.primary =~ 'true' \r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| where AcceleratedNetworkingOn == \"false\"\r\n| where vmSize !contains \"Standard_B\" and vmSize != \"Standard_D2\" and vmSize != \"Standard_E2\"",
"size": 0,
- "title": "ANF Resources",
- "noDataMessage": "No ANF Resource found",
+ "title": "{Accn_false} NICs with Accn networking disabled ",
+ "noDataMessage": "No NIC found Acc Networking disabled",
"showExportToExcel": true,
- "exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "table",
"gridSettings": {
"formatters": [
{
- "columnMatch": "count_",
- "formatter": 0,
+ "columnMatch": "nicId",
+ "formatter": 13,
"formatOptions": {
- "customColumnWidthSetting": "15ch"
+ "linkColumn": "nicId",
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
}
+ },
+ {
+ "columnMatch": "nicId1",
+ "formatter": 5
}
],
- "rowLimit": 10000,
"filter": true,
+ "sortBy": [
+ {
+ "itemKey": "vmSize",
+ "sortOrder": 2
+ }
+ ],
"labelSettings": [
{
- "columnId": "type",
- "label": "ANF Type"
+ "columnId": "nicId",
+ "label": "NIC Name"
+ },
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "vmSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "ipaddress",
+ "label": "IP Address"
}
]
- }
+ },
+ "sortBy": [
+ {
+ "itemKey": "vmSize",
+ "sortOrder": 2
+ }
+ ]
},
- "customWidth": "25",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "SAPOverview"
+ "value": "AZR-008"
},
{
- "parameterName": "sapoverview",
+ "parameterName": "Expand_Summary",
"comparison": "isEqualTo",
- "value": "bylist"
+ "value": "Yes"
}
],
- "name": "query - ANF Resources",
+ "name": "query - VM with Accn Networking disabled",
"styleSettings": {
"showBorder": true
}
},
{
- "type": 1,
+ "type": 3,
"content": {
- "json": "### Compute Group"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion\r\n| where provisioningState == \"Failed\"",
+ "size": 0,
+ "title": "{VMExtension_failed} VMs with Extension Failure",
+ "noDataMessage": "No Extension found in failed state in current selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ }
+ ]
+ }
},
- "name": "text - Compute Overview"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-009"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - VM Extension Failure",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 12,
+ "type": 3,
"content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "b36f7dc7-5b49-4071-83fa-76a7c50df2e6",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Azure Compute",
- "subTarget": "azure",
- "preText": "Azure Compute",
- "style": "link"
- },
- {
- "id": "c7b4b533-ce14-4bc0-acc0-f45104d66fb9",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute List",
- "subTarget": "computelist",
- "style": "link"
- },
- {
- "id": "2c5e0c92-05b0-456f-a132-331f2c7dac03",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute Extensions",
- "subTarget": "computeextension",
- "style": "link"
- },
- {
- "id": "2962cfcd-40da-4be1-a202-1da16761394c",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute+OS",
- "subTarget": "computeos",
- "style": "link"
- },
- {
- "id": "b82c5dbb-f6ac-4964-89c8-6809ef4e65e0",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute+Data Disks",
- "subTarget": "computedata",
- "style": "link"
- },
- {
- "id": "fc89347a-500c-4ad3-9b77-2ed7c5c539a5",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "HANA Large Instance",
- "subTarget": "computehli",
- "style": "link"
- }
- ]
- },
- "customWidth": "50",
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
+ "version": "KqlItem/1.0",
+ "query": "Resources \r\n| where type contains \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend diskState = tostring(properties.diskState)\r\n| where managedBy == \"\" \r\n and (diskState == 'Unattached' or diskState != 'ActiveSAS')\r\n| extend diskSku = tostring(sku.name) // Add the Disk SKU column\r\n| project id, diskState, diskSku, diskSizeinGB = tostring(properties.diskSizeGB)\r\n",
+ "size": 0,
+ "title": "{OrphanedDisk} Orphaned Disks found",
+ "noDataMessage": "No Orphaned Disks found in the current selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "50ch"
}
- ],
- "name": "links - compute"
- },
- {
- "type": 1,
- "content": {
- "json": "Microsoft is constantly updating its platform and submitting new certification details to SAP in order to ensure Microsoft Azure is the best platform on which to run your SAP workloads.\r\n\r\n💡 Learn more about [SAP certifications and configurations running on Microsoft Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-certifications)"
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Disk Name"
},
- "customWidth": "50",
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
+ {
+ "columnId": "diskState",
+ "label": "Disk State"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-010"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Orphaned Disks",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == 'microsoft.compute/snapshots'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend snapshotTime = todatetime(properties.timeCreated)\r\n| where snapshotTime < ago(30d)\r\n| extend diskSizeGB = tostring(properties.diskSizeGB) // Add the disk size column\r\n| extend diskSku = tostring(sku.name)\r\n| project id, diskSku, diskSizeGB, snapshotTime, name, location, resourceGroup\r\n",
+ "size": 0,
+ "title": "{OldDiskSnapshot} Disk Snapshots older than 30 days",
+ "noDataMessage": "No old disk snapshot found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "30ch"
}
- ],
- "name": "text - Compute Info"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources | where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend vmState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| extend vmState = iif(isempty(vmState), \"VM State Unknown\", (vmState))\r\n| summarize count() by vmState",
- "size": 3,
- "title": "Azure Compute Summary ",
- "exportMultipleValues": true,
- "exportedParameters": [
- {
- "fieldName": "Resource",
- "parameterName": "storage",
- "parameterType": 7
- }
- ],
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart",
- "graphSettings": {
- "type": 0,
- "topContent": {
- "columnMatch": "vmState",
- "formatter": 1
- },
- "centerContent": {
- "columnMatch": "count_",
- "formatter": 1,
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
- }
- },
- "chartSettings": {
- "group": "vmState",
- "createOtherGroup": null,
- "seriesLabelSettings": [
- {
- "seriesName": "VM deallocated",
- "color": "brown"
- },
- {
- "seriesName": "VM running",
- "color": "blue"
- }
- ]
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
}
},
- "customWidth": "50",
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "azure"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
}
- ],
- "showPin": true,
- "name": "query - Azure Compute Summary "
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources | where type =~ 'Microsoft.Compute/virtualMachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend licenseType = tostring(properties.['licenseType'])\r\n| extend HybridBenefit = iif(properties.licenseType == \"Windows_Server\", \"Azure Hybrid Benefit\", \"Not Enabled\")\r\n| project id,OStype =tostring(properties.storageProfile.osDisk.osType),licenseType,HybridBenefit,location, resourceGroup\r\n| extend licenseType = iif(isempty(licenseType), \"Blank/PAYG\", (licenseType))\r\n| summarize count() by licenseType",
- "size": 2,
- "title": "VM OS LicenseType",
- "noDataMessage": "No OS LicenseType detected",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Disk Snapshot Name"
},
- "customWidth": "50",
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "azure"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
+ {
+ "columnId": "snapshotTime",
+ "label": "Snapshot Time"
+ },
+ {
+ "columnId": "location",
+ "label": "Region"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-011"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Disk Snapshot older than 30 days",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend diskSizeGB = tostring(properties.diskSizeGB) \r\n| project id, name = tostring(sku.name),tier = tostring(sku.tier),diskSizeGB, avZone = tostring(split(zones, ',')[0]), resourceGroup, location \r\n| where name startswith \"PremiumV2\"",
+ "size": 0,
+ "title": "{PremiumSSDv2} Premium SSDv2",
+ "noDataMessage": "No usage of Premium SSDv2 found in the selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
}
- ],
- "showPin": true,
- "name": "query - VM OS License Type"
- },
- {
- "type": 1,
- "content": {
- "json": "Generation 2 VMs support key features that aren't supported in generation 1 VMs. These features include increased memory, Intel Software Guard Extensions (Intel SGX), and virtualized persistent memory (vPMEM). Generation 2 VMs running on-premises, have some features that aren't supported in Azure yet. For more information, see the Features and capabilities section.\r\n\r\n💡 Learn more about [Support for generation 2 VMs on Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/generation-2)"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computelist"
- },
- {
- "parameterName": "Help",
- "comparison": "isEqualTo",
- "value": "Yes"
+ {
+ "columnMatch": "tier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
}
- ],
- "name": "text - Compute Image tip - Copy"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName = name, powerstate = tostring(properties.extended.instanceView.powerState.displayStatus), vmsize = tostring(properties.hardwareProfile.vmSize), \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer),\r\n location, bootDiagnostics =tostring(properties.diagnosticsProfile.bootDiagnostics.enabled) ,avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n, ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), VMSS = tostring(split(properties.virtualMachineScaleSet.id,\"/\",8)[0]), avZone = tostring(zones), resourceGroup, tags=tostring(tags)",
- "size": 2,
- "title": "Compute List",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "aggregation": "Count",
- "customColumnWidthSetting": "18ch"
- },
- "tooltipFormat": {
- "tooltip": "Virtual Machine Name"
- }
- },
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "powerstate",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "16ch"
- }
- },
- {
- "columnMatch": "vmsize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "os_type",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "publisher",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "is Empty",
- "representation": "1",
- "text": "{0}BYOL/Custom"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "27ch"
- }
- },
- {
- "columnMatch": "version",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "imagesku",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "contains",
- "thresholdValue": "gen2",
- "representation": "success",
- "text": "{0}{1}"
- },
- {
- "operator": "contains",
- "thresholdValue": "gensecond",
- "representation": "success",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "1",
- "text": "{0}Review"
- }
- ],
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "offer",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "location",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
- },
- {
- "columnMatch": "bootDiagnostics",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "success",
- "text": "{0}{1}"
- },
- {
- "operator": "!=",
- "thresholdValue": "true",
- "representation": "1",
- "text": "{0}Review"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "avSet",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "ppg",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- },
- {
- "columnMatch": "avZone",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- },
- {
- "columnMatch": "resourceGroup",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "adminUsername",
- "formatter": 5,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "HyperVgen",
- "formatter": 5,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "powerstate",
- "label": "VM State"
- },
- {
- "columnId": "vmsize",
- "label": "VM SKU"
- },
- {
- "columnId": "os_type",
- "label": "Operating System"
- },
- {
- "columnId": "publisher",
- "label": "OS Image Publisher"
- },
- {
- "columnId": "version",
- "label": "Image version"
- },
- {
- "columnId": "imagesku",
- "label": "OS Image SKU"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "bootDiagnostics",
- "label": "Boot Diagnostic"
- },
- {
- "columnId": "avSet",
- "label": "AvSet"
- },
- {
- "columnId": "ppg",
- "label": "PPG"
- },
- {
- "columnId": "avZone",
- "label": "AvZone"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- }
- ]
+ },
+ {
+ "columnMatch": "avZone",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computelist"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
}
- ],
- "name": "query - compute List",
- "styleSettings": {
- "showBorder": true
}
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "nav",
- "links": [
- {
- "id": "d05b138c-72cf-4fbb-b288-2e02b9f72028",
- "cellValue": "computeextension",
- "linkTarget": "parameter",
- "linkLabel": "VM+Extensions",
- "subTarget": "listvmextension",
- "style": "link"
- },
- {
- "id": "ae64417d-6066-4256-b43c-b6847c0a8322",
- "cellValue": "computeextension",
- "linkTarget": "parameter",
- "linkLabel": "VM Extensions Status",
- "subTarget": "failedextension",
- "style": "link"
- }
- ]
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Disk Name"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeextension"
+ {
+ "columnId": "name",
+ "label": "Type"
+ },
+ {
+ "columnId": "tier",
+ "label": "Tier"
+ },
+ {
+ "columnId": "avZone",
+ "label": "Zone"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource group"
+ },
+ {
+ "columnId": "location",
+ "label": "Region"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-012"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Premium SSDv2",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type =~ 'microsoft.network/virtualnetworks'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| mv-expand SubNet = properties.subnets // Expand the subnets array into rows\r\n| project Name = id, \r\n location, \r\n resourceGroup, \r\n SubNetName = tostring(SubNet.name), // Extract subnet name\r\n SubNetAddressPrefix = tostring(SubNet.properties.addressPrefix) // Extract address prefix for the subnet",
+ "size": 0,
+ "title": "Virtual Network Overview",
+ "noDataMessage": "No Virtual Network found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
}
- ],
- "name": "links - Link"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),\r\n ExtensionName = name\r\n ) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, resourceGroup, location",
- "size": 2,
- "title": "Compute Extension",
- "noDataMessage": "No VM Extension found",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "table",
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "bladeOpenContext": {
- "bladeJsonParameters": ""
- }
- }
- },
- {
- "columnMatch": "Extensions",
- "formatter": 1
- },
- {
- "columnMatch": "OSName",
- "formatter": 5
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "VMSize",
- "label": "VM SKU"
- },
- {
- "columnId": "OSType",
- "label": "Operating System"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "Extensions",
- "label": "VM Extensions"
- }
- ]
- },
- "graphSettings": {
- "type": 0
+ }
+ ],
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-013"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Virtual Network Overview",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type =~ 'microsoft.network/azurefirewalls' or type =~ 'microsoft.network/virtualwans'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend ResourceType = case(type == 'microsoft.network/azurefirewalls', 'Azure Firewall', type == 'microsoft.network/virtualwans', 'Azure Virtual WAN', type)\r\n| project Name = id, name, ResourceType, location, resourceGroup, subscriptionId, properties.provisioningState\r\n",
+ "size": 0,
+ "title": "Azure Firewall or VWAN deployment overview",
+ "noDataMessage": "No Azure Firewall or VWAN deployment found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "30ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeextension"
- },
- {
- "parameterName": "computeextension",
- "comparison": "isEqualTo",
- "value": "listvmextension"
+ {
+ "columnMatch": "name1",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "ResourceType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
}
- ],
- "showPin": false,
- "name": "query - Compute Extension",
- "styleSettings": {
- "showBorder": true
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion",
- "size": 0,
- "title": "VM Extensions Status",
- "noDataMessage": "No VM Extensions",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "provisioningState",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "Succeeded",
- "representation": "success",
- "text": "{0}{1}"
- },
- {
- "operator": "==",
- "thresholdValue": "Failed",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- },
- {
- "columnMatch": "autoUpgradeMinorVersion",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "false",
- "representation": "Sev1",
- "text": "{0}{1}"
- },
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "Sev3",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- },
- {
- "columnMatch": "Extensions",
- "formatter": 1
- },
- {
- "columnMatch": "Group",
- "formatter": 1
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "VMSize",
- "label": "VM SKU"
- },
- {
- "columnId": "OSType",
- "label": "Operating System"
- },
- {
- "columnId": "provisioningState",
- "label": "Extension State"
- },
- {
- "columnId": "autoUpgradeMinorVersion",
- "label": "AutoUpgrade"
- },
- {
- "columnId": "typeHandlerVersion",
- "label": "Version"
- },
- {
- "columnId": "Extensions",
- "label": "Extension Name"
- }
- ]
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeextension"
- },
- {
- "parameterName": "computeextension",
- "comparison": "isEqualTo",
- "value": "failedextension"
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
}
- ],
- "name": "query - Failed VM Extension "
- },
+ },
+ {
+ "columnMatch": "subscriptionId",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "35ch"
+ }
+ }
+ ],
+ "filter": true,
+ "sortBy": [
+ {
+ "itemKey": "ResourceType",
+ "sortOrder": 2
+ }
+ ]
+ },
+ "sortBy": [
{
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n//| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), osDisk = tostring(properties.storageProfile.osDisk.name), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), caching= tostring(properties.storageProfile.osDisk.caching)\r\n, createOption=tostring(properties.storageProfile.osDisk.createOption), osType=tostring(properties.storageProfile.osDisk.osType), avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n| join ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| project id1=id, diskname=name, osDisk=tostring(split(id,\"/\",8)[0]), vmName=tostring(split(managedBy,\"/\",8)[0]), sku =sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), managedBy, location, resourceGroup\r\n)\r\non vmName, osDisk\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName, vmSize, osType, id1, diskname, sku, caching,disk_tier, disk_size_GB,diskbandwidthMBps, disk_iops, createOption, location, resourceGroup , ppg , avSet",
- "size": 2,
- "showAnalytics": true,
- "title": "Compute + OS Disk",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "customColumnWidthSetting": "18ch"
- },
- "tooltipFormat": {
- "tooltip": "Virtual Name must be =< 13 Characters"
- }
- },
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "vmSize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "id1",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Metrics",
- "linkIsContextBlade": true,
- "showIcon": true,
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "diskname",
- "formatter": 5
- },
- {
- "columnMatch": "sku",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "contains",
- "thresholdValue": "Standard",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- },
- {
- "columnMatch": "disk_tier",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
- },
- {
- "columnMatch": "disk_size_GB",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "diskbandwidthMBps",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "location",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "resourceGroup",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "25ch"
- }
- },
- {
- "columnMatch": "ppg",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "avSet",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "os_type",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
- },
- {
- "columnMatch": "datadisk_lun",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "14ch"
- }
- },
- {
- "columnMatch": "datadisk_wa",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "id2",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "sku_name",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- },
- {
- "columnMatch": "powerstate",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "vmsize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "vmgen",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "V2",
- "representation": "success",
- "text": "V2"
- },
- {
- "operator": "!=",
- "thresholdValue": "V2",
- "representation": "1",
- "text": "Consider a review."
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- },
- {
- "columnMatch": "avZone",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "tags",
- "formatter": 5
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "id1",
- "label": "Disk Name"
- },
- {
- "columnId": "disk_tier",
- "label": "Tier"
- },
- {
- "columnId": "disk_size_GB",
- "label": "Disk Size"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "ppg",
- "label": "PPG"
- }
- ]
+ "itemKey": "ResourceType",
+ "sortOrder": 2
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-014"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Azure Firewall or vWAN",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "// LB probes\r\nresources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project subscriptionId, lbName=name, lbSku=sku.name, location, lbProbes=properties.probes, resourceGroup\r\n| mv-expand lbProbes\r\n| project subscriptionId, lbName, probeName=tostring(lbProbes.name), probePort=toint(lbProbes.properties.port), \r\n probeThreshold=lbProbes.properties.probeThreshold,\r\n lbSku, location, probeProtocol=lbProbes.properties.protocol, resourceGroup\r\n| order by lbName asc, probePort asc",
+ "size": 0,
+ "title": "{LBprobeThreshold} Load Balancer setting ProbThreshold is not set to 2",
+ "noDataMessage": "No Load balancer with incorrect ProbeThreshold found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-015"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Load Balancer",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.proximityPlacementGroup != \"\"\r\n| project id, resourceGroup,ProximityPlacementGroup = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), subscriptionId",
+ "size": 0,
+ "title": "{VMwithPPG} VM's are part of PPG",
+ "noDataMessage": "No VM found to be part of PPG in the current selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
}
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Virtual Machine"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeos"
- }
- ],
- "showPin": true,
- "name": "query - Compute+OS Disk",
- "styleSettings": {
- "showBorder": true
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "ProximityPlacementGroup",
+ "label": "ProximityPlacementGroup"
+ },
+ {
+ "columnId": "subscriptionId",
+ "label": "Subscription"
}
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, \r\n vmSize= tostring(properties.hardwareProfile.vmSize), os_type = tostring(properties.storageProfile.osDisk.osType),\r\n datadisk_lun = toint(datadisks.lun), datadisk_name = tostring(datadisks.name), datadisksize = tostring(datadisks.diskSizeGB), \r\n datadisk_cache = tostring(datadisks.caching), datadisk_wa = tostring(datadisks.writeAcceleratorEnabled)\r\n//| summarize by vmName, location, powerstate, avZone, avSet, ppg, vmSize, osname, vmgen, datadisklun, datadiskname, datadisksize, datadiskcache, datadiskwa\r\n| join kind = leftouter ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| parse managedBy with * \"/virtualMachines/\" vmName\r\n| parse id with * \"/disks/\" datadisk_name \r\n| project id1=id, sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), datadisk_name, vmName, managedBy, location, resourceGroup\r\n)\r\non vmName, datadisk_name\r\n| project-away datadisk_name, datadisk_name1, vmName1, managedBy\r\n| sort by vmName asc , datadisk_lun asc\r\n//| distinct datadisk_name",
- "size": 2,
- "showAnalytics": true,
- "title": "Compute + Data disks",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "customColumnWidthSetting": "25ch"
- },
- "tooltipFormat": {
- "tooltip": "VM name is recommended equal or less than 13 characters."
- }
- },
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "vmSize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "os_type",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "datadisk_lun",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- },
- {
- "columnMatch": "datadisksize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "datadisk_cache",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "datadisk_wa",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- },
- "tooltipFormat": {
- "tooltip": "Write Accelerator"
- }
- },
- {
- "columnMatch": "sku_name",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "17ch"
- }
- },
- {
- "columnMatch": "disk_tier",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "disk_size_GB",
- "formatter": 5
- },
- {
- "columnMatch": "disk_iops",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "location",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "avSet",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "11ch"
- }
- },
- {
- "columnMatch": "ppg",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "9ch"
- }
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "sortBy": [
- {
- "itemKey": "$gen_number_datadisk_wa_7",
- "sortOrder": 1
- }
- ],
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "vmName",
- "label": "VM Name"
- },
- {
- "columnId": "vmSize",
- "label": "VM SKU"
- },
- {
- "columnId": "os_type",
- "label": "OS Type"
- },
- {
- "columnId": "datadisk_lun",
- "label": "Disk LUN"
- },
- {
- "columnId": "datadisksize",
- "label": "Disk Size"
- },
- {
- "columnId": "datadisk_cache",
- "label": "Disk Cache"
- },
- {
- "columnId": "datadisk_wa",
- "label": "WA"
- },
- {
- "columnId": "id1",
- "label": "Disk Name"
- },
- {
- "columnId": "sku_name",
- "label": "Disk SKU"
- },
- {
- "columnId": "disk_tier",
- "label": "Disk Tier"
- },
- {
- "columnId": "disk_size_GB",
- "label": "Disk Size"
- },
- {
- "columnId": "diskbandwidthMBps",
- "label": "Disk BW"
- },
- {
- "columnId": "disk_iops",
- "label": "Disk IOPS"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- }
- ]
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-016"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - VM with PPG",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout events\r\n//| where Category == \"Unplanned\"\r\n//| where Context == \"Platform Initiated\"\r\n| where Reason contains \"Reboot\" or Reason contains \"crashed\"\r\n// Group by VM Id and aggregate multiple events for each VM\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Context, Category, summary\r\n",
+ "size": 0,
+ "title": "{Customerreboot} VMs reboots by user",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "28ch"
},
- "sortBy": [
- {
- "itemKey": "$gen_number_datadisk_wa_7",
- "sortOrder": 1
+ "numberFormat": {
+ "unit": 0,
+ "options": {
+ "style": "decimal"
}
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
},
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computedata"
+ "dateFormat": {
+ "formatName": "shortDateTimePattern"
}
- ],
- "showPin": true,
- "name": "query - Compute+Data",
- "styleSettings": {
- "showBorder": true
+ },
+ {
+ "columnMatch": "ImpactType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "Reason",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "40ch"
+ }
+ },
+ {
+ "columnMatch": "Context",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "24ch"
+ }
+ },
+ {
+ "columnMatch": "Category",
+ "formatter": 5
}
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.hanaonazure/hanainstances\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| mv-expand hanasid=properties.storageProfile.hanaSids\r\n| mv-expand ntwork=properties.networkProfile.networkInterfaces\r\n| project id, name, ipaddress=tostring(ntwork.ipAddress), SID=tostring(hanasid.sid), HLI=tostring(properties.hardwareProfile.hanaInstanceSize), memory=tostring(hanasid.memoryAllocation),HLR_Revision=tostring(properties.hwRevision),OS= tostring(properties.osProfile.osType), state=tostring(properties.powerState),resourceGroup, location",
- "size": 2,
- "title": "HANA Large Instance Overview",
- "noDataMessage": "No HLI nodes found!",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "table",
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "name",
- "formatter": 5
- },
- {
- "columnMatch": "ipaddress",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "HLI",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- },
- {
- "columnMatch": "memory",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- },
- {
- "columnMatch": "HLR_Revision",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "state",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
- }
- ],
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Name"
- },
- {
- "columnId": "ipaddress",
- "label": "IP Address"
- },
- {
- "columnId": "HLI",
- "label": "HLI SKU"
- },
- {
- "columnId": "memory",
- "label": "Memory"
- },
- {
- "columnId": "HLR_Revision",
- "label": "HLI Revision"
- },
- {
- "columnId": "OS",
- "label": "OS Type"
- },
- {
- "columnId": "state",
- "label": "Power State"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- }
- ]
+ ],
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-017"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Customer initiated reboot",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = format_datetime(todatetime(properties.changeAttributes.timestamp), \"yyyy-MM-dd HH:mm:ss\"), // Format Timestamp\r\n summary = tostring(properties['changes']['properties.summary']['newValue']),\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where Context == \"Platform Initiated\"\r\n| where Category != \"Planned\"\r\n| where Reason !contains \"Live Migration Succeeded\"\r\n| where summary !contains \"Accelerated Networking\"\r\n| where ImpactType == \"Degraded\"\r\n| extend RedeployBy = extract(@\"(\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}\\s(?:AM|PM))\", 1, summary)\r\n| extend RedeployBy = format_datetime(todatetime(RedeployBy), \"yyyy-MM-dd HH:mm:ss\") // Standardize RedeployBy format\r\n| project Id, VMName = tostring(split(Id, \"/\", 8)[0]), Timestamp, ImpactType, Reason, RedeployBy, summary, Context, Category\r\n| order by Timestamp desc\r\n",
+ "size": 0,
+ "title": "{Degraded} VMs degraded",
+ "noDataMessage": "No VM in degraded status in selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
- },
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
+ {
+ "columnMatch": "VMName",
+ "formatter": 5,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "26ch"
},
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computehli"
+ "dateFormat": {
+ "showUtcTime": true,
+ "formatName": "shortDateTimePattern"
}
- ],
- "name": "query - HLI Overview",
- "styleSettings": {
- "showBorder": true
+ },
+ {
+ "columnMatch": "ImpactType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "RedeployBy",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "id",
+ "formatter": 5
}
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "compute"
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Id",
+ "label": "VM Name"
+ }
+ ]
+ }
},
- "name": "group - Compute "
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-018"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - VM Degraded",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 1,
+ "type": 3,
"content": {
- "json": "### Storage Group"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/capacityreservationgroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend \r\n vm_info = parse_json(properties.virtualMachinesAssociated),\r\n reservation_info = parse_json(properties.capacityReservations)\r\n| project \r\n id, \r\n AssociatedVirtualMachines = trim_end(\", \", strcat_array(\r\n pack_array(\r\n iff(isnotempty(extract(@\"\\/virtualMachines\\/([^\\\"\"]+)\", 1, tostring(vm_info[0].id))), extract(@\"\\/virtualMachines\\/([^\\\"\"]+)\", 1, tostring(vm_info[0].id)), \"\"),\r\n iff(isnotempty(extract(@\"\\/virtualMachines\\/([^\\\"\"]+)\", 1, tostring(vm_info[1].id))), extract(@\"\\/virtualMachines\\/([^\\\"\"]+)\", 1, tostring(vm_info[1].id)), \"\"),\r\n iff(isnotempty(extract(@\"\\/virtualMachines\\/([^\\\"\"]+)\", 1, tostring(vm_info[2].id))), extract(@\"\\/virtualMachines\\/([^\\\"\"]+)\", 1, tostring(vm_info[2].id)), \"\")\r\n ), \r\n \", \"\r\n )),\r\n ReservationNames = trim_end(\", \", strcat_array(\r\n pack_array(\r\n iff(isnotempty(extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[0].id))), extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[0].id)), \"\"),\r\n iff(isnotempty(extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[1].id))), extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[1].id)), \"\"),\r\n iff(isnotempty(extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[2].id))), extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[2].id)), \"\"),\r\n iff(isnotempty(extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[3].id))), extract(@\"\\/capacityReservations\\/([^\\\"\"]+)\", 1, tostring(reservation_info[3].id)), \"\")\r\n ), \r\n \", \"\r\n ))\r\n, \r\n location, \r\n zone = tostring(parse_json(zones)[0])",
+ "size": 0,
+ "title": "Capacity Reservation Groups",
+ "noDataMessage": "No Capacity Reservation Groups found in selected resources",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkColumn": "id",
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "CRG Name"
+ },
+ {
+ "columnId": "location",
+ "label": "Region"
+ },
+ {
+ "columnId": "zone",
+ "label": "Zone"
+ }
+ ]
+ }
},
- "name": "text - Storage Group"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-019"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - AZR-021",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 12,
+ "type": 3,
"content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "title": "Storage Overview",
- "items": [
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "7e14efaf-16ca-4e89-90e7-cddec83bf803",
- "cellValue": "storage",
- "linkTarget": "parameter",
- "linkLabel": "Overview",
- "subTarget": "overview",
- "preText": "Overview",
- "style": "link"
- },
- {
- "id": "e2dc48a3-0f7e-4091-a87c-1cb2da6c5c00",
- "cellValue": "storage",
- "linkTarget": "parameter",
- "linkLabel": "Key Vaults",
- "subTarget": "keyvault",
- "preText": "Key Vaults",
- "style": "link"
- },
- {
- "id": "02d9a44f-6d08-4dca-b5c6-8986483f147d",
- "cellValue": "storage",
- "linkTarget": "parameter",
- "linkLabel": "Storage Accounts",
- "subTarget": "storageaccount",
- "style": "link"
- },
- {
- "id": "330f1a12-489c-4ad4-b745-33c62d831a32",
- "cellValue": "storage",
- "linkTarget": "parameter",
- "linkLabel": "Recovery Service Vault",
- "subTarget": "rsv",
- "style": "link"
- }
- ]
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.netapp/netappaccounts/capacitypools\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, ANFAccount_Name=tostring(split(name,\"/\",0)[0]), ANFPool_Name=tostring(split(name,\"/\",1)[0]), serviceLevel=tostring(properties.serviceLevel) , usageThreshold = tostring(properties.size), qosType= tostring(properties.qosType), coolAccess= tostring(properties.coolAccess) ,location, resourceGroup\r\n| join kind=leftouter (\r\nresources\r\n| where type == \"microsoft.netapp/netappaccounts/capacitypools/volumes\"\r\n| project ANFAccount_Name=tostring(split(name,\"/\",0)[0]), ANFPool_Name=tostring(split(name,\"/\",1)[0]) ,volume_name = tostring(split(name,\"/\",2)[0]))\r\non ANFPool_Name\r\n| where isempty( volume_name)\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, ANFAccount_Name, ANFPool_Name, location, resourceGroup",
+ "size": 0,
+ "title": "Orphaned ANF Pool",
+ "noDataMessage": "No Orphaned ANF Pool found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "25ch"
+ }
},
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
+ {
+ "columnMatch": "ANFAccount_Name",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "30ch"
+ }
},
- "name": "links - Storage"
- },
- {
- "type": 1,
- "content": {
- "json": "Azure Premium Files [AFS] NFS Exception: AFS-NFS file shares don't support an encryption mechanism, you must disable require secure transfer for the storage account.",
- "style": "info"
+ {
+ "columnMatch": "ANFPool_Name",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "30ch"
+ }
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
+ {
+ "columnMatch": "volume_name",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
}
- ],
- "name": "text - AFS Exception"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "nav",
- "links": [
- {
- "id": "9877b4a6-6248-4f25-924c-c0def997a621",
- "cellValue": "storageaccount",
- "linkTarget": "parameter",
- "linkLabel": "Standard Storage Accounts",
- "subTarget": "stndstorage",
- "preText": "",
- "style": "link"
- },
- {
- "id": "5866d0e1-2897-4ac6-8c7d-852aaf1af4bc",
- "cellValue": "storageaccount",
- "linkTarget": "parameter",
- "linkLabel": "Standard Storage Accounts with PvtEndPnts",
- "subTarget": "stndstorageendpnt",
- "style": "link"
- },
- {
- "id": "b08e3a4c-4868-4aa7-a6c5-d37d7b81e9bc",
- "cellValue": "storageaccount",
- "linkTarget": "parameter",
- "linkLabel": "Classic Storage Accounts",
- "subTarget": "classicstorage",
- "preText": "",
- "style": "link"
- },
- {
- "id": "274713de-f745-4bab-85bf-aae85ed1dda4",
- "cellValue": "storageaccount",
- "linkTarget": "parameter",
- "linkLabel": "Storae Accounts with CMK",
- "subTarget": "storagecmk",
- "style": "link"
- }
- ]
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
+ {
+ "columnMatch": "serviceLevel",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
}
- ],
- "name": "links - Storage Options"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.storagesync/storagesyncservices'\r\n\tor type =~ 'microsoft.recoveryservices/vaults'\r\n\tor type =~ 'microsoft.storage/storageaccounts'\r\n\tor type =~ 'microsoft.keyvault/vaults'\r\n| extend type = case(\r\n\ttype =~ 'microsoft.storagesync/storagesyncservices', 'Azure File Sync',\r\n\ttype =~ 'microsoft.recoveryservices/vaults', 'Azure Backup',\r\n\ttype =~ 'microsoft.storage/storageaccounts', 'Storage Accounts',\r\n\ttype =~ 'microsoft.keyvault/vaults', 'Key Vaults',\r\n\tstrcat(\"Not Translated: \", type))\r\n| where type !has \"Not Translated\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type",
- "size": 1,
- "title": "Storage Overview",
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "tiles",
- "gridSettings": {
- "filter": true
- },
- "tileSettings": {
- "titleContent": {
- "columnMatch": "type",
- "formatter": 1
- },
- "leftContent": {
- "columnMatch": "count_",
- "formatter": 12,
- "formatOptions": {
- "palette": "auto"
- },
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
- },
- "showBorder": true
- },
- "graphSettings": {
- "type": 0,
- "topContent": {
- "columnMatch": "type",
- "formatter": 1
- },
- "centerContent": {
- "columnMatch": "count_",
- "formatter": 1,
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
- }
+ },
+ {
+ "columnMatch": "usageThreshold",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "overview"
+ {
+ "columnMatch": "qosType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
}
- ],
- "name": "query - Storage Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.keyvault/vaults\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, family= tostring(properties.sku.family) ,enableSoftDelete = tostring(properties.enableSoftDelete), softDeleteRetentionInDays=tostring(properties.softDeleteRetentionInDays)",
- "size": 0,
- "title": "Key Vault",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true
- }
- },
- {
- "columnMatch": "name",
- "formatter": 5
- },
- {
- "columnMatch": "enableSoftDelete",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "Resolved",
- "text": "Enabled"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "Sev2",
- "text": "Not Enabled"
- }
- ]
- }
- },
- {
- "columnMatch": "softDeleteRetentionInDays",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": ">=",
- "thresholdValue": "7",
- "representation": "1",
- "text": "{0}{1}"
- },
- {
- "operator": "is Empty",
- "representation": "Sev2",
- "text": "{0}Not Applicable"
- },
- {
- "operator": "<",
- "thresholdValue": "7",
- "representation": "Sev2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "1",
- "text": "{0}{1}"
- }
- ]
- }
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Key Vault Name"
- },
- {
- "columnId": "family",
- "label": "Family"
- },
- {
- "columnId": "enableSoftDelete",
- "label": "Soft Delete"
- },
- {
- "columnId": "softDeleteRetentionInDays",
- "label": "Soft Delete Retention in Days"
- }
- ]
+ },
+ {
+ "columnMatch": "coolAccess",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "keyvault"
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
}
- ],
- "name": "query - Key Vault",
- "styleSettings": {
- "showBorder": true
}
- },
- {
- "type": 9,
- "content": {
- "version": "KqlParameterItem/1.0",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "parameters": [
- {
- "id": "5c66155e-78f1-4b2d-ab20-a63989dd9ea5",
- "version": "KqlParameterItem/1.0",
- "name": "Classic_Storage",
- "label": "Classic Storage",
- "type": 1,
- "query": "resources\r\n| where type == \"microsoft.classicstorage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize Total = count()\r\n| project Message = strcat('Classic Storage Accounts # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
- },
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
- {
- "id": "a35d9c1a-b476-4208-a27b-07a8a3bf7b8f",
- "version": "KqlParameterItem/1.0",
- "name": "Standard_Storage",
- "type": 1,
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize Total = count()\r\n| project Message = strcat('Standard Storage Accounts # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
- },
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
- {
- "id": "f2261fb2-1f04-42cc-a0a8-059e521ab235",
- "version": "KqlParameterItem/1.0",
- "name": "Storage_Account_PvtEndPnt",
- "label": "Storage_Account_PvtEndpoint",
- "type": 1,
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| mv-expand privatepoint=properties.privateEndpointConnections\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize Total = count()\r\n| project Message = strcat('Standard Storage Accounts with Private Endpoint# ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "timeContext": {
- "durationMs": 86400000
- },
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- }
- ],
- "style": "pills",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "ANF Account Name"
},
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
+ {
+ "columnId": "ANFAccount_Name",
+ "label": "ANF Account Name"
},
- "name": "parameters - Storage Account Count Messages"
- },
- {
- "type": 1,
- "content": {
- "json": "{Classic_Storage}"
+ {
+ "columnId": "ANFPool_Name",
+ "label": "ANF Pool Name"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-020"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Orphaned ANF Pool",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer)\r\n| where not (imagesku contains \"gen2\" or imagesku contains \"g2\" or imagesku contains \"gensecond\" or imagesku contains \"v2\" or imagesku contains \"V2\" or isempty(imagesku))\r\n| where os_type != \"Windows\"\r\n",
+ "size": 0,
+ "title": "VM with Gen1 or Custom Image sku",
+ "noDataMessage": "All VM seems to be using Gen2 image",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
- },
- {
- "parameterName": "storageaccount",
- "comparison": "isEqualTo",
- "value": "classicstorage"
+ {
+ "columnMatch": "os_type",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "13ch"
}
- ],
- "name": "text - Classic Storage Count Message"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.classicstorage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, SKU=tostring(properties.accountType), status= tostring(properties.provisioningState), Create_Time=tostring(properties.creationTime), Primary_Region=tostring(properties.geoPrimaryRegion), Secondary_Available=tostring(properties.statusOfSecondaryRegion), Secondary_Region=tostring(properties.geoSecondaryRegion)",
- "size": 2,
- "title": "Classic Storage Accounts",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
+ },
+ {
+ "columnMatch": "publisher",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "version",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "imagesku",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
{
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "customColumnWidthSetting": "25ch"
- }
+ "operator": "is Empty",
+ "representation": "1",
+ "text": "{Info not available}{1}"
},
{
- "columnMatch": "name",
- "formatter": 5
- },
- {
- "columnMatch": "status",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "Create_Time",
- "formatter": 6,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- },
- "dateFormat": {
- "formatName": "shortDatePattern"
- }
- },
- {
- "columnMatch": "Primary_Region",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "Secondary_Region",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "25ch"
- }
- },
- {
- "columnMatch": "Type",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "Decondary_Region",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "25ch"
- }
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
}
],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Storage Name"
- }
- ]
+ "customColumnWidthSetting": "25ch"
+ },
+ "numberFormat": {
+ "unit": 0,
+ "options": {
+ "style": "decimal"
+ }
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
- },
- {
- "parameterName": "storageaccount",
- "comparison": "isEqualTo",
- "value": "classicstorage"
+ {
+ "columnMatch": "offer",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "23ch"
}
- ],
- "name": "query - Classic Storage Account",
- "styleSettings": {
- "showBorder": true
}
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AZR-021"
+ },
+ {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Gen1 or Csutom Image sku",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend region = tostring(location), \r\n zone = tostring(zones) \r\n| extend regionZone = strcat(region, \"/\", iff(zone == \"\", \"No Zone\", zone))\r\n| summarize countVMs = count() by regionZone\r\n| project regionZone, countVMs\r\n| order by countVMs desc",
+ "size": 3,
+ "title": "VMs deployment per Azure Region & Zones",
+ "noDataMessage": "No VM Information found in selection",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "chartSettings": {
+ "createOtherGroup": null,
+ "seriesLabelSettings": [
+ {
+ "seriesName": "Total VMs",
+ "label": "Total"
+ }
+ ]
+ }
+ },
+ "customWidth": "33",
+ "conditionalVisibility": {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - VM Deployment across Azure Regions"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name = tostring(sku.name),tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 3,
+ "title": "Managed Disk Overview",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "conditionalVisibility": {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - Managed Disk Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend AvailabilitySet = iff(isnotempty(properties.availabilitySet.id), \"In Availability Set\", \"None\")\r\n| extend AvailabilityZone = iff(isnotempty(properties.zones), \"In Availability Zone\", \"None\")\r\n| extend VMSSFlex = iff(isnotempty(properties.extended.instanceView.vmssFlex), \"In VMSS Flex\", \"None\")\r\n| summarize \r\n TotalVMs = count(), \r\n VMsInAvailabilitySet = countif(AvailabilitySet == \"In Availability Set\"), \r\n VMsInZones = countif(AvailabilityZone == \"In Availability Zone\"), \r\n VMsInVMSSFlex = countif(VMSSFlex == \"In VMSS Flex\")",
+ "size": 0,
+ "aggregation": 2,
+ "title": " VM Deployment overview",
+ "exportFieldName": "series",
+ "exportParameterName": "p_VMsInAvailabilitySet",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "unstackedbar",
+ "sortBy": [],
+ "tileSettings": {
+ "showBorder": false
+ },
+ "graphSettings": {
+ "type": 0
+ },
+ "chartSettings": {
+ "xAxis": "TotalVMs",
+ "showLegend": true,
+ "xSettings": {
+ "numberFormatSettings": {
+ "unit": 0,
+ "options": {
+ "style": "decimal",
+ "useGrouping": true
+ }
+ },
+ "label": ""
},
+ "ySettings": {
+ "label": "Number of Virtual Machines"
+ }
+ }
+ },
+ "customWidth": "33",
+ "conditionalVisibility": {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - VM Deployment overview"
+ },
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "parameters": [
+ {
+ "id": "6a2ec07b-6fc7-414e-9271-831f8ccff744",
+ "version": "KqlParameterItem/1.0",
+ "name": "VirtualMachine_Stats",
+ "type": 2,
+ "isRequired": true,
+ "isGlobal": true,
+ "query": "{\"version\":\"1.0.0\",\"content\":\"[\\\"Hide\\\", \\\"Show\\\"]\",\"transformers\":null}",
+ "typeSettings": {
+ "additionalResourceOptions": [],
+ "showDefault": false
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 8,
+ "value": "Hide"
+ }
+ ],
+ "style": "pills",
+ "queryType": 8
+ },
+ "name": "parameters - Show VM Stats"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "title": "Virtual Machine Stats",
+ "expandable": true,
+ "expanded": true,
+ "items": [
{
"type": 1,
"content": {
- "json": "{Standard_Storage}"
+ "json": "## Virtual Machine Stats overview "
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
- },
- {
- "parameterName": "storageaccount",
- "comparison": "isEqualTo",
- "value": "stndstorage"
- }
- ],
- "name": "text - Standard Storage Count Message"
+ "name": "text - VM Stats"
},
{
- "type": 3,
+ "type": 9,
"content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, sku=sku.name, Tier=sku.tier, status= tostring(properties.provisioningState), Create_Time=tostring(properties.creationTime), supportsHttpsTrafficOnly=tostring(properties.supportsHttpsTrafficOnly), allowBlobPublicAccess=tostring(properties.allowBlobPublicAccess),minimumTlsVersion=tostring(properties.minimumTlsVersion), Primary_Region=tostring(properties.primaryLocation), statusOfPrimary=tostring(properties.statusOfPrimary), accessTier=tostring(properties.accessTier) ,Secondary_Available=tostring(properties.secondaryLocation), Secondary_Status=tostring(properties.statusOfSecondary)",
- "size": 2,
- "title": "Standard Storage Account",
- "noDataMessage": "No Standard Storage Account found in the selected Subscription.",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
+ "version": "KqlParameterItem/1.0",
"crossComponentResources": [
"{Subscriptions}"
],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true,
- "workbookContext": {
- "componentIdSource": "column",
- "componentId": "name",
- "resourceIdsSource": "workbook",
- "templateIdSource": "column",
- "templateId": "name",
- "typeSource": "static",
- "type": "Community-Workbooks/Storage-Performance/Blob Storage Metrics",
- "gallerySource": "static",
- "gallery": "workbook",
- "locationSource": "default"
- },
- "bladeOpenContext": {
- "bladeParameters": []
- },
- "customColumnWidthSetting": "30ch"
- }
+ "parameters": [
+ {
+ "id": "81f5a1cb-da74-47e1-9e45-fdcf559f0a5c",
+ "version": "KqlParameterItem/1.0",
+ "name": "VirtualMachines",
+ "type": 5,
+ "isRequired": true,
+ "isGlobal": true,
+ "multiSelect": true,
+ "quote": "'",
+ "delimiter": ",",
+ "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n\t| order by name asc\r\n\t| extend Rank = row_number()\r\n\t| project value = id, label = id, selected = Rank <= 25",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "typeSettings": {
+ "additionalResourceOptions": [
+ "value::1",
+ "value::all"
+ ],
+ "showDefault": false
},
- {
- "columnMatch": "name",
- "formatter": 5
+ "timeContext": {
+ "durationMs": 86400000
},
- {
- "columnMatch": "sku",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "75d2bd97-132d-42e4-8f53-91bee4ee2981",
+ "version": "KqlParameterItem/1.0",
+ "name": "Messages",
+ "type": 1,
+ "query": "where type == 'microsoft.compute/virtualmachines' \r\n| summarize Selected = countif(id in ({VirtualMachines:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "ca2e2a51-22dd-4e7c-a803-8b6bc45e4425",
+ "version": "KqlParameterItem/1.0",
+ "name": "TimeRange",
+ "type": 4,
+ "isRequired": true,
+ "typeSettings": {
+ "selectableValues": [
+ {
+ "durationMs": 300000
+ },
+ {
+ "durationMs": 900000
+ },
+ {
+ "durationMs": 1800000
+ },
+ {
+ "durationMs": 3600000
+ },
+ {
+ "durationMs": 14400000
+ },
+ {
+ "durationMs": 43200000
+ },
+ {
+ "durationMs": 86400000
+ },
+ {
+ "durationMs": 172800000
+ },
+ {
+ "durationMs": 259200000
+ },
+ {
+ "durationMs": 604800000
+ },
+ {
+ "durationMs": 1209600000
+ },
+ {
+ "durationMs": 2419200000
+ },
+ {
+ "durationMs": 2592000000
+ },
+ {
+ "durationMs": 5184000000
+ },
+ {
+ "durationMs": 7776000000
+ }
+ ],
+ "allowCustom": true
},
+ "value": {
+ "durationMs": 1800000
+ }
+ }
+ ],
+ "style": "pills",
+ "doNotRunWhenHidden": true,
+ "queryType": 0,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ "name": "parameters - VM Stats Overview"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbookc7762054-8cf8-4b10-9fc2-12fa013a2686",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4
+ }
+ ],
+ "title": "VMs with top %CPU",
+ "gridSettings": {
+ "formatters": [
{
- "columnMatch": "Tier",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
+ "columnMatch": "Subscription",
+ "formatter": 5
},
{
- "columnMatch": "status",
- "formatter": 0,
+ "columnMatch": "Name",
+ "formatter": 13,
"formatOptions": {
- "customColumnWidthSetting": "12ch"
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
}
},
{
- "columnMatch": "Create_Time",
- "formatter": 6,
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 8,
"formatOptions": {
- "customColumnWidthSetting": "16ch"
+ "min": 0,
+ "max": 100,
+ "palette": "greenRed"
},
- "dateFormat": {
- "showUtcTime": null,
- "formatName": "shortDatePattern"
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
},
{
- "columnMatch": "supportsHttpsTrafficOnly",
- "formatter": 18,
+ "columnMatch": "Timeline",
+ "formatter": 9,
"formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "1",
- "text": "{0}{1}"
- },
- {
- "operator": "==",
- "thresholdValue": "false",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "15ch"
+ "palette": "redGreen"
}
},
{
- "columnMatch": "allowBlobPublicAccess",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "==",
- "thresholdValue": "false",
- "representation": "Resolved",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "15ch"
- }
+ "columnMatch": "Metric",
+ "formatter": 5
},
{
- "columnMatch": "minimumTlsVersion",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "TLS1_2",
- "representation": "Resolved",
- "text": "{0}{1}"
- },
- {
- "operator": "!=",
- "thresholdValue": "TLS1_2",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "15ch"
- }
+ "columnMatch": "Aggregation",
+ "formatter": 5
},
{
- "columnMatch": "Primary_Region",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
+ "columnMatch": "Segment Field",
+ "formatter": 5
},
{
- "columnMatch": "statusOfPrimary",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
+ "columnMatch": "Segment",
+ "formatter": 5
},
{
- "columnMatch": "accessTier",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "14ch"
- }
- },
- {
- "columnMatch": "id1",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": null,
- "showIcon": true
+ "columnMatch": "Value",
+ "formatter": 5,
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
}
],
@@ -3425,671 +2926,5004 @@
"filter": true,
"labelSettings": [
{
- "columnId": "id",
- "label": "Name"
- },
- {
- "columnId": "sku",
- "label": "SKU"
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnId": "status",
- "label": "Status"
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
+ "label": "Percentage CPU (Average)"
},
{
- "columnId": "Create_Time",
- "label": "Create Time"
- },
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "label": "Percentage CPU Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - VMs with top %CPU",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbooka40aa7a7-8798-408b-8a3b-844d4210a4ed",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VmAvailabilityMetric",
+ "aggregation": 4
+ }
+ ],
+ "title": "VMs Availability trend",
+ "gridSettings": {
+ "formatters": [
{
- "columnId": "supportsHttpsTrafficOnly",
- "label": "HTTPS Only?"
+ "columnMatch": "Subscription",
+ "formatter": 5
},
{
- "columnId": "allowBlobPublicAccess",
- "label": "Public Access?"
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
+ }
},
{
- "columnId": "minimumTlsVersion",
- "label": "Min. TLS Version"
+ "columnMatch": "microsoft.compute/virtualmachines--VmAvailabilityMetric",
+ "formatter": 5,
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
},
{
- "columnId": "Primary_Region",
- "label": "Primary Region"
- },
+ "columnMatch": "microsoft.compute/virtualmachines--VmAvailabilityMetric Timeline",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "redGreen"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
{
- "columnId": "statusOfPrimary",
- "label": "Primary Status"
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnId": "accessTier",
- "label": "Access Tier"
+ "columnId": "microsoft.compute/virtualmachines--VmAvailabilityMetric",
+ "label": "VM Availability Metric (Preview) (Average)"
},
{
- "columnId": "Secondary_Available",
- "label": "Secondary Region"
+ "columnId": "microsoft.compute/virtualmachines--VmAvailabilityMetric Timeline",
+ "label": "VM Availability Metric (Preview) Timeline"
}
]
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
- },
- {
- "parameterName": "storageaccount",
- "comparison": "isEqualTo",
- "value": "stndstorage"
- }
- ],
- "name": "query - Standard Storage Account",
+ "customWidth": "33",
+ "name": "metric - 4",
"styleSettings": {
"showBorder": true
}
},
{
- "type": 1,
+ "type": 10,
"content": {
- "json": "{Storage_Account_PvtEndPnt}"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
+ "chartId": "workbook3d07a489-66f5-49a9-acdf-1aca09da15fb",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContext": {
+ "durationMs": 3600000
},
- {
- "parameterName": "storageaccount",
- "comparison": "isEqualTo",
- "value": "stndstorageendpnt"
- }
- ],
- "name": "text - Standard Storage with Private Endpoint Count Message"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| mv-expand privatepoint=properties.privateEndpointConnections\r\n| project id, name, sku=sku.name, Tier=sku.tier, status= tostring(properties.provisioningState), Create_Time=tostring(properties.creationTime), supportsHttpsTrafficOnly=tostring(properties.supportsHttpsTrafficOnly), allowBlobPublicAccess=tostring(properties.allowBlobPublicAccess),minimumTlsVersion=tostring(properties.minimumTlsVersion), Primary_Region=tostring(properties.primaryLocation), statusOfPrimary=tostring(properties.statusOfPrimary), accessTier=tostring(properties.accessTier) ,Secondary_Available=tostring(properties.secondaryLocation), Secondary_Status=tostring(properties.statusOfSecondary), PrivateEndPoint=privatepoint.name",
- "size": 2,
- "title": "Standard Storage Account with PvtEndPoint",
- "noDataMessage": "No Standard Storage Account with PvtEndPoint found in the selected Subscription.",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--OS Disk Bandwidth Consumed Percentage",
+ "aggregation": 4
+ }
],
+ "title": "VMs with OS Disk BW Consumption",
+ "resourceLimit": 250,
"gridSettings": {
"formatters": [
{
- "columnMatch": "id",
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
"formatter": 13,
"formatOptions": {
"linkTarget": "Resource",
- "linkIsContextBlade": true,
"showIcon": true,
- "workbookContext": {
- "componentIdSource": "column",
- "componentId": "name",
- "resourceIdsSource": "workbook",
- "templateIdSource": "column",
- "templateId": "name",
- "typeSource": "static",
- "type": "Community-Workbooks/Storage-Performance/Blob Storage Metrics",
- "gallerySource": "static",
- "gallery": "workbook",
- "locationSource": "default"
- },
- "bladeOpenContext": {
- "bladeParameters": []
- },
- "customColumnWidthSetting": "30ch"
+ "customColumnWidthSetting": "20ch"
}
},
{
- "columnMatch": "name",
- "formatter": 5
- },
- {
- "columnMatch": "sku",
- "formatter": 0,
+ "columnMatch": "microsoft.compute/virtualmachines--OS Disk Bandwidth Consumed Percentage",
+ "formatter": 8,
"formatOptions": {
- "customColumnWidthSetting": "15ch"
+ "min": 0,
+ "max": 100,
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
},
{
- "columnMatch": "Tier",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
- },
+ "columnMatch": "microsoft.compute/virtualmachines--OS Disk Bandwidth Consumed Percentage Timeline",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
{
- "columnMatch": "status",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnMatch": "Create_Time",
- "formatter": 6,
- "formatOptions": {
- "customColumnWidthSetting": "16ch"
- },
- "dateFormat": {
- "showUtcTime": null,
- "formatName": "shortDatePattern"
- }
+ "columnId": "microsoft.compute/virtualmachines--OS Disk Bandwidth Consumed Percentage",
+ "label": "OS Disk Bandwidth Consumed Percentage (Average)"
},
{
- "columnMatch": "supportsHttpsTrafficOnly",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "1",
- "text": "{0}{1}"
- },
- {
- "operator": "==",
- "thresholdValue": "false",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "allowBlobPublicAccess",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "==",
- "thresholdValue": "false",
- "representation": "Resolved",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "minimumTlsVersion",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "TLS1_2",
- "representation": "Resolved",
- "text": "{0}{1}"
- },
- {
- "operator": "!=",
- "thresholdValue": "TLS1_2",
- "representation": "2",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "15ch"
- }
- },
+ "columnId": "microsoft.compute/virtualmachines--OS Disk Bandwidth Consumed Percentage Timeline",
+ "label": "OS Disk Bandwidth Consumed Percentage Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - 3",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbooka6a40ffe-44b2-40e7-8638-08af23cfb7d0",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "aggregation": 4
+ }
+ ],
+ "title": "VMs with free memory",
+ "gridSettings": {
+ "formatters": [
{
- "columnMatch": "Primary_Region",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
+ "columnMatch": "Subscription",
+ "formatter": 5
},
{
- "columnMatch": "statusOfPrimary",
- "formatter": 0,
+ "columnMatch": "Name",
+ "formatter": 13,
"formatOptions": {
- "customColumnWidthSetting": "15ch"
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
}
},
{
- "columnMatch": "accessTier",
- "formatter": 0,
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "formatter": 8,
"formatOptions": {
- "customColumnWidthSetting": "14ch"
+ "palette": "redGreen",
+ "customColumnWidthSetting": "125px"
+ },
+ "numberFormat": {
+ "unit": 36,
+ "options": {
+ "style": "decimal"
+ }
}
},
{
- "columnMatch": "id1",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": null,
- "showIcon": true
- }
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "formatter": 5
}
],
"rowLimit": 10000,
"filter": true,
"labelSettings": [
{
- "columnId": "id",
- "label": "Name"
- },
- {
- "columnId": "sku",
- "label": "SKU"
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnId": "status",
- "label": "Status"
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "label": "Available Memory Bytes (Preview) (Average)"
},
{
- "columnId": "Create_Time",
- "label": "Create Time"
- },
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "label": "Available Memory Bytes (Preview) Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - 2",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook1db212ed-d63e-48ea-9cdf-c5a9055f1ba6",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VM Cached Bandwidth Consumed Percentage",
+ "aggregation": 4
+ }
+ ],
+ "title": "VM Cached BW Consumed Percentage",
+ "gridSettings": {
+ "formatters": [
{
- "columnId": "supportsHttpsTrafficOnly",
- "label": "HTTPS Only?"
+ "columnMatch": "Subscription",
+ "formatter": 5
},
{
- "columnId": "allowBlobPublicAccess",
- "label": "Public Access?"
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
+ }
},
{
- "columnId": "minimumTlsVersion",
- "label": "Min. TLS Version"
+ "columnMatch": "microsoft.compute/virtualmachines--VM Cached Bandwidth Consumed Percentage",
+ "formatter": 8,
+ "formatOptions": {
+ "min": 0,
+ "max": 100,
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
},
{
- "columnId": "Primary_Region",
- "label": "Primary Region"
- },
+ "columnMatch": "microsoft.compute/virtualmachines--VM Cached Bandwidth Consumed Percentage Timeline",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
{
- "columnId": "statusOfPrimary",
- "label": "Primary Status"
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnId": "accessTier",
- "label": "Access Tier"
+ "columnId": "microsoft.compute/virtualmachines--VM Cached Bandwidth Consumed Percentage",
+ "label": "VM Cached Bandwidth Consumed Percentage (Average)"
},
{
- "columnId": "Secondary_Available",
- "label": "Secondary Region"
+ "columnId": "microsoft.compute/virtualmachines--VM Cached Bandwidth Consumed Percentage Timeline",
+ "label": "VM Cached Bandwidth Consumed Percentage Timeline"
}
]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "storageaccount"
},
- {
- "parameterName": "storageaccount",
- "comparison": "isEqualTo",
- "value": "stndstorageendpnt"
- }
- ],
- "name": "query - Standard Storage Account with PvtEndPoint",
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - 5",
"styleSettings": {
"showBorder": true
}
},
{
- "type": 3,
+ "type": 10,
"content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.recoveryservices/vaults\"\r\n| extend redundancy=properties.redundancySettings\r\n| project id, name, location, SKU=sku.name, SkuTier=sku.tier,Redundancy=redundancy.standardTierStorageRedundancy, CRR=redundancy.crossRegionRestore, Status=properties.provisioningState, PublicNetworkAccess=properties.publicNetworkAccess, PvtEndpntforBackup=properties.privateEndpointStateForBackup, PvtEndpntForSiteRecovery=properties.privateEndpointStateForSiteRecovery, Storageversion=properties.backupStorageVersion ",
- "size": 2,
- "title": "Recovery Service Vault",
- "noDataMessage": "No Recovery Service Vault identified",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
+ "chartId": "workbooka4c4e44a-5079-4cc4-9016-fbec52ea47f2",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
],
- "visualization": "table",
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage",
+ "aggregation": 4
+ }
+ ],
+ "title": "VM Cached IOPS Consumed Percentage",
+ "resourceLimit": 250,
"gridSettings": {
"formatters": [
{
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
+ "columnMatch": "Subscription",
+ "formatter": 5
},
{
- "columnMatch": "name",
- "formatter": 5
- },
- {
- "columnMatch": "location",
- "formatter": 0,
+ "columnMatch": "Name",
+ "formatter": 13,
"formatOptions": {
- "customColumnWidthSetting": "10ch"
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
}
},
{
- "columnMatch": "SKU",
- "formatter": 1,
+ "columnMatch": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage",
+ "formatter": 8,
"formatOptions": {
- "customColumnWidthSetting": "8ch"
+ "min": 0,
+ "max": 100,
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
},
{
- "columnMatch": "SkuTier",
- "formatter": 1,
+ "columnMatch": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage Timeline",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage",
+ "label": "VM Cached IOPS Consumed Percentage (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage Timeline",
+ "label": "VM Cached IOPS Consumed Percentage Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - 6",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook02b5fbe8-bfb3-4324-a1e4-73873973c70d",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VM Uncached Bandwidth Consumed Percentage",
+ "aggregation": 4
+ }
+ ],
+ "title": "VM Uncached BW Consumed Percentage",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
"formatOptions": {
- "customColumnWidthSetting": "10ch"
+ "linkTarget": "Resource",
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
}
},
{
- "columnMatch": "Redundancy",
- "formatter": 18,
+ "columnMatch": "microsoft.compute/virtualmachines--VM Uncached Bandwidth Consumed Percentage",
+ "formatter": 8,
"formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "contains",
- "thresholdValue": "GeoRedundant",
- "representation": "Sev3",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "Blank",
- "text": "{0}{1}"
- }
- ]
+ "min": 0,
+ "max": 100,
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
},
{
- "columnMatch": "CRR",
- "formatter": 1
+ "columnMatch": "microsoft.compute/virtualmachines--VM Uncached Bandwidth Consumed Percentage Timeline",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnMatch": "Status",
- "formatter": 1
+ "columnId": "microsoft.compute/virtualmachines--VM Uncached Bandwidth Consumed Percentage",
+ "label": "VM Uncached Bandwidth Consumed Percentage (Average)"
},
{
- "columnMatch": "PublicNetworkAccess",
- "formatter": 1,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
- }
+ "columnId": "microsoft.compute/virtualmachines--VM Uncached Bandwidth Consumed Percentage Timeline",
+ "label": "VM Uncached Bandwidth Consumed Percentage Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - 7",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook2e69ae61-fbf5-4b3a-8325-63486f3b700a",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1800000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage",
+ "aggregation": 4
+ }
+ ],
+ "title": "VM Uncached IOPS Consumed Percentage",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
},
{
- "columnMatch": "PvtEndpntforBackup",
- "formatter": 18,
+ "columnMatch": "Name",
+ "formatter": 13,
"formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "contains",
- "thresholdValue": "enabled",
- "representation": "Sev3",
- "text": "{0}{1}"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "Blank",
- "text": "{0}{1}"
- }
- ],
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
"customColumnWidthSetting": "20ch"
}
},
{
- "columnMatch": "PvtEndpntForSiteRecovery",
- "formatter": 1
+ "columnMatch": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage",
+ "formatter": 8,
+ "formatOptions": {
+ "min": 0,
+ "max": 100,
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
},
{
- "columnMatch": "Storageversion",
- "formatter": 1
+ "columnMatch": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage Timeline",
+ "formatter": 5
}
],
"rowLimit": 10000,
"filter": true,
"labelSettings": [
{
- "columnId": "id",
- "label": "RSV Name"
+ "columnId": "Name",
+ "label": "Virtual Machine"
},
{
- "columnId": "PvtEndpntForSiteRecovery",
- "label": "PvtEndPntforASR"
+ "columnId": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage",
+ "label": "VM Uncached IOPS Consumed Percentage (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage Timeline",
+ "label": "VM Uncached IOPS Consumed Percentage Timeline"
}
]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "storage"
- },
- {
- "parameterName": "storage",
- "comparison": "isEqualTo",
- "value": "rsv"
},
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- }
- ],
- "name": "query - Recovery Service Vault",
+ "sortBy": []
+ },
+ "customWidth": "33",
+ "name": "metric - 8",
"styleSettings": {
"showBorder": true
}
}
- ],
- "exportParameters": true
+ ]
},
+ "customWidth": "100",
"conditionalVisibility": {
- "parameterName": "SelectedTab",
+ "parameterName": "VirtualMachine_Stats",
"comparison": "isEqualTo",
- "value": "storage"
+ "value": "Show"
},
- "name": "group - Storage Overview"
- },
+ "name": "group - Virtual Machine Stats"
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "Summary"
+ },
+ {
+ "parameterName": "Resource_Group",
+ "comparison": "isNotEqualTo"
+ }
+ ],
+ "name": "Summary Overview"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### SAP Extended_Report Overview"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - SAP Extended_Report Overview"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
{
- "type": 1,
+ "type": 11,
"content": {
- "json": "### Network Group"
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "9c811240-eb66-4610-910c-31ff2a59054b",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Overview",
+ "subTarget": "SAPOverview",
+ "style": "link"
+ },
+ {
+ "id": "1761e5b7-35da-4bb7-83ea-691c30916c4f",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Virtual Machine",
+ "subTarget": "compute",
+ "style": "link"
+ },
+ {
+ "id": "8e966843-9fdf-4768-9ecd-fbb47f408dab",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Storage",
+ "subTarget": "storage",
+ "style": "link"
+ },
+ {
+ "id": "c7bc3c19-9ac2-40f4-a4d7-5368fd93dcf2",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Network",
+ "subTarget": "network",
+ "style": "link"
+ },
+ {
+ "id": "54b7e56f-7c8f-49bb-af90-67e6d7c82e0e",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Orphaned Resources",
+ "subTarget": "housekeeping",
+ "style": "link"
+ },
+ {
+ "id": "ff290cf1-862a-438c-8860-146abc24a1d7",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Configuration Checks",
+ "subTarget": "configchecks",
+ "style": "link"
+ },
+ {
+ "id": "d1b68ea6-9a2f-4907-b137-f070620d3619",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "Monitoring",
+ "subTarget": "monitor",
+ "style": "link"
+ }
+ ]
+ },
+ "customWidth": "60",
+ "name": "Overview"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "bfbbba3d-8abb-4f3d-9f7c-2f45a9cb78dc",
+ "cellValue": "sapoverview",
+ "linkTarget": "parameter",
+ "linkLabel": "Azure Resources Overview ",
+ "subTarget": "bycount",
+ "style": "link"
+ },
+ {
+ "id": "dc79bbf4-87bb-470b-bfb0-704d22ee847a",
+ "cellValue": "sapoverview",
+ "linkTarget": "parameter",
+ "linkLabel": "Azure Resources By List",
+ "subTarget": "bylist",
+ "style": "link"
+ }
+ ]
},
"conditionalVisibility": {
"parameterName": "SelectedTab",
"comparison": "isEqualTo",
- "value": "NoShow"
+ "value": "SAPOverview"
},
- "name": "text - Network Overview"
+ "name": "links - SAP Resource Overview"
},
{
- "type": 12,
+ "type": 3,
"content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "4f2f1ef3-3ee6-403f-aa60-7dcbf3d8739e",
- "cellValue": "network",
- "linkTarget": "parameter",
- "linkLabel": "Overview",
- "subTarget": "overview",
- "preText": "Network Overview",
- "style": "link"
- },
- {
- "id": "e3aee4aa-f1bb-4b53-86ee-e39812e1c102",
- "cellValue": "network",
- "linkTarget": "parameter",
- "linkLabel": "Private DNS Zone",
- "subTarget": "pvtdnszone",
- "style": "link"
- },
- {
- "id": "7d4d82c3-d13f-46a0-b9da-e3aeb4d3b946",
- "cellValue": "network",
- "linkTarget": "parameter",
- "linkLabel": "Private Endpoint",
- "subTarget": "pvtendpoint",
- "style": "link"
- },
- {
- "id": "0701e703-3459-4b69-a1e0-ae53935ef9f7",
- "cellValue": "network",
- "linkTarget": "parameter",
- "linkLabel": "Monitor",
- "subTarget": "networkmonitor",
- "style": "link"
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "network"
- },
- "name": "links - Network Overview"
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name, vmsize = tostring(properties.hardwareProfile.vmSize)\r\n| summarize count() by vmsize",
+ "size": 3,
+ "title": "Virtual Machine SKU Overview",
+ "noDataMessage": "No VM resource found in selected subscription.",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "tileSettings": {
+ "showBorder": false,
+ "titleContent": {
+ "columnMatch": "vmsize",
+ "formatter": 1
},
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "where type has \"microsoft.network\"\r\n or type has 'microsoft.cdn'\r\n| extend type = case(\r\n\ttype == 'microsoft.network/networkinterfaces', \"NICs\",\r\n\ttype == 'microsoft.network/networksecuritygroups', \"NSGs\", \r\n\ttype == \"microsoft.network/publicipaddresses\", \"Public IPs\", \r\n\ttype == 'microsoft.network/virtualnetworks', \"vNets\",\r\n\ttype == 'microsoft.network/networkwatchers/connectionmonitors', \"Connection Monitors\",\r\n\ttype == 'microsoft.network/privatednszones', \"Private DNS\",\r\n\ttype == 'microsoft.network/virtualnetworkgateways', @\"vNet Gateways\",\r\n\ttype == 'microsoft.network/connections', \"Connections\",\r\n\ttype == 'microsoft.network/networkwatchers', \"Network Watchers\",\r\n\ttype == 'microsoft.network/privateendpoints', \"Private Endpoints\",\r\n\ttype == 'microsoft.network/localnetworkgateways', \"Local Network Gateways\",\r\n\ttype == 'microsoft.network/privatednszones/virtualnetworklinks', \"vNet Links\",\r\n\ttype == 'microsoft.network/dnszones', 'DNS Zones',\r\n\ttype == 'microsoft.network/networkwatchers/flowlogs', 'Flow Logs',\r\n\ttype == 'microsoft.network/routetables', 'Route Tables',\r\n\ttype == 'microsoft.network/loadbalancers', 'Load Balancers',\r\n\ttype == 'microsoft.network/ddosprotectionplans', 'DDoS Protection Plans',\r\n\ttype == 'microsoft.network/applicationsecuritygroups', 'App Security Groups',\r\n\ttype == 'microsoft.network/azurefirewalls', 'Azure Firewalls',\r\n\ttype == 'microsoft.network/applicationgateways', 'App Gateways',\r\n\ttype == 'microsoft.network/frontdoors', 'Front Doors',\r\n\ttype == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies', 'AppGateway Policies',\r\n\ttype == 'microsoft.network/bastionhosts', 'Bastion Hosts',\r\n\ttype == 'microsoft.network/frontdoorwebapplicationfirewallpolicies', 'FrontDoor Policies',\r\n\ttype == 'microsoft.network/firewallpolicies', 'Firewall Policies',\r\n\ttype == 'microsoft.network/networkintentpolicies', 'Network Intent Policies',\r\n\ttype == 'microsoft.network/trafficmanagerprofiles', 'Traffic Manager Profiles',\r\n\ttype == 'microsoft.network/publicipprefixes', 'PublicIP Prefixes',\r\n\ttype == 'microsoft.network/privatelinkservices', 'Private Link',\r\n\ttype == 'microsoft.network/expressroutecircuits', 'Express Route Circuits',\r\n\ttype =~ 'microsoft.cdn/cdnwebapplicationfirewallpolicies', 'CDN Web App Firewall Policies',\r\n\ttype =~ 'microsoft.cdn/profiles', 'CDN Profiles',\r\n\ttype =~ 'microsoft.cdn/profiles/afdendpoints', 'CDN Front Door Endpoints',\r\n\ttype =~ 'microsoft.cdn/profiles/endpoints', 'CDN Endpoints',\r\n\tstrcat(\"Not Translated: \", type))\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type",
- "size": 3,
- "title": "Azure Network Overview",
- "noDataMessage": "Something went south!",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart",
- "tileSettings": {
- "titleContent": {
- "columnMatch": "type",
- "formatter": 1
- },
- "leftContent": {
- "columnMatch": "count_",
- "formatter": 12,
- "formatOptions": {
- "palette": "auto"
- },
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
- },
- "showBorder": true
- },
- "chartSettings": {
- "ySettings": {
- "numberFormatSettings": {
- "unit": 0,
- "options": {
- "style": "decimal",
- "useGrouping": true
- }
- }
- }
- }
+ "leftContent": {
+ "columnMatch": "count_",
+ "formatter": 12,
+ "formatOptions": {
+ "palette": "auto"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "network"
- },
- {
- "parameterName": "network",
- "comparison": "isEqualTo",
- "value": "overview"
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
}
- ],
- "name": "query - Network Overview"
+ }
+ }
+ },
+ "graphSettings": {
+ "type": 0,
+ "topContent": {
+ "columnMatch": "vmsize",
+ "formatter": 1
},
- {
- "type": 9,
- "content": {
- "version": "KqlParameterItem/1.0",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "parameters": [
- {
- "id": "c72755d6-9fac-458b-979a-f2ce197f6ddf",
- "version": "KqlParameterItem/1.0",
- "name": "Resources",
- "label": "ExpressRoute Ckt",
- "type": 5,
- "isRequired": true,
- "multiSelect": true,
- "quote": "'",
- "delimiter": ",",
+ "centerContent": {
+ "columnMatch": "count_",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ }
+ },
+ "chartSettings": {
+ "yAxis": [
+ "count_"
+ ]
+ }
+ },
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bycount"
+ }
+ ],
+ "name": "query - VM Overview",
+ "styleSettings": {
+ "margin": "0",
+ "padding": "0"
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name = tostring(sku.name),tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 3,
+ "title": "Managed Disk overview",
+ "noDataMessage": "No Azure Managed Disk found in selected subscription.",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bycount"
+ }
+ ],
+ "name": "query - Managed Disk overview",
+ "styleSettings": {
+ "margin": "0",
+ "padding": "0",
+ "maxWidth": "33%"
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "where type has \"microsoft.netapp\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend type = case(\r\n\ttype == 'microsoft.netapp/netappaccounts', \"ANF Accounts\",\r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools', \"Capacity Pools\", \r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools/volumes', \"Volumes\", \r\n\ttype == 'microsoft.netapp/netappaccounts/snapshotpolicies', \"snapshotpolicies\", \r\n\ttype == 'microsoft.netapp/netappaccounts/backuppolicies', \"backuppolicies\",\r\n\tstrcat(\"Not Translated: \", type))\r\n| summarize count() by type",
+ "size": 3,
+ "title": "ANF Storage Overview",
+ "noDataMessage": "No ANF Resource found in selected subscription.",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "34",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bycount"
+ }
+ ],
+ "name": "query - ANF Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ \"microsoft.network/applicationgateways\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend tier = parse_json(properties).sku.tier\r\n| project SKU = iff(tier contains \"v2\", \"v2\", \"v1\")\r\n| summarize count() by SKU",
+ "size": 3,
+ "title": "Application Gateway Overview",
+ "noDataMessage": "No App GW found in selected subscription.",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "chartSettings": {
+ "seriesLabelSettings": [
+ {
+ "seriesName": "v2",
+ "label": "Application GW V2"
+ },
+ {
+ "seriesName": "v1",
+ "label": "Application GW V1"
+ }
+ ]
+ }
+ },
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bycount"
+ }
+ ],
+ "name": "query - App GW Overview",
+ "styleSettings": {
+ "maxWidth": "50%"
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 3,
+ "title": "Azure Load Balancer Overview",
+ "noDataMessage": "No Azure Load Balancer found in selected subscription.",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "34",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bycount"
+ }
+ ],
+ "name": "query - Azure Load Balancer Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 3,
+ "title": "Azure Storage Accounts",
+ "noDataMessage": "No Storage Account found in selected subscription.",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bycount"
+ }
+ ],
+ "name": "query - Storage Account Overview"
+ },
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "58b04bca-a5a9-460d-a619-4d50ed8c3aa2",
+ "version": "KqlParameterItem/1.0",
+ "name": "VM_Messages",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total VMs # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "54c9eec3-283b-4990-9506-82b2c69713e0",
+ "version": "KqlParameterItem/1.0",
+ "name": "Storage_Messages",
+ "type": 1,
+ "query": "Resources\r\n| where type == 'microsoft.storage/storageaccounts'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total Storage Accounts # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "ecdcb0a6-4340-4125-a135-769f25e29308",
+ "version": "KqlParameterItem/1.0",
+ "name": "Disk_Message",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total Managed Disks # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "1013df3c-f6c9-4ca6-9423-db40ee6f5b29",
+ "version": "KqlParameterItem/1.0",
+ "name": "ANF_Message",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.netapp/netappaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Total = count()\r\n| project Message = strcat('Total ANF Accounts # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ }
+ ],
+ "style": "pills",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ "name": "parameters - Future Parameters"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "Azure Resources : {VM_Messages} , {Disk_Message} , {Storage_Messages} , {ANF_Message}\r\n"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bylist"
+ }
+ ],
+ "name": "text - 12"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, vmsize = tostring(properties.hardwareProfile.vmSize)\r\n| summarize count() by vmsize\r\n| order by tolower(vmsize) asc",
+ "size": 0,
+ "title": "VM SKU's",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "vmsize",
+ "label": "VM SKU"
+ }
+ ]
+ }
+ },
+ "customWidth": "25",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bylist"
+ }
+ ],
+ "name": "query - VM SKU's",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name\r\n| order by tolower(name) asc",
+ "size": 0,
+ "title": "Azure Managed Disks",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "name",
+ "label": "Disk SKU"
+ }
+ ]
+ }
+ },
+ "customWidth": "25",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bylist"
+ }
+ ],
+ "name": "query - Azure Managed Disks",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name\r\n| order by tolower(name) asc",
+ "size": 0,
+ "title": "Azure Storage Resources",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "name",
+ "label": "Storage Type"
+ },
+ {
+ "columnId": "count_",
+ "label": "Count"
+ }
+ ]
+ }
+ },
+ "customWidth": "25",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bylist"
+ }
+ ],
+ "name": "Query - Storage Accounts Overview",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "where type has \"microsoft.netapp\"\r\n| extend type = case(\r\n\ttype == 'microsoft.netapp/netappaccounts', \"ANF Accounts\",\r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools', \"ANF Capacity Pools\", \r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools/volumes', \"ANF Volumes\",\r\n type == 'microsoft.netapp/netappaccounts/snapshotpolicies', \"Snapshot Policies\",\r\n type == 'microsoft.netapp/netappaccounts/backuppolicies', \"Backup Policies\",\r\n type == 'microsoft.netapp/netappaccounts/capacitypools/volumes/mounttargets',\"Mount Targets\",\r\n\tstrcat(\"Not Translated: \", type))\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type\r\n| order by tolower(type) asc",
+ "size": 0,
+ "title": "ANF Resources",
+ "noDataMessage": "No ANF Resource found",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "count_",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "type",
+ "label": "ANF Type"
+ }
+ ]
+ }
+ },
+ "customWidth": "25",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAPOverview"
+ },
+ {
+ "parameterName": "sapoverview",
+ "comparison": "isEqualTo",
+ "value": "bylist"
+ }
+ ],
+ "name": "query - ANF Resources",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "a03a858a-11f8-4443-b437-eb174eb19c94",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "VM Health Overview",
+ "subTarget": "computehealth",
+ "style": "link"
+ },
+ {
+ "id": "b36f7dc7-5b49-4071-83fa-76a7c50df2e6",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Azure Compute",
+ "subTarget": "azure",
+ "preText": "Azure Compute",
+ "style": "link"
+ },
+ {
+ "id": "c7b4b533-ce14-4bc0-acc0-f45104d66fb9",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Compute List",
+ "subTarget": "computelist",
+ "style": "link"
+ },
+ {
+ "id": "2c5e0c92-05b0-456f-a132-331f2c7dac03",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Compute Extensions",
+ "subTarget": "computeextension",
+ "style": "link"
+ },
+ {
+ "id": "2962cfcd-40da-4be1-a202-1da16761394c",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Compute+OS",
+ "subTarget": "computeos",
+ "style": "link"
+ },
+ {
+ "id": "b82c5dbb-f6ac-4964-89c8-6809ef4e65e0",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Compute+Data Disks",
+ "subTarget": "computedata",
+ "style": "link"
+ },
+ {
+ "id": "7cf8de97-8a6d-460a-abc6-c576c984c52b",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "VM Stats",
+ "subTarget": "computevmstats",
+ "style": "link"
+ }
+ ]
+ },
+ "customWidth": "50",
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ "name": "links - compute"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "f016f82b-950b-4911-bd84-ddb7f6cef32f",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM Unplanned Maintenance",
+ "subTarget": "unplannedoutage",
+ "preText": "VM Unplanned Outage",
+ "style": "link"
+ },
+ {
+ "id": "dd12dfa8-93cb-4457-aef8-5c6f8c14d4db",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM Planned Maintenance",
+ "subTarget": "plannedoutage",
+ "style": "link"
+ },
+ {
+ "id": "4e24eaaa-68b4-43d4-b5ae-2834adaf1700",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM Live Migration Maintenance",
+ "subTarget": "Annotationview",
+ "style": "link"
+ },
+ {
+ "id": "c5e0c296-8dcf-4df8-87fb-c1acc517743e",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM with Top vCPU",
+ "subTarget": "topvcpu",
+ "style": "link"
+ },
+ {
+ "id": "eaa5cad0-f997-4ed2-8660-06d542115ee3",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM with Top Memory",
+ "subTarget": "topmemory",
+ "style": "link"
+ },
+ {
+ "id": "afca920e-2537-4233-8340-4ff17fc3f4ea",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM with Top IOPS",
+ "subTarget": "topiops",
+ "style": "link"
+ },
+ {
+ "id": "2186d85a-c11e-4d75-bca7-012a5560973e",
+ "cellValue": "computehealth",
+ "linkTarget": "parameter",
+ "linkLabel": "VM with Top Throughput",
+ "subTarget": "topthroughput",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ "name": "links - VM Health"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "Microsoft is constantly updating its platform and submitting new certification details to SAP in order to ensure Microsoft Azure is the best platform on which to run your SAP workloads.\r\n\r\n💡 Learn more about [SAP certifications and configurations running on Microsoft Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-certifications)"
+ },
+ "customWidth": "50",
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ "name": "text - Compute Info"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources | where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend vmState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| extend vmState = iif(isempty(vmState), \"VM State Unknown\", (vmState))\r\n| summarize count() by vmState",
+ "size": 3,
+ "title": "Azure Compute Summary ",
+ "exportMultipleValues": true,
+ "exportedParameters": [
+ {
+ "fieldName": "Resource",
+ "parameterName": "storage",
+ "parameterType": 7
+ }
+ ],
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "graphSettings": {
+ "type": 0,
+ "topContent": {
+ "columnMatch": "vmState",
+ "formatter": 1
+ },
+ "centerContent": {
+ "columnMatch": "count_",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ }
+ },
+ "chartSettings": {
+ "group": "vmState",
+ "createOtherGroup": null,
+ "seriesLabelSettings": [
+ {
+ "seriesName": "VM deallocated",
+ "color": "brown"
+ },
+ {
+ "seriesName": "VM running",
+ "color": "blue"
+ }
+ ]
+ }
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "azure"
+ }
+ ],
+ "showPin": true,
+ "name": "query - Azure Compute Summary "
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources | where type =~ 'Microsoft.Compute/virtualMachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend licenseType = tostring(properties.['licenseType'])\r\n| extend HybridBenefit = iif(properties.licenseType == \"Windows_Server\", \"Azure Hybrid Benefit\", \"Not Enabled\")\r\n| project id,OStype =tostring(properties.storageProfile.osDisk.osType),licenseType,HybridBenefit,location, resourceGroup\r\n| extend licenseType = iif(isempty(licenseType), \"Blank/PAYG\", (licenseType))\r\n| summarize count() by licenseType",
+ "size": 3,
+ "title": "VM OS LicenseType",
+ "noDataMessage": "No OS LicenseType detected",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "azure"
+ }
+ ],
+ "showPin": true,
+ "name": "query - VM OS License Type"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "Generation 2 VMs support key features that aren't supported in generation 1 VMs. These features include increased memory, Intel Software Guard Extensions (Intel SGX), and virtualized persistent memory (vPMEM). Generation 2 VMs running on-premises, have some features that aren't supported in Azure yet. For more information, see the Features and capabilities section.\r\n\r\n💡 Learn more about [Support for generation 2 VMs on Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/generation-2)"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computelist"
+ },
+ {
+ "parameterName": "Help",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "text - Compute Image tip - Copy"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName = name, powerstate = tostring(properties.extended.instanceView.powerState.displayStatus), vmsize = tostring(properties.hardwareProfile.vmSize), \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer),\r\n location, bootDiagnostics =tostring(properties.diagnosticsProfile.bootDiagnostics.enabled) ,avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n, ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), VMSS = tostring(split(properties.virtualMachineScaleSet.id,\"/\",8)[0]), avZone = tostring(zones), resourceGroup, tags=tostring(tags)",
+ "size": 2,
+ "title": "Compute List",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "aggregation": "Count",
+ "customColumnWidthSetting": "18ch"
+ },
+ "tooltipFormat": {
+ "tooltip": "Virtual Machine Name"
+ }
+ },
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "powerstate",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "16ch"
+ }
+ },
+ {
+ "columnMatch": "vmsize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "os_type",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "publisher",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "is Empty",
+ "representation": "1",
+ "text": "{0}BYOL/Custom"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "27ch"
+ }
+ },
+ {
+ "columnMatch": "version",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "imagesku",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "contains",
+ "thresholdValue": "gen2",
+ "representation": "success",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "contains",
+ "thresholdValue": "gensecond",
+ "representation": "success",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "1",
+ "text": "{0}Review"
+ }
+ ],
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "offer",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "bootDiagnostics",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "success",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "!=",
+ "thresholdValue": "true",
+ "representation": "1",
+ "text": "{0}Review"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "avSet",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "ppg",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "avZone",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "adminUsername",
+ "formatter": 5,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "HyperVgen",
+ "formatter": 5,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "powerstate",
+ "label": "VM State"
+ },
+ {
+ "columnId": "vmsize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "os_type",
+ "label": "Operating System"
+ },
+ {
+ "columnId": "publisher",
+ "label": "OS Image Publisher"
+ },
+ {
+ "columnId": "version",
+ "label": "Image version"
+ },
+ {
+ "columnId": "imagesku",
+ "label": "OS Image SKU"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "bootDiagnostics",
+ "label": "Boot Diagnostic"
+ },
+ {
+ "columnId": "avSet",
+ "label": "AvSet"
+ },
+ {
+ "columnId": "ppg",
+ "label": "PPG"
+ },
+ {
+ "columnId": "avZone",
+ "label": "AvZone"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computelist"
+ }
+ ],
+ "name": "query - compute List",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "nav",
+ "links": [
+ {
+ "id": "d05b138c-72cf-4fbb-b288-2e02b9f72028",
+ "cellValue": "computeextension",
+ "linkTarget": "parameter",
+ "linkLabel": "VM+Extensions",
+ "subTarget": "listvmextension",
+ "style": "link"
+ },
+ {
+ "id": "ae64417d-6066-4256-b43c-b6847c0a8322",
+ "cellValue": "computeextension",
+ "linkTarget": "parameter",
+ "linkLabel": "VM Extensions Status",
+ "subTarget": "failedextension",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeextension"
+ }
+ ],
+ "name": "links - Link"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),\r\n ExtensionName = name\r\n ) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, resourceGroup, location",
+ "size": 2,
+ "title": "Compute Extension",
+ "noDataMessage": "No VM Extension found",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "bladeOpenContext": {
+ "bladeJsonParameters": ""
+ }
+ }
+ },
+ {
+ "columnMatch": "Extensions",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "OSName",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "VMSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "OSType",
+ "label": "Operating System"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "Extensions",
+ "label": "VM Extensions"
+ }
+ ]
+ },
+ "graphSettings": {
+ "type": 0
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeextension"
+ },
+ {
+ "parameterName": "computeextension",
+ "comparison": "isEqualTo",
+ "value": "listvmextension"
+ }
+ ],
+ "showPin": false,
+ "name": "query - Compute Extension",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion",
+ "size": 0,
+ "title": "VM Extensions Status",
+ "noDataMessage": "No VM Extensions",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "provisioningState",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "Succeeded",
+ "representation": "success",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "Failed",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "autoUpgradeMinorVersion",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "false",
+ "representation": "Sev1",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "Sev3",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "Extensions",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "Group",
+ "formatter": 1
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "VMSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "OSType",
+ "label": "Operating System"
+ },
+ {
+ "columnId": "provisioningState",
+ "label": "Extension State"
+ },
+ {
+ "columnId": "autoUpgradeMinorVersion",
+ "label": "AutoUpgrade"
+ },
+ {
+ "columnId": "typeHandlerVersion",
+ "label": "Version"
+ },
+ {
+ "columnId": "Extensions",
+ "label": "Extension Name"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeextension"
+ },
+ {
+ "parameterName": "computeextension",
+ "comparison": "isEqualTo",
+ "value": "failedextension"
+ }
+ ],
+ "name": "query - Failed VM Extension "
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n//| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), osDisk = tostring(properties.storageProfile.osDisk.name), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), caching= tostring(properties.storageProfile.osDisk.caching)\r\n, createOption=tostring(properties.storageProfile.osDisk.createOption), osType=tostring(properties.storageProfile.osDisk.osType), avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n| join ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| project id1=id, diskname=name, osDisk=tostring(split(id,\"/\",8)[0]), vmName=tostring(split(managedBy,\"/\",8)[0]), sku =sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), managedBy, location, resourceGroup\r\n)\r\non vmName, osDisk\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName, vmSize, osType, id1, diskname, sku, caching,disk_tier, disk_size_GB,diskbandwidthMBps, disk_iops, createOption, location, resourceGroup , ppg , avSet",
+ "size": 2,
+ "showAnalytics": true,
+ "title": "Compute + OS Disk",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "18ch"
+ },
+ "tooltipFormat": {
+ "tooltip": "Virtual Name must be =< 13 Characters"
+ }
+ },
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "vmSize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "id1",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Metrics",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "diskname",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "sku",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "contains",
+ "thresholdValue": "Standard",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "disk_tier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "disk_size_GB",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "diskbandwidthMBps",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
+ }
+ },
+ {
+ "columnMatch": "ppg",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "avSet",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "os_type",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "datadisk_lun",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "datadisk_wa",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "id2",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "sku_name",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "powerstate",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "vmsize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "vmgen",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "V2",
+ "representation": "success",
+ "text": "V2"
+ },
+ {
+ "operator": "!=",
+ "thresholdValue": "V2",
+ "representation": "1",
+ "text": "Consider a review."
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "avZone",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "tags",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "id1",
+ "label": "Disk Name"
+ },
+ {
+ "columnId": "disk_tier",
+ "label": "Tier"
+ },
+ {
+ "columnId": "disk_size_GB",
+ "label": "Disk Size"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "ppg",
+ "label": "PPG"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeos"
+ }
+ ],
+ "showPin": true,
+ "name": "query - Compute+OS Disk",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, \r\n vmSize= tostring(properties.hardwareProfile.vmSize), os_type = tostring(properties.storageProfile.osDisk.osType),\r\n datadisk_lun = toint(datadisks.lun), datadisk_name = tostring(datadisks.name), datadisksize = tostring(datadisks.diskSizeGB), \r\n datadisk_cache = tostring(datadisks.caching), datadisk_wa = tostring(datadisks.writeAcceleratorEnabled)\r\n//| summarize by vmName, location, powerstate, avZone, avSet, ppg, vmSize, osname, vmgen, datadisklun, datadiskname, datadisksize, datadiskcache, datadiskwa\r\n| join kind = leftouter ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| parse managedBy with * \"/virtualMachines/\" vmName\r\n| parse id with * \"/disks/\" datadisk_name \r\n| project id1=id, sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), datadisk_name, vmName, managedBy, location, resourceGroup\r\n)\r\non vmName, datadisk_name\r\n| project-away datadisk_name, datadisk_name1, vmName1, managedBy\r\n| sort by vmName asc , datadisk_lun asc\r\n//| distinct datadisk_name",
+ "size": 2,
+ "showAnalytics": true,
+ "title": "Compute + Data disks",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "25ch"
+ },
+ "tooltipFormat": {
+ "tooltip": "VM name is recommended equal or less than 13 characters."
+ }
+ },
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "vmSize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "os_type",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "datadisk_lun",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "datadisksize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "datadisk_cache",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "datadisk_wa",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ },
+ "tooltipFormat": {
+ "tooltip": "Write Accelerator"
+ }
+ },
+ {
+ "columnMatch": "sku_name",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "17ch"
+ }
+ },
+ {
+ "columnMatch": "disk_tier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "disk_size_GB",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "disk_iops",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "avSet",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "11ch"
+ }
+ },
+ {
+ "columnMatch": "ppg",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "9ch"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "sortBy": [
+ {
+ "itemKey": "$gen_number_datadisk_wa_7",
+ "sortOrder": 1
+ }
+ ],
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "vmName",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "vmSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "os_type",
+ "label": "OS Type"
+ },
+ {
+ "columnId": "datadisk_lun",
+ "label": "Disk LUN"
+ },
+ {
+ "columnId": "datadisksize",
+ "label": "Disk Size"
+ },
+ {
+ "columnId": "datadisk_cache",
+ "label": "Disk Cache"
+ },
+ {
+ "columnId": "datadisk_wa",
+ "label": "WA"
+ },
+ {
+ "columnId": "id1",
+ "label": "Disk Name"
+ },
+ {
+ "columnId": "sku_name",
+ "label": "Disk SKU"
+ },
+ {
+ "columnId": "disk_tier",
+ "label": "Disk Tier"
+ },
+ {
+ "columnId": "disk_size_GB",
+ "label": "Disk Size"
+ },
+ {
+ "columnId": "diskbandwidthMBps",
+ "label": "Disk BW"
+ },
+ {
+ "columnId": "disk_iops",
+ "label": "Disk IOPS"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ }
+ ]
+ },
+ "sortBy": [
+ {
+ "itemKey": "$gen_number_datadisk_wa_7",
+ "sortOrder": 1
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computedata"
+ }
+ ],
+ "showPin": true,
+ "name": "query - Compute+Data",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Unplanned\"\r\n| where Context == \"Platform Initiated\"\r\n| where Reason != \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Context, Category, summary\r\n| order by Timestamp desc",
+ "size": 0,
+ "title": "VMs impacted by Unplanned Outages",
+ "noDataMessage": "No VM impacted by Unplanned Outages",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 5
+ }
+ ],
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "unplannedoutage"
+ }
+ ],
+ "name": "query - Unplanned Outages",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Planned\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Context, Category, summary\r\n| order by Timestamp desc",
+ "size": 0,
+ "title": "VM with Planned Outages",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "ImpactType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "Reason",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "Context",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "Category",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ }
+ ],
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "plannedoutage"
+ }
+ ],
+ "name": "query - Planned Outage",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "healthresourcechanges\r\n| where type == \"microsoft.resources/changes\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| where properties.targetResourceType =~ \"microsoft.resourcehealth/resourceannotations\"\r\n| extend Id = tolower(split(properties.targetResourceId, '/providers/Microsoft.ResourceHealth/resourceAnnotations/current')[0]),\r\n Timestamp = todatetime(properties.changeAttributes.timestamp),\r\n summary = properties['changes']['properties.summary']['newValue'],\r\n Reason = properties['changes']['properties.reason']['newValue'],\r\n Context = iff(isempty(properties['changes']['properties.context']['newValue']), \"-\", properties['changes']['properties.context']['newValue']),\r\n Category = iff(isempty(properties['changes']['properties.category']['newValue']), \"-\", properties['changes']['properties.category']['newValue']),\r\n ImpactType = iff(isempty(properties['changes']['properties.impactType']['newValue']), \"-\", properties['changes']['properties.impactType']['newValue'])\r\n| where isnotempty(summary)\r\n| where summary contains \"reboot\" or summary contains \"pause\" // Filter for blackout or brownout\r\n| where Category == \"Unplanned\"\r\n| where Context == \"Platform Initiated\"\r\n| where Reason == \"Live Migration Succeeded\"\r\n| project ['id'],VMName = tostring(split(id,\"/\",8)[0]),Timestamp, ImpactType, Reason, Context, Category, summary\r\n| order by Timestamp desc",
+ "size": 0,
+ "title": "VM Live Migration Maintenance",
+ "noDataMessage": "No Live Migration found for any VM",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": false,
+ "showIcon": true,
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "Timestamp",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "ImpactType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ }
+ ],
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "Annotationview"
+ }
+ ],
+ "name": "query - VM Live Migration Maintenance",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "6d33d538-0e7d-49e8-b86e-73e4f1d1ecd5",
+ "version": "KqlParameterItem/1.0",
+ "name": "VirtualMachines",
+ "type": 5,
+ "isRequired": true,
+ "multiSelect": true,
+ "quote": "'",
+ "delimiter": ",",
+ "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| order by name asc\r\n| extend Rank = row_number()\r\n| project value = id, label = id, selected = Rank <= 25",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "typeSettings": {
+ "additionalResourceOptions": []
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "79ee65ad-ebf6-4445-a374-833f42d5316e",
+ "version": "KqlParameterItem/1.0",
+ "name": "TimeRange",
+ "type": 4,
+ "isRequired": true,
+ "typeSettings": {
+ "selectableValues": [
+ {
+ "durationMs": 300000
+ },
+ {
+ "durationMs": 900000
+ },
+ {
+ "durationMs": 1800000
+ },
+ {
+ "durationMs": 3600000
+ },
+ {
+ "durationMs": 14400000
+ },
+ {
+ "durationMs": 43200000
+ },
+ {
+ "durationMs": 86400000
+ },
+ {
+ "durationMs": 172800000
+ },
+ {
+ "durationMs": 259200000
+ },
+ {
+ "durationMs": 604800000
+ },
+ {
+ "durationMs": 1209600000
+ },
+ {
+ "durationMs": 2419200000
+ },
+ {
+ "durationMs": 2592000000
+ },
+ {
+ "durationMs": 5184000000
+ },
+ {
+ "durationMs": 7776000000
+ }
+ ],
+ "allowCustom": true
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "value": {
+ "durationMs": 2592000000
+ }
+ },
+ {
+ "id": "67b4d592-db2c-4cba-9d7a-3e52d893afde",
+ "version": "KqlParameterItem/1.0",
+ "name": "Message",
+ "type": 1,
+ "query": "where type == 'microsoft.compute/virtualmachines' \r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Selected = countif(id in ({VirtualMachines:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ }
+ ],
+ "style": "pills",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ }
+ ],
+ "name": "parameters - VirtualMachines"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook5c08029f-92f1-41dd-b99d-6f80b41a6f39",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 2592000000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 3
+ }
+ ],
+ "resourceLimit": 1000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 1,
+ "options": null
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ }
+ },
+ {
+ "columnMatch": "Metric",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "Aggregation",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment Field",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Value",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "Timeline",
+ "formatter": 9
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "sortBy": [
+ {
+ "itemKey": "$gen_number_microsoft.compute/virtualmachines--Percentage CPU_2",
+ "sortOrder": 2
+ }
+ ],
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
+ "label": "Percentage CPU (Max)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "label": "Percentage CPU Timeline"
+ }
+ ]
+ },
+ "sortBy": [
+ {
+ "itemKey": "$gen_number_microsoft.compute/virtualmachines--Percentage CPU_2",
+ "sortOrder": 2
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "topvcpu"
+ }
+ ],
+ "name": "metric - Top vCPU"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook5c08029f-92f1-41dd-b99d-6f80b41a6f39",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 2592000000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "aggregation": 3
+ }
+ ],
+ "resourceLimit": 1000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "formatter": 9,
+ "formatOptions": {
+ "min": 500,
+ "palette": "redGreen"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ },
+ "missingSparkDataOption": "Max"
+ }
+ },
+ {
+ "columnMatch": "Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 5,
+ "formatOptions": {
+ "aggregation": "Max"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Metric",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Aggregation",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment Field",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Value",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "label": "Available Memory Bytes (Preview) (Max)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "label": "Available Memory Bytes (Preview) Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "topmemory"
+ }
+ ],
+ "name": "metric - Top Memory",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook5c08029f-92f1-41dd-b99d-6f80b41a6f39",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 2592000000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage",
+ "aggregation": 3
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage",
+ "aggregation": 4
+ }
+ ],
+ "resourceLimit": 1000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "formatter": 9,
+ "formatOptions": {
+ "min": 500,
+ "palette": "redGreen"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ },
+ "missingSparkDataOption": "Max"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 5,
+ "formatOptions": {
+ "aggregation": "Max"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Metric",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Aggregation",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment Field",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Value",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage",
+ "label": "VM Uncached IOPS Consumed Percentage (Max)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Uncached IOPS Consumed Percentage Timeline",
+ "label": "VM Uncached IOPS Consumed Percentage Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage",
+ "label": "VM Cached IOPS Consumed Percentage (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--VM Cached IOPS Consumed Percentage Timeline",
+ "label": "VM Cached IOPS Consumed Percentage Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "topiops"
+ }
+ ],
+ "name": "metric - Top IOPS",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook5c08029f-92f1-41dd-b99d-6f80b41a6f39",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 2592000000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network Out Total",
+ "aggregation": 3
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network In Total",
+ "aggregation": 1
+ }
+ ],
+ "resourceLimit": 1000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 4,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ },
+ "numberFormat": {
+ "unit": 4,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "formatter": 9,
+ "formatOptions": {
+ "min": 500,
+ "palette": "redGreen"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ },
+ "missingSparkDataOption": "Max"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 5,
+ "formatOptions": {
+ "aggregation": "Max"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Metric",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Aggregation",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment Field",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Segment",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Value",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total",
+ "label": "Network Out Total (Max)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "label": "Network Out Total Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total",
+ "label": "Network In Total (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "label": "Network In Total Timeline"
+ }
+ ]
+ },
+ "sortBy": []
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computehealth"
+ },
+ {
+ "parameterName": "computehealth",
+ "comparison": "isEqualTo",
+ "value": "topthroughput"
+ }
+ ],
+ "name": "metric - Top Throughput",
+ "styleSettings": {
+ "showBorder": true
+ }
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "compute"
+ },
+ "name": "group - Compute Health"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### Compute Group"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - Compute Overview"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### Storage Group"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - Storage Group"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "title": "Storage Overview",
+ "items": [
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "7e14efaf-16ca-4e89-90e7-cddec83bf803",
+ "cellValue": "storage",
+ "linkTarget": "parameter",
+ "linkLabel": "Overview",
+ "subTarget": "overview",
+ "preText": "Overview",
+ "style": "link"
+ },
+ {
+ "id": "e2dc48a3-0f7e-4091-a87c-1cb2da6c5c00",
+ "cellValue": "storage",
+ "linkTarget": "parameter",
+ "linkLabel": "Key Vaults",
+ "subTarget": "keyvault",
+ "preText": "Key Vaults",
+ "style": "link"
+ },
+ {
+ "id": "02d9a44f-6d08-4dca-b5c6-8986483f147d",
+ "cellValue": "storage",
+ "linkTarget": "parameter",
+ "linkLabel": "Storage Accounts",
+ "subTarget": "storageaccount",
+ "style": "link"
+ },
+ {
+ "id": "330f1a12-489c-4ad4-b745-33c62d831a32",
+ "cellValue": "storage",
+ "linkTarget": "parameter",
+ "linkLabel": "Recovery Service Vault",
+ "subTarget": "rsv",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ "name": "links - Storage"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "Azure Premium Files [AFS] NFS Exception: AFS-NFS file shares don't support an encryption mechanism, you must disable require secure transfer for the storage account.",
+ "style": "info"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ }
+ ],
+ "name": "text - AFS Exception"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "nav",
+ "links": [
+ {
+ "id": "9877b4a6-6248-4f25-924c-c0def997a621",
+ "cellValue": "storageaccount",
+ "linkTarget": "parameter",
+ "linkLabel": "Standard Storage Accounts",
+ "subTarget": "stndstorage",
+ "preText": "",
+ "style": "link"
+ },
+ {
+ "id": "5866d0e1-2897-4ac6-8c7d-852aaf1af4bc",
+ "cellValue": "storageaccount",
+ "linkTarget": "parameter",
+ "linkLabel": "Standard Storage Accounts with PvtEndPnts",
+ "subTarget": "stndstorageendpnt",
+ "style": "link"
+ },
+ {
+ "id": "b08e3a4c-4868-4aa7-a6c5-d37d7b81e9bc",
+ "cellValue": "storageaccount",
+ "linkTarget": "parameter",
+ "linkLabel": "Classic Storage Accounts",
+ "subTarget": "classicstorage",
+ "preText": "",
+ "style": "link"
+ },
+ {
+ "id": "274713de-f745-4bab-85bf-aae85ed1dda4",
+ "cellValue": "storageaccount",
+ "linkTarget": "parameter",
+ "linkLabel": "Storae Accounts with CMK",
+ "subTarget": "storagecmk",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ }
+ ],
+ "name": "links - Storage Options"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.storagesync/storagesyncservices'\r\n\tor type =~ 'microsoft.recoveryservices/vaults'\r\n\tor type =~ 'microsoft.storage/storageaccounts'\r\n\tor type =~ 'microsoft.keyvault/vaults'\r\n| extend type = case(\r\n\ttype =~ 'microsoft.storagesync/storagesyncservices', 'Azure File Sync',\r\n\ttype =~ 'microsoft.recoveryservices/vaults', 'Azure Backup',\r\n\ttype =~ 'microsoft.storage/storageaccounts', 'Storage Accounts',\r\n\ttype =~ 'microsoft.keyvault/vaults', 'Key Vaults',\r\n\tstrcat(\"Not Translated: \", type))\r\n| where type !has \"Not Translated\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type",
+ "size": 1,
+ "title": "Storage Overview",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "tiles",
+ "gridSettings": {
+ "filter": true
+ },
+ "tileSettings": {
+ "titleContent": {
+ "columnMatch": "type",
+ "formatter": 1
+ },
+ "leftContent": {
+ "columnMatch": "count_",
+ "formatter": 12,
+ "formatOptions": {
+ "palette": "auto"
+ },
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ },
+ "showBorder": true
+ },
+ "graphSettings": {
+ "type": 0,
+ "topContent": {
+ "columnMatch": "type",
+ "formatter": 1
+ },
+ "centerContent": {
+ "columnMatch": "count_",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ }
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "overview"
+ }
+ ],
+ "name": "query - Storage Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.keyvault/vaults\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, family= tostring(properties.sku.family) ,enableSoftDelete = tostring(properties.enableSoftDelete), softDeleteRetentionInDays=tostring(properties.softDeleteRetentionInDays)",
+ "size": 0,
+ "title": "Key Vault",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "enableSoftDelete",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "Resolved",
+ "text": "Enabled"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "Sev2",
+ "text": "Not Enabled"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "softDeleteRetentionInDays",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": ">=",
+ "thresholdValue": "7",
+ "representation": "1",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "is Empty",
+ "representation": "Sev2",
+ "text": "{0}Not Applicable"
+ },
+ {
+ "operator": "<",
+ "thresholdValue": "7",
+ "representation": "Sev2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "1",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Key Vault Name"
+ },
+ {
+ "columnId": "family",
+ "label": "Family"
+ },
+ {
+ "columnId": "enableSoftDelete",
+ "label": "Soft Delete"
+ },
+ {
+ "columnId": "softDeleteRetentionInDays",
+ "label": "Soft Delete Retention in Days"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "keyvault"
+ }
+ ],
+ "name": "query - Key Vault",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "5c66155e-78f1-4b2d-ab20-a63989dd9ea5",
+ "version": "KqlParameterItem/1.0",
+ "name": "Classic_Storage",
+ "label": "Classic Storage",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.classicstorage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize Total = count()\r\n| project Message = strcat('Classic Storage Accounts # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "a35d9c1a-b476-4208-a27b-07a8a3bf7b8f",
+ "version": "KqlParameterItem/1.0",
+ "name": "Standard_Storage",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize Total = count()\r\n| project Message = strcat('Standard Storage Accounts # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "f2261fb2-1f04-42cc-a0a8-059e521ab235",
+ "version": "KqlParameterItem/1.0",
+ "name": "Storage_Account_PvtEndPnt",
+ "label": "Storage_Account_PvtEndpoint",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| mv-expand privatepoint=properties.privateEndpointConnections\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name\r\n| summarize Total = count()\r\n| project Message = strcat('Standard Storage Accounts with Private Endpoint# ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ }
+ ],
+ "style": "pills",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "parameters - Storage Account Count Messages"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "{Classic_Storage}"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ },
+ {
+ "parameterName": "storageaccount",
+ "comparison": "isEqualTo",
+ "value": "classicstorage"
+ }
+ ],
+ "name": "text - Classic Storage Count Message"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.classicstorage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, SKU=tostring(properties.accountType), status= tostring(properties.provisioningState), Create_Time=tostring(properties.creationTime), Primary_Region=tostring(properties.geoPrimaryRegion), Secondary_Available=tostring(properties.statusOfSecondaryRegion), Secondary_Region=tostring(properties.geoSecondaryRegion)",
+ "size": 2,
+ "title": "Classic Storage Accounts",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "25ch"
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "status",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Create_Time",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ },
+ "dateFormat": {
+ "formatName": "shortDatePattern"
+ }
+ },
+ {
+ "columnMatch": "Primary_Region",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "Secondary_Region",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
+ }
+ },
+ {
+ "columnMatch": "Type",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Decondary_Region",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "25ch"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Storage Name"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ },
+ {
+ "parameterName": "storageaccount",
+ "comparison": "isEqualTo",
+ "value": "classicstorage"
+ }
+ ],
+ "name": "query - Classic Storage Account",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "{Standard_Storage}"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ },
+ {
+ "parameterName": "storageaccount",
+ "comparison": "isEqualTo",
+ "value": "stndstorage"
+ }
+ ],
+ "name": "text - Standard Storage Count Message"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, sku=sku.name, Tier=sku.tier, status= tostring(properties.provisioningState), Create_Time=tostring(properties.creationTime), supportsHttpsTrafficOnly=tostring(properties.supportsHttpsTrafficOnly), allowBlobPublicAccess=tostring(properties.allowBlobPublicAccess),minimumTlsVersion=tostring(properties.minimumTlsVersion), Primary_Region=tostring(properties.primaryLocation), statusOfPrimary=tostring(properties.statusOfPrimary), accessTier=tostring(properties.accessTier) ,Secondary_Available=tostring(properties.secondaryLocation), Secondary_Status=tostring(properties.statusOfSecondary)",
+ "size": 2,
+ "title": "Standard Storage Account",
+ "noDataMessage": "No Standard Storage Account found in the selected Subscription.",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "workbookContext": {
+ "componentIdSource": "column",
+ "componentId": "name",
+ "resourceIdsSource": "workbook",
+ "templateIdSource": "column",
+ "templateId": "name",
+ "typeSource": "static",
+ "type": "Community-Workbooks/Storage-Performance/Blob Storage Metrics",
+ "gallerySource": "static",
+ "gallery": "workbook",
+ "locationSource": "default"
+ },
+ "bladeOpenContext": {
+ "bladeParameters": []
+ },
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "sku",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Tier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "status",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "Create_Time",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "16ch"
+ },
+ "dateFormat": {
+ "showUtcTime": null,
+ "formatName": "shortDatePattern"
+ }
+ },
+ {
+ "columnMatch": "supportsHttpsTrafficOnly",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "1",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "false",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "allowBlobPublicAccess",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "false",
+ "representation": "Resolved",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "minimumTlsVersion",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "TLS1_2",
+ "representation": "Resolved",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "!=",
+ "thresholdValue": "TLS1_2",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Primary_Region",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "statusOfPrimary",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "accessTier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "id1",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": null,
+ "showIcon": true
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Name"
+ },
+ {
+ "columnId": "sku",
+ "label": "SKU"
+ },
+ {
+ "columnId": "status",
+ "label": "Status"
+ },
+ {
+ "columnId": "Create_Time",
+ "label": "Create Time"
+ },
+ {
+ "columnId": "supportsHttpsTrafficOnly",
+ "label": "HTTPS Only?"
+ },
+ {
+ "columnId": "allowBlobPublicAccess",
+ "label": "Public Access?"
+ },
+ {
+ "columnId": "minimumTlsVersion",
+ "label": "Min. TLS Version"
+ },
+ {
+ "columnId": "Primary_Region",
+ "label": "Primary Region"
+ },
+ {
+ "columnId": "statusOfPrimary",
+ "label": "Primary Status"
+ },
+ {
+ "columnId": "accessTier",
+ "label": "Access Tier"
+ },
+ {
+ "columnId": "Secondary_Available",
+ "label": "Secondary Region"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ },
+ {
+ "parameterName": "storageaccount",
+ "comparison": "isEqualTo",
+ "value": "stndstorage"
+ }
+ ],
+ "name": "query - Standard Storage Account",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "{Storage_Account_PvtEndPnt}"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ },
+ {
+ "parameterName": "storageaccount",
+ "comparison": "isEqualTo",
+ "value": "stndstorageendpnt"
+ }
+ ],
+ "name": "text - Standard Storage with Private Endpoint Count Message"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| mv-expand privatepoint=properties.privateEndpointConnections\r\n| project id, name, sku=sku.name, Tier=sku.tier, status= tostring(properties.provisioningState), Create_Time=tostring(properties.creationTime), supportsHttpsTrafficOnly=tostring(properties.supportsHttpsTrafficOnly), allowBlobPublicAccess=tostring(properties.allowBlobPublicAccess),minimumTlsVersion=tostring(properties.minimumTlsVersion), Primary_Region=tostring(properties.primaryLocation), statusOfPrimary=tostring(properties.statusOfPrimary), accessTier=tostring(properties.accessTier) ,Secondary_Available=tostring(properties.secondaryLocation), Secondary_Status=tostring(properties.statusOfSecondary), PrivateEndPoint=privatepoint.name",
+ "size": 2,
+ "title": "Standard Storage Account with PvtEndPoint",
+ "noDataMessage": "No Standard Storage Account with PvtEndPoint found in the selected Subscription.",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "workbookContext": {
+ "componentIdSource": "column",
+ "componentId": "name",
+ "resourceIdsSource": "workbook",
+ "templateIdSource": "column",
+ "templateId": "name",
+ "typeSource": "static",
+ "type": "Community-Workbooks/Storage-Performance/Blob Storage Metrics",
+ "gallerySource": "static",
+ "gallery": "workbook",
+ "locationSource": "default"
+ },
+ "bladeOpenContext": {
+ "bladeParameters": []
+ },
+ "customColumnWidthSetting": "30ch"
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "sku",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Tier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "status",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "Create_Time",
+ "formatter": 6,
+ "formatOptions": {
+ "customColumnWidthSetting": "16ch"
+ },
+ "dateFormat": {
+ "showUtcTime": null,
+ "formatName": "shortDatePattern"
+ }
+ },
+ {
+ "columnMatch": "supportsHttpsTrafficOnly",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "1",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "false",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "allowBlobPublicAccess",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "false",
+ "representation": "Resolved",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "minimumTlsVersion",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "TLS1_2",
+ "representation": "Resolved",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "!=",
+ "thresholdValue": "TLS1_2",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Primary_Region",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "statusOfPrimary",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "accessTier",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "id1",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": null,
+ "showIcon": true
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Name"
+ },
+ {
+ "columnId": "sku",
+ "label": "SKU"
+ },
+ {
+ "columnId": "status",
+ "label": "Status"
+ },
+ {
+ "columnId": "Create_Time",
+ "label": "Create Time"
+ },
+ {
+ "columnId": "supportsHttpsTrafficOnly",
+ "label": "HTTPS Only?"
+ },
+ {
+ "columnId": "allowBlobPublicAccess",
+ "label": "Public Access?"
+ },
+ {
+ "columnId": "minimumTlsVersion",
+ "label": "Min. TLS Version"
+ },
+ {
+ "columnId": "Primary_Region",
+ "label": "Primary Region"
+ },
+ {
+ "columnId": "statusOfPrimary",
+ "label": "Primary Status"
+ },
+ {
+ "columnId": "accessTier",
+ "label": "Access Tier"
+ },
+ {
+ "columnId": "Secondary_Available",
+ "label": "Secondary Region"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "storageaccount"
+ },
+ {
+ "parameterName": "storageaccount",
+ "comparison": "isEqualTo",
+ "value": "stndstorageendpnt"
+ }
+ ],
+ "name": "query - Standard Storage Account with PvtEndPoint",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.recoveryservices/vaults\"\r\n| extend redundancy=properties.redundancySettings\r\n| project id, name, location, SKU=sku.name, SkuTier=sku.tier,Redundancy=redundancy.standardTierStorageRedundancy, CRR=redundancy.crossRegionRestore, Status=properties.provisioningState, PublicNetworkAccess=properties.publicNetworkAccess, PvtEndpntforBackup=properties.privateEndpointStateForBackup, PvtEndpntForSiteRecovery=properties.privateEndpointStateForSiteRecovery, Storageversion=properties.backupStorageVersion ",
+ "size": 2,
+ "title": "Recovery Service Vault",
+ "noDataMessage": "No Recovery Service Vault identified",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "location",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "SKU",
+ "formatter": 1,
+ "formatOptions": {
+ "customColumnWidthSetting": "8ch"
+ }
+ },
+ {
+ "columnMatch": "SkuTier",
+ "formatter": 1,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "Redundancy",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "contains",
+ "thresholdValue": "GeoRedundant",
+ "representation": "Sev3",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "Blank",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "CRR",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "Status",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "PublicNetworkAccess",
+ "formatter": 1,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "PvtEndpntforBackup",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "contains",
+ "thresholdValue": "enabled",
+ "representation": "Sev3",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "Blank",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "PvtEndpntForSiteRecovery",
+ "formatter": 1
+ },
+ {
+ "columnMatch": "Storageversion",
+ "formatter": 1
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "RSV Name"
+ },
+ {
+ "columnId": "PvtEndpntForSiteRecovery",
+ "label": "PvtEndPntforASR"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ {
+ "parameterName": "storage",
+ "comparison": "isEqualTo",
+ "value": "rsv"
+ },
+ {
+ "parameterName": "Extended_report",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "query - Recovery Service Vault",
+ "styleSettings": {
+ "showBorder": true
+ }
+ }
+ ],
+ "exportParameters": true
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "storage"
+ },
+ "name": "group - Storage Overview"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### Network Group"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - Network Overview"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "4f2f1ef3-3ee6-403f-aa60-7dcbf3d8739e",
+ "cellValue": "network",
+ "linkTarget": "parameter",
+ "linkLabel": "Overview",
+ "subTarget": "overview",
+ "preText": "Network Overview",
+ "style": "link"
+ },
+ {
+ "id": "e3aee4aa-f1bb-4b53-86ee-e39812e1c102",
+ "cellValue": "network",
+ "linkTarget": "parameter",
+ "linkLabel": "Private DNS Zone",
+ "subTarget": "pvtdnszone",
+ "style": "link"
+ },
+ {
+ "id": "7d4d82c3-d13f-46a0-b9da-e3aeb4d3b946",
+ "cellValue": "network",
+ "linkTarget": "parameter",
+ "linkLabel": "Private Endpoint",
+ "subTarget": "pvtendpoint",
+ "style": "link"
+ },
+ {
+ "id": "0701e703-3459-4b69-a1e0-ae53935ef9f7",
+ "cellValue": "network",
+ "linkTarget": "parameter",
+ "linkLabel": "Monitor",
+ "subTarget": "networkmonitor",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "network"
+ },
+ "name": "links - Network Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "where type has \"microsoft.network\"\r\n or type has 'microsoft.cdn'\r\n| extend type = case(\r\n\ttype == 'microsoft.network/networkinterfaces', \"NICs\",\r\n\ttype == 'microsoft.network/networksecuritygroups', \"NSGs\", \r\n\ttype == \"microsoft.network/publicipaddresses\", \"Public IPs\", \r\n\ttype == 'microsoft.network/virtualnetworks', \"vNets\",\r\n\ttype == 'microsoft.network/networkwatchers/connectionmonitors', \"Connection Monitors\",\r\n\ttype == 'microsoft.network/privatednszones', \"Private DNS\",\r\n\ttype == 'microsoft.network/virtualnetworkgateways', @\"vNet Gateways\",\r\n\ttype == 'microsoft.network/connections', \"Connections\",\r\n\ttype == 'microsoft.network/networkwatchers', \"Network Watchers\",\r\n\ttype == 'microsoft.network/privateendpoints', \"Private Endpoints\",\r\n\ttype == 'microsoft.network/localnetworkgateways', \"Local Network Gateways\",\r\n\ttype == 'microsoft.network/privatednszones/virtualnetworklinks', \"vNet Links\",\r\n\ttype == 'microsoft.network/dnszones', 'DNS Zones',\r\n\ttype == 'microsoft.network/networkwatchers/flowlogs', 'Flow Logs',\r\n\ttype == 'microsoft.network/routetables', 'Route Tables',\r\n\ttype == 'microsoft.network/loadbalancers', 'Load Balancers',\r\n\ttype == 'microsoft.network/ddosprotectionplans', 'DDoS Protection Plans',\r\n\ttype == 'microsoft.network/applicationsecuritygroups', 'App Security Groups',\r\n\ttype == 'microsoft.network/azurefirewalls', 'Azure Firewalls',\r\n\ttype == 'microsoft.network/applicationgateways', 'App Gateways',\r\n\ttype == 'microsoft.network/frontdoors', 'Front Doors',\r\n\ttype == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies', 'AppGateway Policies',\r\n\ttype == 'microsoft.network/bastionhosts', 'Bastion Hosts',\r\n\ttype == 'microsoft.network/frontdoorwebapplicationfirewallpolicies', 'FrontDoor Policies',\r\n\ttype == 'microsoft.network/firewallpolicies', 'Firewall Policies',\r\n\ttype == 'microsoft.network/networkintentpolicies', 'Network Intent Policies',\r\n\ttype == 'microsoft.network/trafficmanagerprofiles', 'Traffic Manager Profiles',\r\n\ttype == 'microsoft.network/publicipprefixes', 'PublicIP Prefixes',\r\n\ttype == 'microsoft.network/privatelinkservices', 'Private Link',\r\n\ttype == 'microsoft.network/expressroutecircuits', 'Express Route Circuits',\r\n\ttype =~ 'microsoft.cdn/cdnwebapplicationfirewallpolicies', 'CDN Web App Firewall Policies',\r\n\ttype =~ 'microsoft.cdn/profiles', 'CDN Profiles',\r\n\ttype =~ 'microsoft.cdn/profiles/afdendpoints', 'CDN Front Door Endpoints',\r\n\ttype =~ 'microsoft.cdn/profiles/endpoints', 'CDN Endpoints',\r\n\tstrcat(\"Not Translated: \", type))\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type",
+ "size": 3,
+ "title": "Azure Network Overview",
+ "noDataMessage": "Something went south!",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "tileSettings": {
+ "titleContent": {
+ "columnMatch": "type",
+ "formatter": 1
+ },
+ "leftContent": {
+ "columnMatch": "count_",
+ "formatter": 12,
+ "formatOptions": {
+ "palette": "auto"
+ },
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ },
+ "showBorder": true
+ },
+ "chartSettings": {
+ "ySettings": {
+ "numberFormatSettings": {
+ "unit": 0,
+ "options": {
+ "style": "decimal",
+ "useGrouping": true
+ }
+ }
+ }
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "network"
+ },
+ {
+ "parameterName": "network",
+ "comparison": "isEqualTo",
+ "value": "overview"
+ }
+ ],
+ "name": "query - Network Overview"
+ },
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "c72755d6-9fac-458b-979a-f2ce197f6ddf",
+ "version": "KqlParameterItem/1.0",
+ "name": "Resources",
+ "label": "ExpressRoute Ckt",
+ "type": 5,
+ "isRequired": true,
+ "multiSelect": true,
+ "quote": "'",
+ "delimiter": ",",
"query": "resources\r\n| where type == \"microsoft.network/expressroutecircuits\"\r\n| order by name asc\r\n| extend Rank = row_number()\r\n| project value = id, label = id, selected = Rank <= 5",
"crossComponentResources": [
"{Subscriptions}"
@@ -6113,9 +9947,6 @@
"type": 9,
"content": {
"version": "KqlParameterItem/1.0",
- "crossComponentResources": [
- "{netappaccounts}"
- ],
"parameters": [
{
"id": "8ea902a2-94ac-4cc3-ab10-295564472aa5",
@@ -6157,7 +9988,9 @@
},
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
- "value": []
+ "value": [
+ "value::all"
+ ]
},
{
"id": "7fc91be8-c2d1-40ba-8244-2ce6a875bf26",
@@ -6182,9 +10015,7 @@
},
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
- "value": [
- "value::all"
- ]
+ "value": null
},
{
"id": "faa359a8-8409-4219-931f-9b1b07913487",
@@ -6209,17 +10040,29 @@
"showDefault": false
},
"queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "value": [
+ "value::all"
+ ]
+ },
+ {
+ "id": "5be24d67-b45d-4ef0-949b-52791fef7c74",
+ "version": "KqlParameterItem/1.0",
+ "name": "Message",
+ "type": 1,
+ "query": "resources\r\n| where type == \"microsoft.netapp/netappaccounts/capacitypools/volumes\"\r\n| summarize Selected = countif(id in ({Resources:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "6de57615-ccc6-45c4-aff6-a0729400b83d",
+ "id": "d878931a-f720-44ee-982c-9e0d56db1cd1",
"version": "KqlParameterItem/1.0",
"name": "TimeRange",
"type": 4,
- "isRequired": true,
- "value": {
- "durationMs": 1209600000
- },
"typeSettings": {
"selectableValues": [
{
@@ -6267,26 +10110,17 @@
{
"durationMs": 7776000000
}
- ]
+ ],
+ "allowCustom": true
+ },
+ "value": {
+ "durationMs": 2419200000
}
- },
- {
- "id": "5be24d67-b45d-4ef0-949b-52791fef7c74",
- "version": "KqlParameterItem/1.0",
- "name": "Message",
- "type": 1,
- "query": "resources\r\n| where type == \"microsoft.netapp/netappaccounts/capacitypools/volumes\"\r\n| summarize Selected = countif(id in ({Resources:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
}
],
"style": "pills",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
+ "queryType": 0,
+ "resourceType": "microsoft.operationalinsights/workspaces"
},
"conditionalVisibilities": [
{
@@ -6356,7 +10190,7 @@
"style": "link"
},
{
- "id": "62adc27d-77ff-4fb5-b387-fc9850af9b50",
+ "id": "38b6dd95-f686-4a72-bbe2-3c98edd3505c",
"cellValue": "anfresources",
"linkTarget": "parameter",
"linkLabel": "ANF Files Backup",
@@ -6399,7 +10233,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -6537,12 +10371,6 @@
],
"rowLimit": 10000,
"filter": true,
- "sortBy": [
- {
- "itemKey": "$gen_bar_microsoft.netapp/netappaccounts/capacitypools/volumes--VolumeConsumedSizePercentage_2",
- "sortOrder": 2
- }
- ],
"labelSettings": [
{
"columnId": "Name",
@@ -6589,13 +10417,8 @@
"label": "Throughput limit reached Timeline"
}
]
- },
- "sortBy": [
- {
- "itemKey": "$gen_bar_microsoft.netapp/netappaccounts/capacitypools/volumes--VolumeConsumedSizePercentage_2",
- "sortOrder": 2
- }
- ],
+ },
+ "sortBy": [],
"showExportToExcel": true,
"exportToExcelOptions": "all"
},
@@ -6870,7 +10693,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7389,7 +11212,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7585,7 +11408,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7645,7 +11468,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7705,7 +11528,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7766,7 +11589,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7907,7 +11730,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7949,9 +11772,9 @@
{
"type": 10,
"content": {
- "chartId": "workbookfe09636f-99f8-4e3f-9773-391f8f0e08cd",
+ "chartId": "workbookb70a4b25-faaf-4898-a7d4-50cf5508cebd",
"version": "MetricsItem/2.0",
- "size": 0,
+ "size": 3,
"chartType": 0,
"resourceType": "microsoft.netapp/netappaccounts/capacitypools/volumes",
"metricScope": 0,
@@ -7961,7 +11784,7 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 300000
+ "durationMs": 2419200000
},
"metrics": [
{
@@ -7970,21 +11793,9 @@
"aggregation": 4
}
],
- "title": "ANF Files Backup (Managed Storage Last Data Transfer)",
- "resourceLimit": 1000,
+ "title": "ANF Files Backup Overview",
"gridSettings": {
"formatters": [
- {
- "columnMatch": "Subscription",
- "formatter": 5
- },
- {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource"
- }
- },
{
"columnMatch": "Metric",
"formatter": 1
@@ -8008,6 +11819,17 @@
"unit": 2,
"options": null
}
+ },
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource"
+ }
}
],
"rowLimit": 10000,
@@ -8063,7 +11885,7 @@
"value": "anfbackup"
}
],
- "name": "metric - ANF Files Backup",
+ "name": "metric - ANF Files Backup Overview",
"styleSettings": {
"showBorder": true
}
@@ -10052,13 +13874,269 @@
"aggregation": 1
}
],
- "title": "Total Requests",
+ "title": "Total Requests",
+ "gridSettings": {
+ "rowLimit": 10000
+ },
+ "exportToExcelOptions": "all"
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ {
+ "parameterName": "configchecks",
+ "comparison": "isEqualTo",
+ "value": "appgw"
+ },
+ {
+ "parameterName": "appgw",
+ "comparison": "isEqualTo",
+ "value": "appgwmonitor"
+ }
+ ],
+ "name": "metric - Total Requests"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook6eede7d4-47b4-44d2-a257-4fc172dcae95",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 2,
+ "resourceType": "microsoft.network/applicationgateways",
+ "metricScope": 0,
+ "resourceParameter": "ApplicationGateway",
+ "resourceIds": [
+ "{ApplicationGateway}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1209600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.network/applicationgateways",
+ "metric": "microsoft.network/applicationgateways--Throughput",
+ "aggregation": 4
+ }
+ ],
+ "title": "Throughput",
+ "gridSettings": {
+ "rowLimit": 10000
+ }
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ {
+ "parameterName": "configchecks",
+ "comparison": "isEqualTo",
+ "value": "appgw"
+ },
+ {
+ "parameterName": "appgw",
+ "comparison": "isEqualTo",
+ "value": "appgwmonitor"
+ }
+ ],
+ "name": "metric - Throughput"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbookad3303bb-0b23-4743-9915-ff4f38bcb026",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 2,
+ "resourceType": "microsoft.network/applicationgateways",
+ "metricScope": 0,
+ "resourceParameter": "ApplicationGateway",
+ "resourceIds": [
+ "{ApplicationGateway}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1209600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.network/applicationgateways",
+ "metric": "microsoft.network/applicationgateways--ComputeUnits",
+ "aggregation": 4
+ }
+ ],
+ "title": "Avg Current Compute Units",
+ "gridSettings": {
+ "rowLimit": 10000
+ }
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ {
+ "parameterName": "configchecks",
+ "comparison": "isEqualTo",
+ "value": "appgw"
+ },
+ {
+ "parameterName": "appgw",
+ "comparison": "isEqualTo",
+ "value": "appgwmonitor"
+ },
+ {
+ "parameterName": "sku",
+ "comparison": "isEqualTo",
+ "value": "v2"
+ }
+ ],
+ "name": "metric - Current Compute Units"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbookd5e563c6-28cf-409d-a42d-d27c2e34ce74",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 2,
+ "resourceType": "microsoft.network/applicationgateways",
+ "metricScope": 0,
+ "resourceParameter": "ApplicationGateway",
+ "resourceIds": [
+ "{ApplicationGateway}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 1209600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.network/applicationgateways",
+ "metric": "microsoft.network/applicationgateways--HealthyHostCount",
+ "aggregation": 4
+ }
+ ],
+ "title": "Avg Health Host count",
+ "gridSettings": {
+ "rowLimit": 10000
+ },
+ "exportToExcelOptions": "all"
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ {
+ "parameterName": "configchecks",
+ "comparison": "isEqualTo",
+ "value": "appgw"
+ },
+ {
+ "parameterName": "appgw",
+ "comparison": "isEqualTo",
+ "value": "appgwmonitor"
+ },
+ {
+ "parameterName": "sku",
+ "comparison": "isEqualTo",
+ "value": "v2"
+ }
+ ],
+ "name": "metric - Healthy Host Counts"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "nav",
+ "links": [
+ {
+ "id": "192395b7-ec14-4f8d-abb9-42ebbbdb5a3e",
+ "cellValue": "appgwparameters",
+ "linkTarget": "parameter",
+ "linkLabel": "frontendIPConfigurations",
+ "subTarget": "frontendIPConfigurations",
+ "style": "link"
+ },
+ {
+ "id": "a3ebb676-0b6b-4462-bb13-e7e901cfd8cd",
+ "cellValue": "appgwparameters",
+ "linkTarget": "parameter",
+ "linkLabel": "httpListeners",
+ "subTarget": "httpListeners",
+ "style": "link"
+ },
+ {
+ "id": "073d180d-2e45-4884-be9b-740cb7c00f49",
+ "cellValue": "appgwparameters",
+ "linkTarget": "parameter",
+ "linkLabel": "backendHttpSettingsCollection",
+ "subTarget": "backendHttpSettingsCollection",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ {
+ "parameterName": "configchecks",
+ "comparison": "isEqualTo",
+ "value": "appgw"
+ },
+ {
+ "parameterName": "appgw",
+ "comparison": "isEqualTo",
+ "value": "appgwparameters"
+ }
+ ],
+ "name": "links - AppGW Parameter Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.network/applicationgateways\"\r\n| extend sku = tostring(properties.sku.name)\r\n| mv-expand frontendIPConfigurations = properties.frontendIPConfigurations\r\n| project subscriptionId\r\n, resourceGroup\r\n, AppGWName=name\r\n, location\r\n, name = tostring(frontendIPConfigurations.name)\r\n, privateIPAllocationMethod = tostring(frontendIPConfigurations.properties.privateIPAllocationMethod)\r\n// publicIPAddress = tostring(frontendIPConfigurations.properties.publicIPAddress)",
+ "size": 0,
+ "title": "frontendIPConfigurations",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
"gridSettings": {
- "rowLimit": 10000
- },
- "exportToExcelOptions": "all"
+ "formatters": [
+ {
+ "columnMatch": "subscriptionId",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 5
+ }
+ ]
+ }
},
- "customWidth": "50",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
@@ -10073,41 +14151,43 @@
{
"parameterName": "appgw",
"comparison": "isEqualTo",
- "value": "appgwmonitor"
+ "value": "appgwparameters"
+ },
+ {
+ "parameterName": "appgwparameters",
+ "comparison": "isEqualTo",
+ "value": "frontendIPConfigurations"
}
],
- "name": "metric - Total Requests"
+ "name": "query - frontendIPConfigurations",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 10,
+ "type": 3,
"content": {
- "chartId": "workbook6eede7d4-47b4-44d2-a257-4fc172dcae95",
- "version": "MetricsItem/2.0",
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.network/applicationgateways\"\r\n| extend sku = tostring(properties.sku.name)\r\n| mv-expand httpListeners = properties.httpListeners\r\n| project subscriptionId\r\n, AppGWName=name\r\n, resourceGroup\r\n, name = tostring(httpListeners.name)\r\n, protocol = tostring(httpListeners.properties.protocol)\r\n, requireServerNameIndication = tostring(httpListeners.properties.requireServerNameIndication)",
"size": 0,
- "chartType": 2,
- "resourceType": "microsoft.network/applicationgateways",
- "metricScope": 0,
- "resourceParameter": "ApplicationGateway",
- "resourceIds": [
- "{ApplicationGateway}"
- ],
- "timeContextFromParameter": "TimeRange",
- "timeContext": {
- "durationMs": 1209600000
- },
- "metrics": [
- {
- "namespace": "microsoft.network/applicationgateways",
- "metric": "microsoft.network/applicationgateways--Throughput",
- "aggregation": 4
- }
+ "title": "httpListeners",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "title": "Throughput",
+ "visualization": "table",
"gridSettings": {
- "rowLimit": 10000
+ "formatters": [
+ {
+ "columnMatch": "subscriptionId",
+ "formatter": 5
+ }
+ ]
}
},
- "customWidth": "50",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
@@ -10122,41 +14202,96 @@
{
"parameterName": "appgw",
"comparison": "isEqualTo",
- "value": "appgwmonitor"
+ "value": "appgwparameters"
+ },
+ {
+ "parameterName": "appgwparameters",
+ "comparison": "isEqualTo",
+ "value": "httpListeners"
}
],
- "name": "metric - Throughput"
+ "name": "query - httpListeners parameters",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 10,
+ "type": 3,
"content": {
- "chartId": "workbookad3303bb-0b23-4743-9915-ff4f38bcb026",
- "version": "MetricsItem/2.0",
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.network/applicationgateways\"\r\n| extend sku = tostring(properties.sku.name)\r\n| mv-expand backendHttpSettingsCollection = properties.backendHttpSettingsCollection\r\n| project subscriptionId\r\n, AppGWName=name\r\n, resourceGroup\r\n, name = tostring(backendHttpSettingsCollection.name)\r\n, provisioningState= tostring(backendHttpSettingsCollection.properties.provisioningState)\r\n, protocol = tostring(backendHttpSettingsCollection.properties.protocol)\r\n, port = tostring(backendHttpSettingsCollection.properties.port)\r\n, pickHostNameFromBackendAddress = tostring(backendHttpSettingsCollection.properties.pickHostNameFromBackendAddress)\r\n, cookieBasedAffinity = tostring(backendHttpSettingsCollection.properties.cookieBasedAffinity)\r\n, requestTimeout = tostring(backendHttpSettingsCollection.properties.requestTimeout)",
"size": 0,
- "chartType": 2,
- "resourceType": "microsoft.network/applicationgateways",
- "metricScope": 0,
- "resourceParameter": "ApplicationGateway",
- "resourceIds": [
- "{ApplicationGateway}"
- ],
- "timeContextFromParameter": "TimeRange",
- "timeContext": {
- "durationMs": 1209600000
- },
- "metrics": [
- {
- "namespace": "microsoft.network/applicationgateways",
- "metric": "microsoft.network/applicationgateways--ComputeUnits",
- "aggregation": 4
- }
+ "title": "backendHttpSettingsCollection",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "title": "Avg Current Compute Units",
"gridSettings": {
- "rowLimit": 10000
+ "formatters": [
+ {
+ "columnMatch": "subscriptionId",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "protocol",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "Https",
+ "representation": "Resolved",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "==",
+ "thresholdValue": "Http",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "requestTimeout",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "30",
+ "representation": "Resolved",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "!=",
+ "thresholdValue": "30",
+ "representation": "2",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ }
+ ]
}
},
- "customWidth": "50",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
@@ -10171,47 +14306,81 @@
{
"parameterName": "appgw",
"comparison": "isEqualTo",
- "value": "appgwmonitor"
+ "value": "appgwparameters"
},
{
- "parameterName": "sku",
+ "parameterName": "appgwparameters",
"comparison": "isEqualTo",
- "value": "v2"
+ "value": "backendHttpSettingsCollection"
}
],
- "name": "metric - Current Compute Units"
+ "name": "query - backendHttpSettingsCollection"
},
{
- "type": 10,
+ "type": 3,
"content": {
- "chartId": "workbookd5e563c6-28cf-409d-a42d-d27c2e34ce74",
- "version": "MetricsItem/2.0",
- "size": 0,
- "chartType": 2,
- "resourceType": "microsoft.network/applicationgateways",
- "metricScope": 0,
- "resourceParameter": "ApplicationGateway",
- "resourceIds": [
- "{ApplicationGateway}"
+ "version": "KqlItem/1.0",
+ "query": "resourcechanges\r\n| extend props = todynamic(properties)\r\n| extend change_date = todatetime(props.changeAttributes.timestamp)\r\n| where props.targetResourceType contains \"virtualmachines\"\r\n| extend state_info = props.changes['properties.extended.instanceView.powerState.code']\r\n| where isnull(state_info) == false\r\n| extend last_state = state_info.newValue\r\n| extend previous_state = state_info.previousValue\r\n| summarize arg_max(change_date,*) by tostring(props.targetResourceId)\r\n| where last_state == \"PowerState/deallocated\"\r\n| project id1=props.targetResourceId, VMName=tostring(split(props.targetResourceId,\"/\",8)[0]), state_info=(split(last_state,\"/\",1)[0]), previous_state, last_state, change_date, location, resourceGroup",
+ "size": 2,
+ "title": "VM's transitioned into deallocated status in last 14 days",
+ "noDataMessage": "No VM found!",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "timeContextFromParameter": "TimeRange",
- "timeContext": {
- "durationMs": 1209600000
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id1",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "VMName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "sortBy": [
+ {
+ "itemKey": "$gen_link_last_state_4",
+ "sortOrder": 1
+ }
+ ],
+ "labelSettings": [
+ {
+ "columnId": "id1",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ }
+ ]
},
- "metrics": [
+ "sortBy": [
{
- "namespace": "microsoft.network/applicationgateways",
- "metric": "microsoft.network/applicationgateways--HealthyHostCount",
- "aggregation": 4
+ "itemKey": "$gen_link_last_state_4",
+ "sortOrder": 1
}
- ],
- "title": "Avg Health Host count",
- "gridSettings": {
- "rowLimit": 10000
- },
- "exportToExcelOptions": "all"
+ ]
},
- "customWidth": "50",
"conditionalVisibilities": [
{
"parameterName": "SelectedTab",
@@ -10221,638 +14390,798 @@
{
"parameterName": "configchecks",
"comparison": "isEqualTo",
- "value": "appgw"
- },
- {
- "parameterName": "appgw",
- "comparison": "isEqualTo",
- "value": "appgwmonitor"
- },
- {
- "parameterName": "sku",
- "comparison": "isEqualTo",
- "value": "v2"
+ "value": "deallocated"
}
],
- "name": "metric - Healthy Host Counts"
- },
+ "name": "query - VM's in deallocated status",
+ "styleSettings": {
+ "showBorder": true
+ }
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ "name": "group - Configuration Checks"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### Minitoring Group"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - Monitoring & Security"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
{
- "type": 11,
+ "type": 12,
"content": {
- "version": "LinkItem/1.0",
- "style": "nav",
- "links": [
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
{
- "id": "192395b7-ec14-4f8d-abb9-42ebbbdb5a3e",
- "cellValue": "appgwparameters",
- "linkTarget": "parameter",
- "linkLabel": "frontendIPConfigurations",
- "subTarget": "frontendIPConfigurations",
- "style": "link"
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "dc57b0b5-7a55-4c09-80fa-67e563f616bf",
+ "version": "KqlParameterItem/1.0",
+ "name": "VirtualMachines",
+ "type": 5,
+ "isRequired": true,
+ "multiSelect": true,
+ "quote": "'",
+ "delimiter": ",",
+ "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n\t| order by name asc\r\n\t| extend Rank = row_number()\r\n\t| project value = id, label = id, selected = Rank <= 25",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "typeSettings": {
+ "additionalResourceOptions": [
+ "value::5",
+ "value::all"
+ ],
+ "selectAllValue": "",
+ "showDefault": false
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "defaultValue": "value::5",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "d363d4b7-17ff-4aba-a14d-be338fdb42ad",
+ "version": "KqlParameterItem/1.0",
+ "name": "TimeRange",
+ "type": 4,
+ "value": {
+ "durationMs": 1209600000
+ },
+ "typeSettings": {
+ "selectableValues": [
+ {
+ "durationMs": 300000
+ },
+ {
+ "durationMs": 900000
+ },
+ {
+ "durationMs": 1800000
+ },
+ {
+ "durationMs": 3600000
+ },
+ {
+ "durationMs": 14400000
+ },
+ {
+ "durationMs": 43200000
+ },
+ {
+ "durationMs": 86400000
+ },
+ {
+ "durationMs": 172800000
+ },
+ {
+ "durationMs": 259200000
+ },
+ {
+ "durationMs": 604800000
+ },
+ {
+ "durationMs": 1209600000
+ },
+ {
+ "durationMs": 2419200000
+ },
+ {
+ "durationMs": 2592000000
+ },
+ {
+ "durationMs": 5184000000
+ },
+ {
+ "durationMs": 7776000000
+ }
+ ],
+ "allowCustom": true
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ }
+ },
+ {
+ "id": "45cbb9f2-adb3-4541-bfe1-0b631f683136",
+ "version": "KqlParameterItem/1.0",
+ "name": "Message",
+ "type": 1,
+ "query": "where type == 'microsoft.compute/virtualmachines' \r\n| summarize Selected = countif(id in ({VirtualMachines:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ }
+ ],
+ "style": "above",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ "name": "parameters - Monitoring Overview"
},
{
- "id": "a3ebb676-0b6b-4462-bb13-e7e901cfd8cd",
- "cellValue": "appgwparameters",
- "linkTarget": "parameter",
- "linkLabel": "httpListeners",
- "subTarget": "httpListeners",
- "style": "link"
+ "type": 1,
+ "content": {
+ "json": "{Message}\r\n_Virtual machines_"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ "name": "Virtual Machine count"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "a3a9fa69-c558-4102-b3cb-584449380f19",
+ "cellValue": "monitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Overview",
+ "subTarget": "overview",
+ "style": "link"
+ },
+ {
+ "id": "a9dcfa57-302a-4e37-871f-9affa3ba62b3",
+ "cellValue": "monitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Key Metrics",
+ "subTarget": "keymetrics",
+ "style": "link"
+ },
+ {
+ "id": "e151c48d-8dcb-48d9-8969-cb0c22013d83",
+ "cellValue": "monitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Regions",
+ "subTarget": "regions",
+ "style": "link"
+ },
+ {
+ "id": "025b5940-686e-4f97-95f5-cbc6f6f46d53",
+ "cellValue": "monitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Azure Resource Health",
+ "subTarget": "health",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ "name": "links - Monitoring overview"
},
{
- "id": "073d180d-2e45-4884-be9b-740cb7c00f49",
- "cellValue": "appgwparameters",
- "linkTarget": "parameter",
- "linkLabel": "backendHttpSettingsCollection",
- "subTarget": "backendHttpSettingsCollection",
- "style": "link"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- {
- "parameterName": "configchecks",
- "comparison": "isEqualTo",
- "value": "appgw"
- },
- {
- "parameterName": "appgw",
- "comparison": "isEqualTo",
- "value": "appgwparameters"
- }
- ],
- "name": "links - AppGW Parameter Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.network/applicationgateways\"\r\n| extend sku = tostring(properties.sku.name)\r\n| mv-expand frontendIPConfigurations = properties.frontendIPConfigurations\r\n| project subscriptionId\r\n, resourceGroup\r\n, AppGWName=name\r\n, location\r\n, name = tostring(frontendIPConfigurations.name)\r\n, privateIPAllocationMethod = tostring(frontendIPConfigurations.properties.privateIPAllocationMethod)\r\n// publicIPAddress = tostring(frontendIPConfigurations.properties.publicIPAddress)",
- "size": 0,
- "title": "frontendIPConfigurations",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "table",
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "subscriptionId",
- "formatter": 5
- },
- {
- "columnMatch": "resourceGroup",
- "formatter": 5
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- {
- "parameterName": "configchecks",
- "comparison": "isEqualTo",
- "value": "appgw"
- },
- {
- "parameterName": "appgw",
- "comparison": "isEqualTo",
- "value": "appgwparameters"
- },
- {
- "parameterName": "appgwparameters",
- "comparison": "isEqualTo",
- "value": "frontendIPConfigurations"
- }
- ],
- "name": "query - frontendIPConfigurations",
- "styleSettings": {
- "showBorder": true
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.network/applicationgateways\"\r\n| extend sku = tostring(properties.sku.name)\r\n| mv-expand httpListeners = properties.httpListeners\r\n| project subscriptionId\r\n, AppGWName=name\r\n, resourceGroup\r\n, name = tostring(httpListeners.name)\r\n, protocol = tostring(httpListeners.properties.protocol)\r\n, requireServerNameIndication = tostring(httpListeners.properties.requireServerNameIndication)",
- "size": 0,
- "title": "httpListeners",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "table",
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "subscriptionId",
- "formatter": 5
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- {
- "parameterName": "configchecks",
- "comparison": "isEqualTo",
- "value": "appgw"
- },
- {
- "parameterName": "appgw",
- "comparison": "isEqualTo",
- "value": "appgwparameters"
- },
- {
- "parameterName": "appgwparameters",
- "comparison": "isEqualTo",
- "value": "httpListeners"
- }
- ],
- "name": "query - httpListeners parameters",
- "styleSettings": {
- "showBorder": true
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.network/applicationgateways\"\r\n| extend sku = tostring(properties.sku.name)\r\n| mv-expand backendHttpSettingsCollection = properties.backendHttpSettingsCollection\r\n| project subscriptionId\r\n, AppGWName=name\r\n, resourceGroup\r\n, name = tostring(backendHttpSettingsCollection.name)\r\n, provisioningState= tostring(backendHttpSettingsCollection.properties.provisioningState)\r\n, protocol = tostring(backendHttpSettingsCollection.properties.protocol)\r\n, port = tostring(backendHttpSettingsCollection.properties.port)\r\n, pickHostNameFromBackendAddress = tostring(backendHttpSettingsCollection.properties.pickHostNameFromBackendAddress)\r\n, cookieBasedAffinity = tostring(backendHttpSettingsCollection.properties.cookieBasedAffinity)\r\n, requestTimeout = tostring(backendHttpSettingsCollection.properties.requestTimeout)",
- "size": 0,
- "title": "backendHttpSettingsCollection",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "subscriptionId",
- "formatter": 5
+ "type": 10,
+ "content": {
+ "chartId": "workbook883c1316-9988-4bc5-8de8-cbbb39a00924",
+ "version": "MetricsItem/2.0",
+ "size": 2,
+ "chartType": -3,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContext": {
+ "durationMs": 3600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4
+ }
+ ],
+ "title": "Virtual Machine CPU Usage",
+ "graphSettings": {
+ "type": 2,
+ "topContent": {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": false
+ }
+ },
+ "centerContent": {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 12,
+ "formatOptions": {
+ "palette": "blue",
+ "linkTarget": "WorkbookTemplate",
+ "linkIsContextBlade": true,
+ "workbookContext": {
+ "componentIdSource": "column",
+ "componentId": "Name",
+ "resourceIdsSource": "column",
+ "resourceIds": "Name",
+ "templateIdSource": "static",
+ "templateId": "Community-Workbooks/Virtual Machines/Virtual machine details",
+ "typeSource": "static",
+ "type": "workbook",
+ "gallerySource": "static",
+ "gallery": "microsoft.compute/virtualmachines",
+ "locationSource": "default"
+ }
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal",
+ "maximumFractionDigits": 2,
+ "maximumSignificantDigits": 3
+ }
+ }
+ },
+ "hivesContent": {
+ "columnMatch": "Subscription",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true
+ }
+ },
+ "nodeIdField": "Name",
+ "graphOrientation": 3,
+ "showOrientationToggles": false,
+ "nodeSize": null,
+ "staticNodeSize": 100,
+ "colorSettings": {
+ "nodeColorField": "microsoft.compute/virtualmachines--Percentage CPU",
+ "type": 4,
+ "heatmapPalette": "greenRed",
+ "heatmapMin": 30,
+ "heatmapMax": 80,
+ "emptyValueColor": "gray"
+ },
+ "groupByField": "Subscription",
+ "hivesMargin": 5
+ },
+ "resourceLimit": 10000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "sortBy": [
+ {
+ "itemKey": "$gen_number_microsoft.compute/virtualmachines--Percentage CPU_2",
+ "sortOrder": 1
+ }
+ ],
+ "labelSettings": [
+ {
+ "columnId": "Name",
+ "label": "Virtual Machine "
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
+ "label": "Percentage CPU (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "label": "Percentage CPU Timeline"
+ }
+ ]
+ },
+ "sortBy": [
+ {
+ "itemKey": "$gen_number_microsoft.compute/virtualmachines--Percentage CPU_2",
+ "sortOrder": 1
+ }
+ ],
+ "exportToExcelOptions": "all"
},
- {
- "columnMatch": "protocol",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ {
+ "parameterName": "monitor",
+ "comparison": "isEqualTo",
+ "value": "overview"
+ }
+ ],
+ "name": "metric - VM CPU Overview"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "💡 _Click on the CPU usage metric in a cell to see more details about the virtual machine_\r\n
"
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ {
+ "parameterName": "monitor",
+ "comparison": "isEqualTo",
+ "value": "overview"
+ }
+ ],
+ "name": "text - VM CPU Usage tip"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbookecda832e-ec26-4656-a8f4-6edc293590cc",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContext": {
+ "durationMs": 3600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "aggregation": 4
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Disk Read Bytes",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Disk Write Bytes",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network In Total",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network Out Total",
+ "aggregation": 1
+ }
+ ],
+ "title": "VM Monitoring Key Metrics",
+ "resourceLimit": 10000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "$gen_group",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 21,
+ "formatOptions": {
+ "min": 0,
+ "palette": "blue"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes",
+ "formatter": 8,
+ "formatOptions": {
+ "min": 0,
+ "palette": "orange",
+ "workbookContext": {
+ "componentIdSource": "column",
+ "componentId": "Name",
+ "resourceIdsSource": "column",
+ "resourceIds": "Name",
+ "templateIdSource": "static",
+ "templateId": "Community-Workbooks/Virtual Machines/Virtual machine details",
+ "typeSource": "static",
+ "type": "workbook",
+ "gallerySource": "static",
+ "gallery": "microsoft.compute/virtualmachines",
+ "locationSource": "default"
+ }
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "orange"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "yellow"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "yellow"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
{
- "operator": "==",
- "thresholdValue": "Https",
- "representation": "Resolved",
- "text": "{0}{1}"
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "formatter": 5
},
{
- "operator": "==",
- "thresholdValue": "Http",
- "representation": "2",
- "text": "{0}{1}"
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "formatter": 5
},
{
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 2,
+ "options": null
+ }
}
- ]
- }
- },
- {
- "columnMatch": "requestTimeout",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "hierarchySettings": {
+ "treeType": 1,
+ "groupBy": [
+ "Subscription"
+ ],
+ "expandTopLevel": true,
+ "finalBy": "Name"
+ },
+ "labelSettings": [
{
- "operator": "==",
- "thresholdValue": "30",
- "representation": "Resolved",
- "text": "{0}{1}"
+ "columnId": "Name",
+ "label": "Storage Name"
},
{
- "operator": "!=",
- "thresholdValue": "30",
- "representation": "2",
- "text": "{0}{1}"
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
+ "label": "Percentage CPU (Average)"
},
{
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- {
- "parameterName": "configchecks",
- "comparison": "isEqualTo",
- "value": "appgw"
- },
- {
- "parameterName": "appgw",
- "comparison": "isEqualTo",
- "value": "appgwparameters"
- },
- {
- "parameterName": "appgwparameters",
- "comparison": "isEqualTo",
- "value": "backendHttpSettingsCollection"
- }
- ],
- "name": "query - backendHttpSettingsCollection"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resourcechanges\r\n| extend props = todynamic(properties)\r\n| extend change_date = todatetime(props.changeAttributes.timestamp)\r\n| where props.targetResourceType contains \"virtualmachines\"\r\n| extend state_info = props.changes['properties.extended.instanceView.powerState.code']\r\n| where isnull(state_info) == false\r\n| extend last_state = state_info.newValue\r\n| extend previous_state = state_info.previousValue\r\n| summarize arg_max(change_date,*) by tostring(props.targetResourceId)\r\n| where last_state == \"PowerState/deallocated\"\r\n| project id1=props.targetResourceId, VMName=tostring(split(props.targetResourceId,\"/\",8)[0]), state_info=(split(last_state,\"/\",1)[0]), previous_state, last_state, change_date, location, resourceGroup",
- "size": 2,
- "title": "VM's transitioned into deallocated status in last 14 days",
- "noDataMessage": "No VM found!",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id1",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true
- }
- },
- {
- "columnMatch": "VMName",
- "formatter": 5
- },
- {
- "columnMatch": "name",
- "formatter": 5
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id1",
- "label": "VM Name"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- {
- "parameterName": "configchecks",
- "comparison": "isEqualTo",
- "value": "deallocated"
- }
- ],
- "name": "query - VM's in deallocated status",
- "styleSettings": {
- "showBorder": true
- }
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- "name": "group - Configuration Checks"
- },
- {
- "type": 1,
- "content": {
- "json": "### Minitoring Group"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
- },
- "name": "text - Monitoring & Security"
- },
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 9,
- "content": {
- "version": "KqlParameterItem/1.0",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "parameters": [
- {
- "id": "dc57b0b5-7a55-4c09-80fa-67e563f616bf",
- "version": "KqlParameterItem/1.0",
- "name": "VirtualMachines",
- "type": 5,
- "isRequired": true,
- "multiSelect": true,
- "quote": "'",
- "delimiter": ",",
- "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n\t| order by name asc\r\n\t| extend Rank = row_number()\r\n\t| project value = id, label = id, selected = Rank <= 25",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "typeSettings": {
- "additionalResourceOptions": [
- "value::5",
- "value::all"
- ],
- "selectAllValue": "",
- "showDefault": false
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "label": "Percentage CPU Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "label": "Available Memory Bytes (Preview) (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "label": "Available Memory Bytes (Preview) Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes",
+ "label": "Disk Read Bytes (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
+ "label": "Disk Read Bytes Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes",
+ "label": "Disk Write Bytes (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
+ "label": "Disk Write Bytes Timeline"
},
- "timeContext": {
- "durationMs": 86400000
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total",
+ "label": "Network In Total (Sum)"
},
- "defaultValue": "value::5",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
- {
- "id": "d363d4b7-17ff-4aba-a14d-be338fdb42ad",
- "version": "KqlParameterItem/1.0",
- "name": "TimeRange",
- "type": 4,
- "value": {
- "durationMs": 1209600000
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "label": "Network In Total Timeline"
},
- "typeSettings": {
- "selectableValues": [
- {
- "durationMs": 300000
- },
- {
- "durationMs": 900000
- },
- {
- "durationMs": 1800000
- },
- {
- "durationMs": 3600000
- },
- {
- "durationMs": 14400000
- },
- {
- "durationMs": 43200000
- },
- {
- "durationMs": 86400000
- },
- {
- "durationMs": 172800000
- },
- {
- "durationMs": 259200000
- },
- {
- "durationMs": 604800000
- },
- {
- "durationMs": 1209600000
- },
- {
- "durationMs": 2419200000
- },
- {
- "durationMs": 2592000000
- },
- {
- "durationMs": 5184000000
- },
- {
- "durationMs": 7776000000
- }
- ],
- "allowCustom": true
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total",
+ "label": "Network Out Total (Sum)"
},
- "timeContext": {
- "durationMs": 86400000
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "label": "Network Out Total Timeline"
}
- },
- {
- "id": "45cbb9f2-adb3-4541-bfe1-0b631f683136",
- "version": "KqlParameterItem/1.0",
- "name": "Message",
- "type": 1,
- "query": "where type == 'microsoft.compute/virtualmachines' \r\n| summarize Selected = countif(id in ({VirtualMachines:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
- },
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- }
- ],
- "style": "above",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
+ ]
+ },
+ "showExportToExcel": true
},
- "name": "parameters - Monitoring Overview"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ {
+ "parameterName": "monitor",
+ "comparison": "isEqualTo",
+ "value": "keymetrics"
+ }
+ ],
+ "name": "metric - Monitroing Key Metrics"
},
{
"type": 1,
"content": {
- "json": "{Message}\r\n_Virtual machines_"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
+ "json": "💡 Click on the CPU utilization cells to zoom into the metrics of the virtual machine\r\n\r\n"
},
- "name": "Virtual Machine count"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ {
+ "parameterName": "monitor",
+ "comparison": "isEqualTo",
+ "value": "keymetrics"
+ }
+ ],
+ "name": "text - VM Key Metrics Tip"
},
{
- "type": 11,
+ "type": 10,
"content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "a3a9fa69-c558-4102-b3cb-584449380f19",
- "cellValue": "monitor",
- "linkTarget": "parameter",
- "linkLabel": "Overview",
- "subTarget": "overview",
- "style": "link"
- },
- {
- "id": "a9dcfa57-302a-4e37-871f-9affa3ba62b3",
- "cellValue": "monitor",
- "linkTarget": "parameter",
- "linkLabel": "Key Metrics",
- "subTarget": "keymetrics",
- "style": "link"
- },
+ "chartId": "workbook75b48d2b-8309-42cd-9064-f1953fb648d8",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": -2,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContext": {
+ "durationMs": 3600000
+ },
+ "metrics": [
{
- "id": "e151c48d-8dcb-48d9-8969-cb0c22013d83",
- "cellValue": "monitor",
- "linkTarget": "parameter",
- "linkLabel": "Regions",
- "subTarget": "regions",
- "style": "link"
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4
+ }
+ ],
+ "title": "Azure deployment across regions",
+ "mapSettings": {
+ "locInfo": "AzureResource",
+ "locInfoColumn": "Name",
+ "sizeSettings": "Name",
+ "sizeAggregation": "Count",
+ "legendMetric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "legendAggregation": "Max",
+ "itemColorSettings": {
+ "nodeColorField": "microsoft.compute/virtualmachines--Percentage CPU",
+ "colorAggregation": "Max",
+ "type": "heatmap",
+ "heatmapPalette": "greenRed",
+ "heatmapMin": 30,
+ "heatmapMax": 80
},
- {
- "id": "025b5940-686e-4f97-95f5-cbc6f6f46d53",
- "cellValue": "monitor",
- "linkTarget": "parameter",
- "linkLabel": "Azure Resource Health",
- "subTarget": "health",
- "style": "link"
+ "numberFormatSettings": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
- ]
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
+ },
+ "gridSettings": {
+ "rowLimit": 10000
+ },
+ "showExportToExcel": true
},
- "name": "links - Monitoring overview"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ {
+ "parameterName": "monitor",
+ "comparison": "isEqualTo",
+ "value": "regions"
+ }
+ ],
+ "name": "metric - region overview"
},
{
- "type": 10,
+ "type": 3,
"content": {
- "chartId": "workbook883c1316-9988-4bc5-8de8-cbbb39a00924",
- "version": "MetricsItem/2.0",
+ "version": "KqlItem/1.0",
+ "query": "{\"version\":\"AzureHealthQuery/1.0\",\"queryType\":\"Detailed\"}",
"size": 2,
- "chartType": -3,
- "resourceType": "microsoft.compute/virtualmachines",
- "metricScope": 0,
- "resourceParameter": "VirtualMachines",
- "resourceIds": [
+ "title": "Virtual Machine Health",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 4,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "crossComponentResources": [
"{VirtualMachines}"
],
- "timeContext": {
- "durationMs": 3600000
- },
- "metrics": [
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Percentage CPU",
- "aggregation": 4
- }
- ],
- "title": "Virtual Machine CPU Usage",
+ "visualization": "graph",
"graphSettings": {
"type": 2,
"topContent": {
+ "columnMatch": "Availability state",
+ "formatter": 1
+ },
+ "centerContent": {
"columnMatch": "Name",
"formatter": 13,
"formatOptions": {
"linkTarget": "Resource",
+ "subTarget": "resourcehealth",
"showIcon": false
}
},
- "centerContent": {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
- "formatter": 12,
- "formatOptions": {
- "palette": "blue",
- "linkTarget": "WorkbookTemplate",
- "linkIsContextBlade": true,
- "workbookContext": {
- "componentIdSource": "column",
- "componentId": "Name",
- "resourceIdsSource": "column",
- "resourceIds": "Name",
- "templateIdSource": "static",
- "templateId": "Community-Workbooks/Virtual Machines/Virtual machine details",
- "typeSource": "static",
- "type": "workbook",
- "gallerySource": "static",
- "gallery": "microsoft.compute/virtualmachines",
- "locationSource": "default"
- }
- },
- "numberFormat": {
- "unit": 1,
- "options": {
- "style": "decimal",
- "maximumFractionDigits": 2,
- "maximumSignificantDigits": 3
- }
- }
- },
- "hivesContent": {
- "columnMatch": "Subscription",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "showIcon": true
- }
+ "bottomContent": {
+ "columnMatch": "Reason type",
+ "formatter": 1
},
"nodeIdField": "Name",
"graphOrientation": 3,
@@ -10860,78 +15189,43 @@
"nodeSize": null,
"staticNodeSize": 100,
"colorSettings": {
- "nodeColorField": "microsoft.compute/virtualmachines--Percentage CPU",
- "type": 4,
- "heatmapPalette": "greenRed",
- "heatmapMin": 30,
- "heatmapMax": 80,
- "emptyValueColor": "gray"
+ "nodeColorField": "Availability state",
+ "type": 3,
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "Available",
+ "representation": "green"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "orange"
+ }
+ ]
},
- "groupByField": "Subscription",
"hivesMargin": 5
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
},
- "resourceLimit": 10000,
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "Subscription",
- "formatter": 5
- },
- {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "showIcon": true
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
- "formatter": 1,
- "numberFormat": {
- "unit": 1,
- "options": {
- "style": "decimal"
- }
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- }
- }
- ],
- "rowLimit": 10000,
- "sortBy": [
- {
- "itemKey": "$gen_number_microsoft.compute/virtualmachines--Percentage CPU_2",
- "sortOrder": 1
- }
- ],
- "labelSettings": [
- {
- "columnId": "Name",
- "label": "Virtual Machine "
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
- "label": "Percentage CPU (Average)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
- "label": "Percentage CPU Timeline"
- }
- ]
- },
- "sortBy": [
- {
- "itemKey": "$gen_number_microsoft.compute/virtualmachines--Percentage CPU_2",
- "sortOrder": 1
- }
- ],
- "exportToExcelOptions": "all"
+ {
+ "parameterName": "monitor",
+ "comparison": "isEqualTo",
+ "value": "health"
+ }
+ ],
+ "showPin": true,
+ "name": "query - VM Resource Health"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "💡 _Click on the virtual machine name to see more details about the resource health_\r\n
\r\n
\r\nLearn about [Azure resource health](https://docs.microsoft.com/en-us/azure/service-health/resource-health-overview)"
},
"conditionalVisibilities": [
{
@@ -10942,694 +15236,1306 @@
{
"parameterName": "monitor",
"comparison": "isEqualTo",
- "value": "overview"
+ "value": "health"
+ }
+ ],
+ "name": "text - VM Resource Health tip"
+ }
+ ]
+ },
+ "name": "group - 17"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "💡 _Standard Load Balancer for SAP (A)SCS best practices_\r\n\r\nThe keep alive functionality will prevent Azure ILB time out.\r\n\r\nSettings on Azure Basic ILB\r\n\r\nMake sure that ALL Azure ILB Load Balancing Rules have:\r\n\r\nIdle timeout (minutes) settings, set to the maximum value of 30 minutes.\r\nFloating IP (direct server return) must be Enabled\r\n\r\nNOTE: You can enable Floating IP only during creation of an Azure ILB rule. Therefore, if Floating IP is disabled for an existing Azure ILB rules, you need to delete the Azure ILB rule and create them again with option \"Enable Floating IP\".\r\n \r\nSettings on Windows Failover Cluster\r\nMake sure to create these two registry entries on BOTH ASCS /SCS cluster nodes:\r\n\r\nNOTE: To activate these changes, you need to reboot the Windows cluster nodes."
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "configchecks"
+ },
+ {
+ "parameterName": "configchecks",
+ "comparison": "isEqualTo",
+ "value": "standlb"
+ },
+ {
+ "parameterName": "Help",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ }
+ ],
+ "name": "text - Load Balancer help"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "monitor"
+ },
+ "name": "group - Monitoring & Security"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### Security"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - Security Group"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "SecurityResources\r\n| where type == 'microsoft.security/securescores/securescorecontrols'\r\n| extend controlName=properties.displayName,\r\n\tcontrolId=properties.definition.name,\r\n\tnotApplicableResourceCount=properties.notApplicableResourceCount,\r\n\tunhealthyResourceCount=properties.unhealthyResourceCount,\r\n\thealthyResourceCount=properties.healthyResourceCount,\r\n\tpercentageScore=properties.score.percentage,\r\n\tcurrentScore=properties.score.current,\r\n\tmaxScore=properties.definition.properties.maxScore,\r\n\tweight=properties.weight,\r\n\tcontrolType=properties.definition.properties.source.sourceType,\r\n\tcontrolRecommendationIds=properties.definition.properties.assessmentDefinitions\r\n| project tenantId, subscriptionId, controlName, controlId, unhealthyResourceCount, healthyResourceCount, notApplicableResourceCount, percentageScore, currentScore, maxScore, weight, controlType, controlRecommendationIds",
+ "size": 0,
+ "title": "Security Overview",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "$gen_group",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": true
}
+ },
+ {
+ "columnMatch": "tenantId",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "subscriptionId",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "controlName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "controlId",
+ "formatter": 5
+ }
+ ],
+ "filter": true,
+ "hierarchySettings": {
+ "treeType": 1,
+ "groupBy": [
+ "subscriptionId"
],
- "name": "metric - VM CPU Overview"
+ "expandTopLevel": true,
+ "finalBy": "controlName"
+ }
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "No"
+ },
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "security"
+ }
+ ],
+ "name": "query - security"
+ }
+ ]
+ },
+ "name": "group - security"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### SAP"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - SAP Overview"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "f813f331-ea12-4570-b1ef-474b35952b77",
+ "cellValue": "SAP",
+ "linkTarget": "parameter",
+ "linkLabel": "Overview",
+ "subTarget": "overview",
+ "style": "link"
+ },
+ {
+ "id": "efd7256b-8032-4c88-bedd-748f04be4a11",
+ "cellValue": "SAP",
+ "linkTarget": "parameter",
+ "linkLabel": "Instance",
+ "subTarget": "Instance",
+ "style": "link"
},
{
+ "id": "fc4741ab-393a-478e-895a-1b9418349e03",
+ "cellValue": "SAP",
+ "linkTarget": "parameter",
+ "linkLabel": "SAP_SID",
+ "subTarget": "SID_SAP",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAP"
+ },
+ "name": "links - 2"
+ },
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "aa91df3e-9123-440e-9045-a6dea696d0c7",
+ "version": "KqlParameterItem/1.0",
+ "name": "SAP_Instance",
"type": 1,
- "content": {
- "json": "💡 _Click on the CPU usage metric in a cell to see more details about the virtual machine_\r\n
"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
- },
- {
- "parameterName": "monitor",
- "comparison": "isEqualTo",
- "value": "overview"
- }
+ "isRequired": true,
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| summarize Total = count()\r\n| project Message = strcat('SAP Instances # ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
],
- "name": "text - VM CPU Usage tip"
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "type": 10,
- "content": {
- "chartId": "workbookecda832e-ec26-4656-a8f4-6edc293590cc",
- "version": "MetricsItem/2.0",
- "size": 0,
- "chartType": 0,
- "resourceType": "microsoft.compute/virtualmachines",
- "metricScope": 0,
- "resourceParameter": "VirtualMachines",
- "resourceIds": [
- "{VirtualMachines}"
+ "id": "f876133a-d017-4735-a59b-148a5d8ea15e",
+ "version": "KqlParameterItem/1.0",
+ "name": "system_SID",
+ "type": 5,
+ "isRequired": true,
+ "multiSelect": true,
+ "quote": "'",
+ "delimiter": ",",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| order by name asc\r\n| extend Rank = row_number()\r\n| project value = name, label = name, selected = Rank <= 5",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "typeSettings": {
+ "additionalResourceOptions": [
+ "value::1",
+ "value::all"
],
- "timeContext": {
- "durationMs": 3600000
- },
- "metrics": [
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Percentage CPU",
- "aggregation": 4
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Available Memory Bytes",
- "aggregation": 4
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Disk Read Bytes",
- "aggregation": 1
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Disk Write Bytes",
- "aggregation": 1
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Network In Total",
- "aggregation": 1
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Network Out Total",
- "aggregation": 1
+ "showDefault": false
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "defaultValue": "value::1",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ }
+ ],
+ "style": "above",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAP"
+ },
+ "name": "parameters - SAP"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, Landscape= tostring(properties.environment), type = tostring(split(type,\"/\",1)[0]) , configtype= tostring(properties.configuration.configurationType), sapProduct = properties.sapProduct",
+ "size": 0,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAP"
+ },
+ {
+ "parameterName": "SAP",
+ "comparison": "isEqualTo",
+ "value": "SID_SAP"
+ }
+ ],
+ "name": "query - 4"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| project SID = tostring(split(id,\"/\",8)[0]), id, hostname=properties.hostname , InstanceNumber= properties.instanceNo, Instancename=name, type = tostring(split(type,\"/\",2)[0]), SAPKernel= properties.kernelVersion, SAPkernelPatch= properties.kernelPatch, resourceGroup, location, tags",
+ "size": 0,
+ "title": "SAP Instances",
+ "noDataMessage": "No SAP Instance exist",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "InstanceNumber",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "style": "decimal",
+ "useGrouping": false,
+ "minimumIntegerDigits": 2
}
- ],
- "title": "VM Monitoring Key Metrics",
- "resourceLimit": 10000,
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "$gen_group",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "showIcon": true
- }
- },
- {
- "columnMatch": "Subscription",
- "formatter": 5
- },
- {
- "columnMatch": "Name",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
- "numberFormat": {
- "unit": 1,
- "options": {
- "style": "decimal"
- }
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
- "formatter": 21,
- "formatOptions": {
- "min": 0,
- "palette": "blue"
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes",
- "formatter": 8,
- "formatOptions": {
- "min": 0,
- "palette": "orange",
- "workbookContext": {
- "componentIdSource": "column",
- "componentId": "Name",
- "resourceIdsSource": "column",
- "resourceIds": "Name",
- "templateIdSource": "static",
- "templateId": "Community-Workbooks/Virtual Machines/Virtual machine details",
- "typeSource": "static",
- "type": "workbook",
- "gallerySource": "static",
- "gallery": "microsoft.compute/virtualmachines",
- "locationSource": "default"
- }
- },
- "numberFormat": {
- "unit": 2,
- "options": {
- "style": "decimal"
- }
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes",
- "formatter": 8,
- "formatOptions": {
- "palette": "orange"
- },
- "numberFormat": {
- "unit": 2,
- "options": {
- "style": "decimal"
- }
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network In Total",
- "formatter": 8,
- "formatOptions": {
- "palette": "yellow"
- },
- "numberFormat": {
- "unit": 2,
- "options": {
- "style": "decimal"
- }
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network In Total Timeline",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
- "formatter": 8,
- "formatOptions": {
- "palette": "yellow"
- },
- "numberFormat": {
- "unit": 2,
- "options": {
- "style": "decimal"
- }
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network Out Total Timeline",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
- "formatter": 1,
- "numberFormat": {
- "unit": 2,
- "options": null
- }
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "hierarchySettings": {
- "treeType": 1,
- "groupBy": [
- "Subscription"
- ],
- "expandTopLevel": true,
- "finalBy": "Name"
- },
- "labelSettings": [
- {
- "columnId": "Name",
- "label": "Storage Name"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
- "label": "Percentage CPU (Average)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
- "label": "Percentage CPU Timeline"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes",
- "label": "Available Memory Bytes (Preview) (Average)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
- "label": "Available Memory Bytes (Preview) Timeline"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes",
- "label": "Disk Read Bytes (Sum)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
- "label": "Disk Read Bytes Timeline"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes",
- "label": "Disk Write Bytes (Sum)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
- "label": "Disk Write Bytes Timeline"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Network In Total",
- "label": "Network In Total (Sum)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
- "label": "Network In Total Timeline"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Network Out Total",
- "label": "Network Out Total (Sum)"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
- "label": "Network Out Total Timeline"
- }
- ]
- },
- "showExportToExcel": true
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAP"
+ },
+ {
+ "parameterName": "SAP",
+ "comparison": "isEqualTo",
+ "value": "Instance"
+ }
+ ],
+ "name": "query - SAP Instance"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| project SID= tostring(split(id,\"/\",8)[0]), SAPVMName=tostring(split(properties.virtualMachineId,\"/\",8)[0]) , Instancename=name, type = tostring(split(type,\"/\",2)[0])\r\n| summarize count() by SID",
+ "size": 0,
+ "color": "lightBlue",
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "graph",
+ "tileSettings": {
+ "showBorder": false,
+ "titleContent": {
+ "columnMatch": "SID",
+ "formatter": 1
+ },
+ "leftContent": {
+ "columnMatch": "count_",
+ "formatter": 12,
+ "formatOptions": {
+ "palette": "auto"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
- },
- {
- "parameterName": "monitor",
- "comparison": "isEqualTo",
- "value": "keymetrics"
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
}
- ],
- "name": "metric - Monitroing Key Metrics"
+ }
+ }
+ },
+ "graphSettings": {
+ "type": 2,
+ "topContent": {
+ "columnMatch": "SID",
+ "formatter": 1
},
- {
- "type": 1,
- "content": {
- "json": "💡 Click on the CPU utilization cells to zoom into the metrics of the virtual machine\r\n\r\n"
+ "centerContent": {
+ "columnMatch": "SID",
+ "formatter": 1,
+ "formatOptions": {
+ "linkTarget": "Resource"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
- },
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "style": "decimal",
+ "maximumFractionDigits": 2,
+ "maximumSignificantDigits": 3
+ }
+ }
+ },
+ "hivesContent": {
+ "columnMatch": "SID",
+ "formatter": 1
+ },
+ "nodeIdField": "count_",
+ "sourceIdField": "count_",
+ "targetIdField": "SID",
+ "graphOrientation": 3,
+ "showOrientationToggles": false,
+ "edgeSize": "SID",
+ "nodeSize": null,
+ "staticNodeSize": 100,
+ "colorSettings": {
+ "nodeColorField": "SID",
+ "type": 3,
+ "thresholdsGrid": [
{
- "parameterName": "monitor",
- "comparison": "isEqualTo",
- "value": "keymetrics"
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "orange"
}
- ],
- "name": "text - VM Key Metrics Tip"
+ ]
},
- {
- "type": 10,
- "content": {
- "chartId": "workbook75b48d2b-8309-42cd-9064-f1953fb648d8",
- "version": "MetricsItem/2.0",
- "size": 0,
- "chartType": -2,
- "resourceType": "microsoft.compute/virtualmachines",
- "metricScope": 0,
- "resourceParameter": "VirtualMachines",
- "resourceIds": [
- "{VirtualMachines}"
- ],
- "timeContext": {
- "durationMs": 3600000
- },
- "metrics": [
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Percentage CPU",
- "aggregation": 4
- }
- ],
- "title": "Azure deployment across regions",
- "mapSettings": {
- "locInfo": "AzureResource",
- "locInfoColumn": "Name",
- "sizeSettings": "Name",
- "sizeAggregation": "Count",
- "legendMetric": "microsoft.compute/virtualmachines--Percentage CPU",
- "legendAggregation": "Max",
- "itemColorSettings": {
- "nodeColorField": "microsoft.compute/virtualmachines--Percentage CPU",
- "colorAggregation": "Max",
- "type": "heatmap",
- "heatmapPalette": "greenRed",
- "heatmapMin": 30,
- "heatmapMax": 80
- },
- "numberFormatSettings": {
- "unit": 1,
- "options": {
- "style": "decimal"
- }
- }
- },
- "gridSettings": {
- "rowLimit": 10000
- },
- "showExportToExcel": true
+ "groupByField": "SID",
+ "hivesMargin": 5
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "SAP"
+ },
+ {
+ "parameterName": "SAP",
+ "comparison": "isEqualTo",
+ "value": "overview"
+ }
+ ],
+ "name": "query - SAP Overview"
+ }
+ ]
+ },
+ "name": "group -SAP Group"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources | where type == \"microsoft.compute/virtualmachines\"\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend vmState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| extend vmState = iif(isempty(vmState), \"VM State Unknown\", (vmState))\r\n| summarize count() by vmState",
+ "size": 3,
+ "title": "Azure Compute Status Overview",
+ "noDataMessage": "No compute detected",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "chartSettings": {
+ "ySettings": {
+ "numberFormatSettings": {
+ "unit": 0,
+ "options": {
+ "style": "decimal",
+ "useGrouping": true
+ }
+ }
+ }
+ }
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeoverview"
+ }
+ ],
+ "name": "VIS -Compute Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources | where type =~ 'Microsoft.Compute/virtualMachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend licenseType = tostring(properties.['licenseType'])\r\n| extend HybridBenefit = iif(properties.licenseType == \"Windows_Server\", \"Azure Hybrid Benefit\", \"Not Enabled\")\r\n| project id,OStype =tostring(properties.storageProfile.osDisk.osType),licenseType,HybridBenefit,location, resourceGroup\r\n| extend licenseType = iif(isempty(licenseType), \"Blank/PAYG\", (licenseType))\r\n| summarize count() by licenseType",
+ "size": 3,
+ "title": "Azure Compute OS License Type",
+ "noDataMessage": "No license data detected",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeoverview"
+ }
+ ],
+ "name": "VIS - VM OS License Type"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ \"microsoft.compute/virtualMachines\"\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| project id, vmName = name, powerstate = tostring(properties.extended.instanceView.powerState.displayStatus), vmsize = tostring(properties.hardwareProfile.vmSize), \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer),\r\n location, bootDiagnostics =tostring(properties.diagnosticsProfile.bootDiagnostics.enabled) ,avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n, ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), avZone = tostring(zones), resourceGroup, tags=tostring(tags)",
+ "size": 2,
+ "title": "VM Compute List",
+ "noDataMessage": "No VM found for the selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "publisher",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "is Empty",
+ "representation": "1",
+ "text": "{0}BYOL/BYOS"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "imagesku",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "contains",
+ "thresholdValue": "gen2",
+ "representation": "success",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "contains",
+ "thresholdValue": "gensecond",
+ "representation": "success",
+ "text": "{0}{1}"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "1",
+ "text": "{0}Review"
+ }
+ ]
+ }
+ },
+ {
+ "columnMatch": "bootDiagnostics",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "true",
+ "representation": "success",
+ "text": "{0}{1}"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
- },
- {
- "parameterName": "monitor",
- "comparison": "isEqualTo",
- "value": "regions"
- }
- ],
- "name": "metric - region overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "{\"version\":\"AzureHealthQuery/1.0\",\"queryType\":\"Detailed\"}",
- "size": 2,
- "title": "Virtual Machine Health",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 4,
- "resourceType": "microsoft.compute/virtualmachines",
- "crossComponentResources": [
- "{VirtualMachines}"
- ],
- "visualization": "graph",
- "graphSettings": {
- "type": 2,
- "topContent": {
- "columnMatch": "Availability state",
- "formatter": 1
- },
- "centerContent": {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "subTarget": "resourcehealth",
- "showIcon": false
- }
- },
- "bottomContent": {
- "columnMatch": "Reason type",
- "formatter": 1
- },
- "nodeIdField": "Name",
- "graphOrientation": 3,
- "showOrientationToggles": false,
- "nodeSize": null,
- "staticNodeSize": 100,
- "colorSettings": {
- "nodeColorField": "Availability state",
- "type": 3,
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "Available",
- "representation": "green"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "orange"
- }
- ]
- },
- "hivesMargin": 5
- }
+ {
+ "operator": "!=",
+ "thresholdValue": "true",
+ "representation": "1",
+ "text": "{0}Review"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
- },
- {
- "parameterName": "monitor",
- "comparison": "isEqualTo",
- "value": "health"
- }
- ],
- "showPin": true,
- "name": "query - VM Resource Health"
- },
- {
- "type": 1,
- "content": {
- "json": "💡 _Click on the virtual machine name to see more details about the resource health_\r\n
\r\n
\r\nLearn about [Azure resource health](https://docs.microsoft.com/en-us/azure/service-health/resource-health-overview)"
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "success",
+ "text": "{0}{1}"
+ }
+ ]
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "powerstate",
+ "label": "VM State"
+ },
+ {
+ "columnId": "os_type",
+ "label": "OS Type"
+ },
+ {
+ "columnId": "publisher",
+ "label": "Image Publisher"
+ },
+ {
+ "columnId": "version",
+ "label": "Image Version"
+ },
+ {
+ "columnId": "imagesku",
+ "label": "Image SKU"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "bootDiagnostics",
+ "label": "Boot Diagnostic"
+ },
+ {
+ "columnId": "avSet",
+ "label": "AvSet"
+ },
+ {
+ "columnId": "ppg",
+ "label": "PPG"
+ },
+ {
+ "columnId": "avZone",
+ "label": "AvZone"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "VMList"
+ }
+ ],
+ "name": "query - VM Compute List"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n//| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), osDisk = tostring(properties.storageProfile.osDisk.name), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), caching= tostring(properties.storageProfile.osDisk.caching)\r\n, createOption=tostring(properties.storageProfile.osDisk.createOption), osType=tostring(properties.storageProfile.osDisk.osType), avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n| join ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| project id1=id, diskname=name, osDisk=tostring(split(id,\"/\",8)[0]), vmName=tostring(split(managedBy,\"/\",8)[0]), sku =sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), managedBy, location, resourceGroup\r\n)\r\non vmName, osDisk\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName, vmSize, osType, id1, diskname, sku, caching,disk_tier, disk_size_GB,diskbandwidthMBps, disk_iops, createOption, location, resourceGroup , ppg , avSet",
+ "size": 0,
+ "title": "Compute+OS Disk Overview",
+ "noDataMessage": "No OS disk found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "vmSize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "osType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "8ch"
+ }
+ },
+ {
+ "columnMatch": "diskname",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "sku",
+ "formatter": 18,
+ "formatOptions": {
+ "thresholdsOptions": "icons",
+ "thresholdsGrid": [
+ {
+ "operator": "contains",
+ "thresholdValue": "Premium",
+ "representation": "success",
+ "text": "{0}{1}"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
- },
- {
- "parameterName": "monitor",
- "comparison": "isEqualTo",
- "value": "health"
- }
- ],
- "name": "text - VM Resource Health tip"
- }
- ]
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "warning",
+ "text": "{0}{1}"
+ }
+ ],
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "caching",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "12ch"
+ }
+ },
+ {
+ "columnMatch": "disk_tier",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "disk_size_GB",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "disk_iops",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ },
+ {
+ "columnMatch": "createOption",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "vmName",
+ "label": "Name"
+ },
+ {
+ "columnId": "vmSize",
+ "label": "SKU"
+ },
+ {
+ "columnId": "osType",
+ "label": "OS"
+ },
+ {
+ "columnId": "id1",
+ "label": "Disk Name"
+ },
+ {
+ "columnId": "diskname",
+ "label": "Disk name"
+ },
+ {
+ "columnId": "sku",
+ "label": "Disk SKU"
},
- "name": "group - 17"
- },
- {
- "type": 1,
- "content": {
- "json": "💡 _Standard Load Balancer for SAP (A)SCS best practices_\r\n\r\nThe keep alive functionality will prevent Azure ILB time out.\r\n\r\nSettings on Azure Basic ILB\r\n\r\nMake sure that ALL Azure ILB Load Balancing Rules have:\r\n\r\nIdle timeout (minutes) settings, set to the maximum value of 30 minutes.\r\nFloating IP (direct server return) must be Enabled\r\n\r\nNOTE: You can enable Floating IP only during creation of an Azure ILB rule. Therefore, if Floating IP is disabled for an existing Azure ILB rules, you need to delete the Azure ILB rule and create them again with option \"Enable Floating IP\".\r\n \r\nSettings on Windows Failover Cluster\r\nMake sure to create these two registry entries on BOTH ASCS /SCS cluster nodes:\r\n\r\nNOTE: To activate these changes, you need to reboot the Windows cluster nodes."
+ {
+ "columnId": "caching",
+ "label": "Caching"
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "configchecks"
- },
- {
- "parameterName": "configchecks",
- "comparison": "isEqualTo",
- "value": "standlb"
- },
- {
- "parameterName": "Help",
- "comparison": "isEqualTo",
- "value": "Yes"
- }
- ],
- "name": "text - Load Balancer help"
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "monitor"
+ {
+ "columnId": "disk_tier",
+ "label": "Tier"
+ },
+ {
+ "columnId": "disk_size_GB",
+ "label": "Size (GB)"
+ },
+ {
+ "columnId": "diskbandwidthMBps",
+ "label": "MBps"
+ },
+ {
+ "columnId": "disk_iops",
+ "label": "IOPS"
+ },
+ {
+ "columnId": "createOption",
+ "label": "CreateOption"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "ppg",
+ "label": "PPG"
+ },
+ {
+ "columnId": "avSet",
+ "label": "AvSet"
+ }
+ ]
+ }
},
- "name": "group - Monitoring & Security"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeos"
+ }
+ ],
+ "name": "VIS - Compute+OS Query"
},
{
- "type": 1,
+ "type": 3,
"content": {
- "json": "### Security"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, \r\n vmSize= tostring(properties.hardwareProfile.vmSize), os_type = tostring(properties.storageProfile.osDisk.osType),\r\n datadisk_lun = toint(datadisks.lun), datadisk_name = tostring(datadisks.name), datadisksize = tostring(datadisks.diskSizeGB), \r\n datadisk_cache = tostring(datadisks.caching), datadisk_wa = tostring(datadisks.writeAcceleratorEnabled)\r\n//| summarize by vmName, location, powerstate, avZone, avSet, ppg, vmSize, osname, vmgen, datadisklun, datadiskname, datadisksize, datadiskcache, datadiskwa\r\n| join kind = leftouter ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| parse managedBy with * \"/virtualMachines/\" vmName\r\n| parse id with * \"/disks/\" datadisk_name \r\n| project id1=id, sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), datadisk_name, vmName, managedBy, location, resourceGroup\r\n)\r\non vmName, datadisk_name\r\n| project-away datadisk_name, datadisk_name1, vmName1, managedBy\r\n| sort by vmName asc , datadisk_lun asc\r\n//| distinct datadisk_name",
+ "size": 2,
+ "title": "Managed Data Disk Overview",
+ "noDataMessage": "No Managed Data Disk found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "13ch"
+ }
+ },
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "vmSize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "vmSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "os_type",
+ "label": "OS Type"
+ },
+ {
+ "columnId": "datadisk_lun",
+ "label": "LUN"
+ },
+ {
+ "columnId": "datadisksize",
+ "label": "Disk SKU"
+ },
+ {
+ "columnId": "datadisk_cache",
+ "label": "Disk Cache"
+ },
+ {
+ "columnId": "datadisk_wa",
+ "label": "WA"
+ },
+ {
+ "columnId": "id1",
+ "label": "Disk Name"
+ },
+ {
+ "columnId": "sku_name",
+ "label": "Disk SKU"
+ },
+ {
+ "columnId": "disk_tier",
+ "label": "Disk Tier"
+ },
+ {
+ "columnId": "disk_size_GB",
+ "label": "Disk Size"
+ },
+ {
+ "columnId": "diskbandwidthMBps",
+ "label": "Disk BW"
+ },
+ {
+ "columnId": "disk_iops",
+ "label": "Disk IOPS"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ }
+ ]
+ }
},
- "name": "text - Security Group"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "datadisk"
+ }
+ ],
+ "name": "query - Managed Data Disk Overview"
},
{
- "type": 12,
+ "type": 3,
"content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "SecurityResources\r\n| where type == 'microsoft.security/securescores/securescorecontrols'\r\n| extend controlName=properties.displayName,\r\n\tcontrolId=properties.definition.name,\r\n\tnotApplicableResourceCount=properties.notApplicableResourceCount,\r\n\tunhealthyResourceCount=properties.unhealthyResourceCount,\r\n\thealthyResourceCount=properties.healthyResourceCount,\r\n\tpercentageScore=properties.score.percentage,\r\n\tcurrentScore=properties.score.current,\r\n\tmaxScore=properties.definition.properties.maxScore,\r\n\tweight=properties.weight,\r\n\tcontrolType=properties.definition.properties.source.sourceType,\r\n\tcontrolRecommendationIds=properties.definition.properties.assessmentDefinitions\r\n| project tenantId, subscriptionId, controlName, controlId, unhealthyResourceCount, healthyResourceCount, notApplicableResourceCount, percentageScore, currentScore, maxScore, weight, controlType, controlRecommendationIds",
- "size": 0,
- "title": "Security Overview",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "$gen_group",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "showIcon": true
- }
- },
- {
- "columnMatch": "tenantId",
- "formatter": 5
- },
- {
- "columnMatch": "subscriptionId",
- "formatter": 5
- },
- {
- "columnMatch": "controlName",
- "formatter": 5
- },
- {
- "columnMatch": "controlId",
- "formatter": 5
- }
- ],
- "filter": true,
- "hierarchySettings": {
- "treeType": 1,
- "groupBy": [
- "subscriptionId"
- ],
- "expandTopLevel": true,
- "finalBy": "controlName"
- }
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion, resourceGroup",
+ "size": 0,
+ "title": "VM Extensions",
+ "noDataMessage": "No VM Extension found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- },
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "security"
+ {
+ "columnMatch": "VMSize",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "20ch"
+ }
+ },
+ {
+ "columnMatch": "OSType",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
}
- ],
- "name": "query - security"
+ },
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "VMSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "OSType",
+ "label": "OS Type"
+ },
+ {
+ "columnId": "provisioningState",
+ "label": "Status"
+ },
+ {
+ "columnId": "autoUpgradeMinorVersion",
+ "label": "Auto-Upgrade"
+ },
+ {
+ "columnId": "typeHandlerVersion",
+ "label": "Version"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "Extensions",
+ "label": "Extension"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "Extension"
+ }
+ ],
+ "name": "query - Extension List"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "8935cfa5-b304-4d01-aac9-698460187241",
+ "cellValue": "config",
+ "linkTarget": "parameter",
+ "linkLabel": "Accelerated Networking",
+ "subTarget": "aan",
+ "style": "link"
+ },
+ {
+ "id": "8d909809-a0e3-42b9-bd9f-3682a0e1233d",
+ "cellValue": "config",
+ "linkTarget": "parameter",
+ "linkLabel": "Backup",
+ "subTarget": "backup",
+ "style": "link"
}
]
},
- "name": "group - 25"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visconfiguration"
+ }
+ ],
+ "name": "links - Configuration Overview"
},
{
- "type": 1,
+ "type": 3,
"content": {
- "json": "### SAP"
- },
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "NoShow"
+ "version": "KqlItem/1.0",
+ "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines' \r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project id, vmName = name, az = tostring(zones), vmSize = tostring(properties.hardwareProfile.vmSize), AvSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0]), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), nicId = tostring(nic.id) \r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations \r\n //| where ipconfig.properties.primary =~ 'true' \r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| summarize by id, nicId, vmName,vmSize,AcceleratedNetworkingOn,ipaddress, AvSet, ppg, az ",
+ "size": 2,
+ "title": "Accelerated Networking",
+ "noDataMessage": "No data found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "nicId",
+ "label": "NIC"
+ },
+ {
+ "columnId": "vmSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "ipaddress",
+ "label": "IP Address"
+ },
+ {
+ "columnId": "az",
+ "label": "AvZone"
+ }
+ ]
+ }
},
- "name": "text - SAP Overview"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visconfiguration"
+ },
+ {
+ "parameterName": "config",
+ "comparison": "isEqualTo",
+ "value": "aan"
+ }
+ ],
+ "name": "query - Accelerated Networking Overview"
},
{
- "type": 12,
+ "type": 3,
"content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "f813f331-ea12-4570-b1ef-474b35952b77",
- "cellValue": "SAP",
- "linkTarget": "parameter",
- "linkLabel": "Overview",
- "subTarget": "overview",
- "style": "link"
- },
- {
- "id": "efd7256b-8032-4c88-bedd-748f04be4a11",
- "cellValue": "SAP",
- "linkTarget": "parameter",
- "linkLabel": "Instance",
- "subTarget": "Instance",
- "style": "link"
- },
- {
- "id": "fc4741ab-393a-478e-895a-1b9418349e03",
- "cellValue": "SAP",
- "linkTarget": "parameter",
- "linkLabel": "SAP_SID",
- "subTarget": "SID_SAP",
- "style": "link"
- }
- ]
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type in~ ('microsoft.compute/virtualmachines','microsoft.classiccompute/virtualmachines') \r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend resourceId=tolower(id) \r\n| join kind = leftouter ( RecoveryServicesResources\r\n| where type == \"microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems\"\r\n| where properties.backupManagementType == \"AzureIaasVM\"\r\n| project resourceId = tolower(tostring(properties.sourceResourceId)), backupItemid = id, isBackedUp = isnotempty(id) ) on resourceId \r\n| extend isProtected = isnotempty(backupItemid)\r\n| where (isProtected == (0))\r\n| project id,name,resourceGroup,location,tags",
+ "size": 2,
+ "title": "VMs with no Azure Backup",
+ "noDataMessage": "No VM found without Azure Backup",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "name",
+ "formatter": 5
},
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAP"
+ {
+ "columnMatch": "tags",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "100ch"
+ }
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
},
- "name": "links - 2"
- },
- {
- "type": 9,
- "content": {
- "version": "KqlParameterItem/1.0",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "parameters": [
- {
- "id": "aa91df3e-9123-440e-9045-a6dea696d0c7",
- "version": "KqlParameterItem/1.0",
- "name": "SAP_Instance",
- "type": 1,
- "isRequired": true,
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| summarize Total = count()\r\n| project Message = strcat('SAP Instances # ', Total)",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
- },
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ }
+ ]
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visconfiguration"
+ },
+ {
+ "parameterName": "config",
+ "comparison": "isEqualTo",
+ "value": "backup"
+ }
+ ],
+ "name": "query - VM's with no backup Backup"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
{
- "id": "f876133a-d017-4735-a59b-148a5d8ea15e",
+ "id": "6a64934e-9fed-4511-9677-9212c854cc6f",
"version": "KqlParameterItem/1.0",
- "name": "system_SID",
+ "name": "VirtualMachines",
"type": 5,
- "isRequired": true,
"multiSelect": true,
"quote": "'",
"delimiter": ",",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| order by name asc\r\n| extend Rank = row_number()\r\n| project value = name, label = name, selected = Rank <= 5",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances'\r\n| extend visId = split(split(id, '/centralInstances')[0], '/databaseInstances')[0] // getting the VIS id out of child resource\r\n| extend SID = tostring(split(visId,\"/\",8)[0])\r\n//| extend visList = split('{system_SID:id}', ', ') // split the selected vis list in array to search\r\n//| where set_has_element(visList, tostring(visId)) == 1 //check if the running vis exists in selected vis id.\r\n| mv-expand properties.vmDetails\r\n| extend vmID = tostring(properties_vmDetails.virtualMachineId)\r\n| where strlen(vmID) > 0\r\n| extend vmRole = split(type, \"/\")[2]\r\n//| extend vmRole = \"qwertyuiop\"\r\n//| project visVMId = strcat(tolower(vmID), \", \", SID, \", \", vmRole)\r\n| project visVMId = strcat(tolower(vmID)), SID, vmRole\r\n| union(\r\nresources\r\n | where type =~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n | extend visId = split(id, '/applicationInstances')[0]\r\n // | extend visList = split('{system_SID:id}', ', ') \r\n | extend SID = tostring(split(visId,\"/\",8)[0])\r\n // split the selected vis list in array to search\r\n// | where set_has_element(visList, tostring(visId)) == 1\r\n | extend vmID = tostring(properties.virtualMachineId)\r\n | where strlen(vmID) > 0\r\n | extend vmRole = split(type, \"/\")[2]\r\n //| extend vmRole = \"qwertyuiop\"\r\n // | project visVMId = strcat(tolower(vmID), \", \",SID , \", \", vmRole)\r\n | project visVMId = strcat(tolower(vmID)), SID, vmRole\r\n )\r\n| extend VIS_VMs = tostring(split(visVMId,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n//| project VIS_VMs\r\n| distinct visVMId\r\n| order by visVMId asc\r\n| extend Rank = row_number()\r\n| project value = visVMId, label = visVMId, selected = Rank <= 200\r\n\r\n",
"crossComponentResources": [
"{Subscriptions}"
],
"typeSettings": {
"additionalResourceOptions": [
- "value::1",
"value::all"
],
"showDefault": false
@@ -11637,228 +16543,318 @@
"timeContext": {
"durationMs": 86400000
},
- "defaultValue": "value::1",
+ "defaultValue": "value::all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"value": [
- "value::1"
+ "value::all"
]
+ },
+ {
+ "id": "08131869-a1dc-4dd7-9047-85bd1e6b6825",
+ "version": "KqlParameterItem/1.0",
+ "name": "TimeRange",
+ "type": 4,
+ "isRequired": true,
+ "typeSettings": {
+ "selectableValues": [
+ {
+ "durationMs": 300000
+ },
+ {
+ "durationMs": 900000
+ },
+ {
+ "durationMs": 1800000
+ },
+ {
+ "durationMs": 3600000
+ },
+ {
+ "durationMs": 14400000
+ },
+ {
+ "durationMs": 43200000
+ },
+ {
+ "durationMs": 86400000
+ },
+ {
+ "durationMs": 172800000
+ },
+ {
+ "durationMs": 259200000
+ },
+ {
+ "durationMs": 604800000
+ },
+ {
+ "durationMs": 1209600000
+ },
+ {
+ "durationMs": 2419200000
+ },
+ {
+ "durationMs": 2592000000
+ },
+ {
+ "durationMs": 5184000000
+ },
+ {
+ "durationMs": 7776000000
+ }
+ ],
+ "allowCustom": false
+ },
+ "value": {
+ "durationMs": 2592000000
+ }
}
],
- "style": "above",
+ "style": "pills",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
},
- "conditionalVisibility": {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAP"
- },
- "name": "parameters - SAP"
+ "name": "parameters - 0"
},
{
- "type": 3,
+ "type": 10,
"content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, Landscape= tostring(properties.environment), type = tostring(split(type,\"/\",1)[0]) , configtype= tostring(properties.configuration.configurationType), sapProduct = properties.sapProduct",
+ "chartId": "workbook810f4a4c-0149-4243-9976-cc4958d7b9d5",
+ "version": "MetricsItem/2.0",
"size": 0,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAP"
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContextFromParameter": "TimeRange",
+ "timeContext": {
+ "durationMs": 2592000000
},
- {
- "parameterName": "SAP",
- "comparison": "isEqualTo",
- "value": "SID_SAP"
- }
- ],
- "name": "query - 4"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| project SID = tostring(split(id,\"/\",8)[0]), id, hostname=properties.hostname , InstanceNumber= properties.instanceNo, Instancename=name, type = tostring(split(type,\"/\",2)[0]), SAPKernel= properties.kernelVersion, SAPkernelPatch= properties.kernelPatch, resourceGroup, location, tags",
- "size": 0,
- "title": "SAP Instances",
- "noDataMessage": "No SAP Instance exist",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4,
+ "columnName": "%CPU Usage"
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Disk Read Bytes",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Disk Write Bytes",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network In Total",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network Out Total",
+ "aggregation": 1
+ }
],
+ "title": "VM Monitoring Key Metrics",
+ "resourceLimit": 1000,
"gridSettings": {
"formatters": [
{
- "columnMatch": "id",
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
"formatter": 13,
"formatOptions": {
"linkTarget": "Resource",
- "linkIsContextBlade": true,
"showIcon": true
}
},
{
- "columnMatch": "InstanceNumber",
- "formatter": 1,
+ "columnMatch": "%CPU Usage",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue",
+ "compositeBarSettings": {
+ "labelText": "",
+ "columnSettings": []
+ }
+ }
+ },
+ {
+ "columnMatch": "%CPU Usage Timeline",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "blue"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
"numberFormat": {
- "unit": 17,
+ "unit": 2,
"options": {
- "style": "decimal",
- "useGrouping": false,
- "minimumIntegerDigits": 2
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
}
}
- }
- ],
- "rowLimit": 10000,
- "filter": true
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAP"
- },
- {
- "parameterName": "SAP",
- "comparison": "isEqualTo",
- "value": "Instance"
- }
- ],
- "name": "query - SAP Instance"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| project SID= tostring(split(id,\"/\",8)[0]), SAPVMName=tostring(split(properties.virtualMachineId,\"/\",8)[0]) , Instancename=name, type = tostring(split(type,\"/\",2)[0])\r\n| summarize count() by SID",
- "size": 0,
- "color": "lightBlue",
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "graph",
- "tileSettings": {
- "showBorder": false,
- "titleContent": {
- "columnMatch": "SID",
- "formatter": 1
- },
- "leftContent": {
- "columnMatch": "count_",
- "formatter": 12,
- "formatOptions": {
- "palette": "auto"
},
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
}
- }
- }
- },
- "graphSettings": {
- "type": 2,
- "topContent": {
- "columnMatch": "SID",
- "formatter": 1
- },
- "centerContent": {
- "columnMatch": "SID",
- "formatter": 1,
- "formatOptions": {
- "linkTarget": "Resource"
},
- "numberFormat": {
- "unit": 17,
- "options": {
- "style": "decimal",
- "maximumFractionDigits": 2,
- "maximumSignificantDigits": 3
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
}
}
- },
- "hivesContent": {
- "columnMatch": "SID",
- "formatter": 1
- },
- "nodeIdField": "count_",
- "sourceIdField": "count_",
- "targetIdField": "SID",
- "graphOrientation": 3,
- "showOrientationToggles": false,
- "edgeSize": "SID",
- "nodeSize": null,
- "staticNodeSize": 100,
- "colorSettings": {
- "nodeColorField": "SID",
- "type": 3,
- "thresholdsGrid": [
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "orange"
- }
- ]
- },
- "groupByField": "SID",
- "hivesMargin": 5
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "%CPU Usage",
+ "label": "%CPU Usage"
+ },
+ {
+ "columnId": "%CPU Usage Timeline",
+ "label": "%CPU Usage Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes",
+ "label": "Disk Read Bytes (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
+ "label": "Disk Read Bytes Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes",
+ "label": "Disk Write Bytes (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
+ "label": "Disk Write Bytes Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total",
+ "label": "Network In Total (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "label": "Network In Total Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total",
+ "label": "Network Out Total (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "label": "Network Out Total Timeline"
+ }
+ ]
}
},
- "conditionalVisibilities": [
- {
- "parameterName": "SelectedTab",
- "comparison": "isEqualTo",
- "value": "SAP"
- },
- {
- "parameterName": "SAP",
- "comparison": "isEqualTo",
- "value": "overview"
- }
- ],
- "name": "query - SAP Overview"
+ "name": "VIS - Stats metric"
}
]
},
- "name": "group -SAP Group"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "vmstats"
+ },
+ {
+ "parameterName": "Resource_Filter",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ }
+ ],
+ "name": "group - VM Stats"
}
]
},
- "conditionalVisibilities": [
- {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "No"
- },
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "ResourceGroup"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "name": "group - SAP Overview"
+ "conditionalVisibility": {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "Extended_Report"
+ },
+ "name": "group - Extended SAP Overview"
},
{
"type": 1,
@@ -11883,15 +16879,133 @@
"content": {
"json": "## Azure Overview"
},
- "name": "text - 0"
+ "name": "text - 0"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, vmsize = tostring(properties.hardwareProfile.vmSize)\r\n| summarize count() by vmsize",
+ "size": 2,
+ "title": "Virtual Machine SKU Overview",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "34",
+ "name": "query - 1"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 2,
+ "title": "Azure Managed Disk Overview",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "name": "query - 2"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "where type has \"microsoft.netapp\"\r\n| extend type = case(\r\n\ttype == 'microsoft.netapp/netappaccounts', \"ANF Accounts\",\r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools', \"Capacity Pools\", \r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools/volumes', \"Volumes\", \r\n\tstrcat(\"Not Translated: \", type))\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type",
+ "size": 2,
+ "title": "ANF Storage Overview",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "name": "query - ANF Storage Overview"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ \"microsoft.network/applicationgateways\"\r\n| extend tier = parse_json(properties).sku.tier\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project SKU = iff(tier contains \"v2\", \"v2\", \"v1\")\r\n| summarize count() by SKU",
+ "size": 2,
+ "title": "Application Gateway Overview",
+ "noDataMessage": "No App GW found in selected subscription.",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "34",
+ "name": "query - 4"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 2,
+ "title": "Azure Load Balancer Overview",
+ "noDataMessage": "No Azure Load Balancer found in selected subscription.",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "name": "query - 5"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "size": 2,
+ "title": "Azure Storage Accounts",
+ "noDataMessage": "No Storage Account found in selected subscription.",
+ "showExportToExcel": true,
+ "exportToExcelOptions": "all",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "name": "query - 6"
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name, vmsize = tostring(properties.hardwareProfile.vmSize)\r\n| summarize count() by vmsize",
+ "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| where provisioningState=='Failed'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion",
"size": 2,
- "title": "Virtual Machine SKU Overview",
+ "title": "VM's with Failed VM Extensions",
+ "noDataMessage": "No VM with failed VM Extensions. Great job!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -11899,18 +17013,71 @@
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ },
+ {
+ "columnId": "VMSize",
+ "label": "VM SKU"
+ },
+ {
+ "columnId": "OSType",
+ "label": "OS"
+ },
+ {
+ "columnId": "provisioningState",
+ "label": "Provisioning State"
+ },
+ {
+ "columnId": "autoUpgradeMinorVersion",
+ "label": "AutoUpgrade"
+ },
+ {
+ "columnId": "typeHandlerVersion",
+ "label": "Version"
+ },
+ {
+ "columnId": "Extensions",
+ "label": "Extension Name"
+ }
+ ]
+ }
},
- "customWidth": "34",
- "name": "query - 1"
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - VM's with Failed VM Extensions",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "## Orphan Resources"
+ },
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "text - Orphan Resources"
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.compute/disks\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
- "size": 2,
- "title": "Azure Managed Disk Overview",
+ "query": "// Run query to see results.\r\nresources\r\n| where type =~ \"microsoft.network/networkinterfaces\"\r\n| extend networkSecurityGroup = coalesce(extract('Microsoft.Network/networkSecurityGroups/(.*)', 1, tostring(properties.networkSecurityGroup.id)), '-')\r\n| extend virtualMachineName = extract('Microsoft.Compute/virtualMachines/(.*)', 1, tostring(properties.virtualMachine.id))\r\n| extend hostedWorkloads = properties.hostedWorkloads\r\n| extend hostedWorkloadCount = array_length(properties.hostedWorkloads)\r\n| extend hostedWorkloadName = iff(hostedWorkloads[0] contains 'volumes',\r\n strcat(hostedWorkloadCount, ' ', 'Azure NetApp Files volumes'),\r\n coalesce(split(hostedWorkloads[0], '/')[(-1)], '-'))\r\n| extend attachedTo = iff(isnotempty(virtualMachineName), virtualMachineName, hostedWorkloadName)\r\n| extend macAddress = coalesce(properties.macAddress, '-')\r\n| extend ipConfigCount=array_length(properties.ipConfigurations)\r\n| extend ipConfigurations=iff(ipConfigCount == 0, dynamic(null), properties.ipConfigurations)\r\n| mvexpand ipConfiguration=ipConfigurations limit 400\r\n| extend isPrimary = (ipConfigCount == 1 or ipConfiguration.properties.primary =~ 'true' or isempty(ipConfiguration))\r\n| extend primarySubnetIds = iff(isPrimary, ipConfiguration.properties.subnet.id, '')\r\n| extend primaryPublicIpAddressIds = iff(isPrimary, tolower(ipConfiguration.properties.publicIPAddress.id), '')\r\n| extend primaryIPprivateIPs = iff(isPrimary, ipConfiguration.properties.privateIPAddress, '-')\r\n| extend secondaryIPprivateIPs = iff(not(isPrimary), ipConfiguration.properties.privateIPAddress, '')\r\n| summarize subnetId=any(primarySubnetIds),\r\n publicIpAddressId=any(primaryPublicIpAddressIds),\r\n primaryPrivateIPAddress=any(primaryIPprivateIPs),\r\n secondaryPrivateIPAddress=makeset(secondaryIPprivateIPs),\r\n tags=any(tags)\r\n by name, id, type, kind, location, resourceGroup, subscriptionId, networkSecurityGroup, attachedTo, macAddress\r\n| extend secondaryPrivateIPAddress = case(isempty(secondaryPrivateIPAddress[0]), array_slice(secondaryPrivateIPAddress,1,-1),\r\n isempty(secondaryPrivateIPAddress[(-1)]), array_slice(secondaryPrivateIPAddress,0,-2),\r\n secondaryPrivateIPAddress)\r\n| extend secondaryPrivateIPAddress = strcat_array(secondaryPrivateIPAddress, ',')\r\n| extend secondaryPrivateIPAddress = coalesce(replace(',,', ',', secondaryPrivateIPAddress), '-')\r\n| parse kind=regex subnetId with 'Microsoft.Network/virtualNetworks/' virtualNetwork '/subnets/' subnet\r\n| join kind=leftouter hint.strategy=shuffle (data\r\n| where type =~ 'microsoft.network/publicipaddresses'\r\n| extend publicIpAddress = tostring(properties.ipAddress)\r\n| project publicIpAddressId=tolower(id), publicIpAddress)\r\n on publicIpAddressId\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name,\r\n id,\r\n type,\r\n kind,\r\n location,\r\n resourceGroup,\r\n subscriptionId,\r\n tags,\r\n networkSecurityGroup,\r\n attachedTo,\r\n macAddress,\r\n virtualNetwork=coalesce(virtualNetwork, '-'),\r\n subnet=coalesce(subnet, '-'),\r\n primaryPrivateIPAddress,\r\n secondaryPrivateIPAddress,\r\n publicIpAddress=coalesce(publicIpAddress, '-')\r\n| where (type !~ ('dynatrace.observability/monitors'))\r\n| where (type !~ ('nginx.nginxplus/nginxdeployments'))\r\n| where (type !~ ('microsoft.agfoodplatform/farmbeats'))\r\n| where (type !~ ('microsoft.cdn/profiles/afdendpoints'))\r\n| where (type !~ ('microsoft.cdn/profiles/customdomains'))\r\n| where (type !~ ('microsoft.cdn/profiles/origingroups'))\r\n| where (type !~ ('microsoft.cdn/profiles/rulesets'))\r\n| where (type !~ ('microsoft.cdn/profiles/secrets'))\r\n| where (type !~ ('microsoft.cdn/profiles/securitypolicies'))\r\n| where (type !~ ('microsoft.cdn/profiles/afdendpoints/routes'))\r\n| where (type !~ ('microsoft.cdn/profiles/origingroups/origins'))\r\n| where (type !~ ('microsoft.cdn/profiles/rulesets/rules'))\r\n| where (type !~ ('microsoft.kubernetes/connectedclusters/microsoft.kubernetesconfiguration/fluxconfigurations'))\r\n| where (type !~ ('microsoft.containerservice/managedclusters/microsoft.kubernetesconfiguration/fluxconfigurations'))\r\n| where (type !~ ('microsoft.portal/extensions/deployments'))\r\n| where (type !~ ('microsoft.portal/extensions'))\r\n| where (type !~ ('microsoft.portal/extensions/slots'))\r\n| where (type !~ ('microsoft.portal/extensions/versions'))\r\n| where (type !~ ('microsoft.datacollaboration/workspaces'))\r\n| where (type !~ ('microsoft.network/dnsforwardingrulesets'))\r\n| where (type !~ ('microsoft.network/dnsresolvers'))\r\n| where (type !~ ('microsoft.azurestack/registrations'))\r\n| where (type !~ ('microsoft.communication/emailservices'))\r\n| where (type !~ ('microsoft.hdinsight/clusterpools/clusters'))\r\n| where (type !~ ('microsoft.hdinsight/clusterpools/clusters/sessionclusters'))\r\n| where (type !~ ('microsoft.hdinsight/clusterpools'))\r\n| where (type !~ ('microsoft.hpcworkbench/instances'))\r\n| where (type !~ ('microsoft.scvmm/vmmservers'))\r\n| where (type !~ ('microsoft.connectedvmwarevsphere/vcenters'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/assets'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/tests'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/executionplans'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/testplans'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins'))\r\n| where not((type =~ ('microsoft.network/serviceendpointpolicies')) and ((kind =~ ('internal'))))\r\n| where (type !~ ('microsoft.openlogisticsplatform/workspaces'))\r\n| where (type !~ ('microsoft.scom/managedinstances'))\r\n| where (type !~ ('microsoft.orbital/spacecrafts/contacts'))\r\n| where (type !~ ('microsoft.orbital/contactprofiles'))\r\n| where (type !~ ('microsoft.orbital/edgesites'))\r\n| where (type !~ ('microsoft.orbital/groundstations'))\r\n| where (type !~ ('microsoft.orbital/l2connections'))\r\n| where (type !~ ('microsoft.orbital/spacecrafts'))\r\n| where (type !~ ('microsoft.azurepercept/accounts'))\r\n| where (type !~ ('microsoft.workloads/phpworkloads'))\r\n| where (type !~ ('microsoft.playfab/playeraccountpools'))\r\n| where (type !~ ('microsoft.playfab/playfabresources'))\r\n| where (type !~ ('microsoft.playfab/titles'))\r\n| where (type !~ ('microsoft.recommendationsservice/accounts/modeling'))\r\n| where (type !~ ('microsoft.recommendationsservice/accounts/serviceendpoints'))\r\n| where (type !~ ('microsoft.recoveryservicesbvtd2/vaults'))\r\n| where (type !~ ('microsoft.recoveryservicesbvtd/vaults'))\r\n| where (type !~ ('microsoft.recoveryservicesintd/vaults'))\r\n| where (type !~ ('microsoft.recoveryservicesintd2/vaults'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances/applicationinstances'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances/centralinstances'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances/databaseinstances'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances'))\r\n| where (type !~ ('microsoft.datareplication/replicationvaults'))\r\n| where (type !~ ('microsoft.storagecache/amlfilesystems'))\r\n| where not((type =~ ('microsoft.synapse/workspaces/sqlpools')) and ((kind =~ ('v3'))))\r\n| where (type !~ ('microsoft.mobilenetwork/mobilenetworks'))\r\n| where (type !~ ('microsoft.mobilenetwork/mobilenetworks/sites'))\r\n| where (type !~ ('microsoft.mobilenetwork/packetcorecontrolplanes'))\r\n| where (type !~ ('microsoft.mobilenetwork/mobilenetworks/services'))\r\n| where (type !~ ('microsoft.mobilenetwork/sims'))\r\n| where (type !~ ('microsoft.workloads/monitors'))\r\n| where not((type =~ ('microsoft.sql/servers/databases')) and ((kind in~ ('system','v2.0,system','v12.0,system','v12.0,user,datawarehouse,gen2,analytics'))))\r\n| where not((type =~ ('microsoft.sql/servers')) and ((kind =~ ('v12.0,analytics'))))\r\n| where attachedTo == '-'\r\n| project id ,virtualNetwork,primaryPrivateIPAddress, resourceGroup, location\r\n| sort by (tolower(tostring(id))) asc",
+ "size": 3,
+ "title": "Orphan NIC's",
+ "noDataMessage": "No orphan NICs for the selection, Great job!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -11918,18 +17085,46 @@
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "NIC Name"
+ },
+ {
+ "columnId": "virtualNetwork",
+ "label": "Virtual Network"
+ },
+ {
+ "columnId": "primaryPrivateIPAddress",
+ "label": "IP Address"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ }
+ ]
+ }
},
- "customWidth": "33",
- "name": "query - 2"
+ "name": "query - Orphan NICs",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "where type has \"microsoft.netapp\"\r\n| extend type = case(\r\n\ttype == 'microsoft.netapp/netappaccounts', \"ANF Accounts\",\r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools', \"Capacity Pools\", \r\n\ttype == 'microsoft.netapp/netappaccounts/capacitypools/volumes', \"Volumes\", \r\n\tstrcat(\"Not Translated: \", type))\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize count() by type",
+ "query": "Resources\r\n| where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets)\r\n| project Resource=id, resourceGroup, location",
"size": 2,
- "title": "ANF Storage Overview",
+ "title": "Orphan NSG",
+ "noDataMessage": "No orphan NSG for the selection, Great job!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -11937,19 +17132,43 @@
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Resource",
+ "label": "NSG Name"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ }
+ ]
+ }
},
- "customWidth": "33",
- "name": "query - ANF Storage Overview"
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - Orphan NSG",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ \"microsoft.network/applicationgateways\"\r\n| extend tier = parse_json(properties).sku.tier\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project SKU = iff(tier contains \"v2\", \"v2\", \"v1\")\r\n| summarize count() by SKU",
+ "query": "Resources\r\n| where type =~ 'microsoft.network/applicationsecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets)\r\n| project Resource=id, resourceGroup, subscriptionId, location",
"size": 2,
- "title": "Application Gateway Overview",
- "noDataMessage": "No App GW found in selected subscription.",
+ "title": "Orphan ASG",
+ "noDataMessage": "No orphan ASG for the selection, Great job!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -11957,19 +17176,29 @@
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true
+ }
},
- "customWidth": "34",
- "name": "query - 4"
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - Orphan ASG",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "query": "Resources \r\n| where type contains \"microsoft.compute/disks\" \r\n| extend diskState = tostring(properties.diskState)\r\n| where managedBy == \"\" \r\n and (diskState == 'Unattached' or diskState != 'ActiveSAS')\r\n| project id, diskState, resourceGroup, location, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB)",
"size": 2,
- "title": "Azure Load Balancer Overview",
- "noDataMessage": "No Azure Load Balancer found in selected subscription.",
+ "title": "Orphan Disks",
+ "noDataMessage": "No orphan Disk for the selection, Great job!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -11977,19 +17206,67 @@
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Disk Name"
+ },
+ {
+ "columnId": "diskState",
+ "label": "Disk State"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure Region"
+ },
+ {
+ "columnId": "disk_tier",
+ "label": "Disk Tier"
+ },
+ {
+ "columnId": "disk_size_GB",
+ "label": "Disk Size"
+ }
+ ]
+ }
},
- "customWidth": "33",
- "name": "query - 5"
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "query - Orphan Disks",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "## Configuration Checks"
+ },
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "text - Config Checks"
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, name = tostring(sku.name), tier = tostring(sku.tier)\r\n| summarize count() by name",
+ "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines' \r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project id, vmName = name, az = tostring(zones), vmSize = tostring(properties.hardwareProfile.vmSize), AvSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0]), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), nicId = tostring(nic.id) \r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations\r\n | where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| where AcceleratedNetworkingOn == \"false\"\r\n| summarize by id, nicId, vmName,vmSize,ipaddress, AvSet, ppg, az, AcceleratedNetworkingOn",
"size": 2,
- "title": "Azure Storage Accounts",
- "noDataMessage": "No Storage Account found in selected subscription.",
+ "title": "VM's with disabled Accelerated Networking",
+ "noDataMessage": "No VM with disabled AN, Great job!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -11997,19 +17274,44 @@
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "piechart"
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "vmName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Column1",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Virtual Machibe"
+ },
+ {
+ "columnId": "nicId",
+ "label": "NIC Name"
+ }
+ ]
+ }
},
- "customWidth": "33",
- "name": "query - 6"
+ "name": "query - VM's with disabled Accelerated Networking",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| where provisioningState=='Failed'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion",
- "size": 2,
- "title": "VM's with Failed VM Extensions",
- "noDataMessage": "No VM with failed VM Extensions. Great job!",
+ "query": "Resources\r\n | where type =~ 'microsoft.network/publicipaddresses' and isnotempty(properties.ipAddress)\r\n | where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n | project id, resourceGroup, sku=sku.name, Tier=sku.tier, location",
+ "size": 0,
+ "title": "Public IP ",
+ "noDataMessage": "No Public IP resource found!",
"showExportToExcel": true,
"exportToExcelOptions": "all",
"queryType": 1,
@@ -12017,106 +17319,340 @@
"crossComponentResources": [
"{Subscriptions}"
],
+ "visualization": "table",
"gridSettings": {
"rowLimit": 10000,
"filter": true,
"labelSettings": [
{
"columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "VMSize",
- "label": "VM SKU"
- },
- {
- "columnId": "OSType",
- "label": "OS"
+ "label": "Public IP Name"
},
{
- "columnId": "provisioningState",
- "label": "Provisioning State"
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
},
{
- "columnId": "autoUpgradeMinorVersion",
- "label": "AutoUpgrade"
+ "columnId": "sku",
+ "label": "SKU"
},
{
- "columnId": "typeHandlerVersion",
- "label": "Version"
+ "columnId": "Tier",
+ "label": "Tier"
},
{
- "columnId": "Extensions",
- "label": "Extension Name"
+ "columnId": "location",
+ "label": "Azure Region"
}
]
}
},
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- "name": "query - VM's with Failed VM Extensions",
+ "name": "query - Public IP",
"styleSettings": {
"showBorder": true
}
+ }
+ ],
+ "exportParameters": true
+ },
+ "conditionalVisibility": {
+ "parameterName": "Report_check",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "group - Report Overview"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "### VIS"
+ },
+ "conditionalVisibility": {
+ "parameterName": "show",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - VIS Group Start"
+ },
+ {
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "title": "VIS Group",
+ "items": [
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "9f093954-c9e0-45fa-b1e1-91260a61cc4d",
+ "cellValue": "vis",
+ "linkTarget": "parameter",
+ "linkLabel": "VIS Overview",
+ "subTarget": "visoverview",
+ "preText": "VIS Overview",
+ "style": "link"
+ },
+ {
+ "id": "322ba4d3-0527-4e5f-ad09-9b552d65eef4",
+ "cellValue": "vis",
+ "linkTarget": "parameter",
+ "linkLabel": "VIS SAP Landscape",
+ "subTarget": "saplandscape",
+ "style": "link"
+ },
+ {
+ "id": "73e6ea22-da63-4aff-8f56-2b8d75d2f4d4",
+ "cellValue": "vis",
+ "linkTarget": "parameter",
+ "linkLabel": "VIS Compute",
+ "subTarget": "viscompute",
+ "preText": "VIS Compute",
+ "style": "link"
+ },
+ {
+ "id": "80a3f65f-55d4-4df8-ab5b-8fb593959e26",
+ "cellValue": "vis",
+ "linkTarget": "parameter",
+ "linkLabel": "Platform Configuration",
+ "subTarget": "visconfiguration",
+ "preText": "VIS Configuraton",
+ "style": "link"
+ },
+ {
+ "id": "a2157006-30fd-42c4-a4dd-a683290994cf",
+ "cellValue": "vis",
+ "linkTarget": "parameter",
+ "linkLabel": "Monitoring & Service Health",
+ "subTarget": "vismonitoring",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "Subscriptions",
+ "comparison": "isNotEqualTo"
+ }
+ ],
+ "name": "links - VIS Overview"
},
{
- "type": 1,
+ "type": 11,
"content": {
- "json": "## Orphan Resources"
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "994cb1bc-27de-48ea-8f38-7527d52f6935",
+ "cellValue": "saplandscape",
+ "linkTarget": "parameter",
+ "linkLabel": "SAP Systems overview",
+ "subTarget": "sapoverview",
+ "preText": "SAP ",
+ "style": "link"
+ },
+ {
+ "id": "2613eef1-f693-4ee4-a857-3b2129af6362",
+ "cellValue": "saplandscape",
+ "linkTarget": "parameter",
+ "linkLabel": "SAP Instance Overview",
+ "subTarget": "sapinstanceoverview",
+ "style": "link"
+ },
+ {
+ "id": "0587c130-dabc-428d-9715-0f97b113e93a",
+ "cellValue": "saplandscape",
+ "linkTarget": "parameter",
+ "linkLabel": "SAP SID Overview",
+ "subTarget": "sapsidoverview",
+ "style": "link"
+ },
+ {
+ "id": "f93c0bb3-325e-4d2e-8e8d-796700b424e5",
+ "cellValue": "saplandscape",
+ "linkTarget": "parameter",
+ "linkLabel": "OS Configuration Checks",
+ "subTarget": "oschecks",
+ "style": "link"
+ }
+ ]
},
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "saplandscape"
+ }
+ ],
+ "name": "links - VIS SAP Landscape Links"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| extend SID = tostring(split(id,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project SID= tostring(split(id,\"/\",8)[0]), SAPVMName=tostring(split(properties.virtualMachineId,\"/\",8)[0]) , Instancename=name, type = tostring(split(type,\"/\",2)[0]), status=properties.status, health=tostring(properties.health)\r\n| summarize count() by SID",
+ "size": 0,
+ "title": "SAP System Overview",
+ "noDataMessage": "VIS SAP Configuration not found",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "graph",
+ "graphSettings": {
+ "type": 2,
+ "topContent": {
+ "columnMatch": "SID",
+ "formatter": 1
+ },
+ "centerContent": {
+ "columnMatch": "count_",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ },
+ "nodeIdField": "SID",
+ "graphOrientation": 3,
+ "showOrientationToggles": false,
+ "nodeSize": null,
+ "staticNodeSize": 100,
+ "colorSettings": {
+ "nodeColorField": "health",
+ "type": 3,
+ "thresholdsGrid": [
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "lightBlue"
+ }
+ ]
+ },
+ "hivesMargin": 5,
+ "edgeColorSettings": null
+ }
},
- "name": "text - Orphan Resources"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "saplandscape"
+ },
+ {
+ "parameterName": "saplandscape",
+ "comparison": "isEqualTo",
+ "value": "sapoverview"
+ }
+ ],
+ "name": "query - VIS SAP Overview"
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "// Run query to see results.\r\nresources\r\n| where type =~ \"microsoft.network/networkinterfaces\"\r\n| extend networkSecurityGroup = coalesce(extract('Microsoft.Network/networkSecurityGroups/(.*)', 1, tostring(properties.networkSecurityGroup.id)), '-')\r\n| extend virtualMachineName = extract('Microsoft.Compute/virtualMachines/(.*)', 1, tostring(properties.virtualMachine.id))\r\n| extend hostedWorkloads = properties.hostedWorkloads\r\n| extend hostedWorkloadCount = array_length(properties.hostedWorkloads)\r\n| extend hostedWorkloadName = iff(hostedWorkloads[0] contains 'volumes',\r\n strcat(hostedWorkloadCount, ' ', 'Azure NetApp Files volumes'),\r\n coalesce(split(hostedWorkloads[0], '/')[(-1)], '-'))\r\n| extend attachedTo = iff(isnotempty(virtualMachineName), virtualMachineName, hostedWorkloadName)\r\n| extend macAddress = coalesce(properties.macAddress, '-')\r\n| extend ipConfigCount=array_length(properties.ipConfigurations)\r\n| extend ipConfigurations=iff(ipConfigCount == 0, dynamic(null), properties.ipConfigurations)\r\n| mvexpand ipConfiguration=ipConfigurations limit 400\r\n| extend isPrimary = (ipConfigCount == 1 or ipConfiguration.properties.primary =~ 'true' or isempty(ipConfiguration))\r\n| extend primarySubnetIds = iff(isPrimary, ipConfiguration.properties.subnet.id, '')\r\n| extend primaryPublicIpAddressIds = iff(isPrimary, tolower(ipConfiguration.properties.publicIPAddress.id), '')\r\n| extend primaryIPprivateIPs = iff(isPrimary, ipConfiguration.properties.privateIPAddress, '-')\r\n| extend secondaryIPprivateIPs = iff(not(isPrimary), ipConfiguration.properties.privateIPAddress, '')\r\n| summarize subnetId=any(primarySubnetIds),\r\n publicIpAddressId=any(primaryPublicIpAddressIds),\r\n primaryPrivateIPAddress=any(primaryIPprivateIPs),\r\n secondaryPrivateIPAddress=makeset(secondaryIPprivateIPs),\r\n tags=any(tags)\r\n by name, id, type, kind, location, resourceGroup, subscriptionId, networkSecurityGroup, attachedTo, macAddress\r\n| extend secondaryPrivateIPAddress = case(isempty(secondaryPrivateIPAddress[0]), array_slice(secondaryPrivateIPAddress,1,-1),\r\n isempty(secondaryPrivateIPAddress[(-1)]), array_slice(secondaryPrivateIPAddress,0,-2),\r\n secondaryPrivateIPAddress)\r\n| extend secondaryPrivateIPAddress = strcat_array(secondaryPrivateIPAddress, ',')\r\n| extend secondaryPrivateIPAddress = coalesce(replace(',,', ',', secondaryPrivateIPAddress), '-')\r\n| parse kind=regex subnetId with 'Microsoft.Network/virtualNetworks/' virtualNetwork '/subnets/' subnet\r\n| join kind=leftouter hint.strategy=shuffle (data\r\n| where type =~ 'microsoft.network/publicipaddresses'\r\n| extend publicIpAddress = tostring(properties.ipAddress)\r\n| project publicIpAddressId=tolower(id), publicIpAddress)\r\n on publicIpAddressId\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project name,\r\n id,\r\n type,\r\n kind,\r\n location,\r\n resourceGroup,\r\n subscriptionId,\r\n tags,\r\n networkSecurityGroup,\r\n attachedTo,\r\n macAddress,\r\n virtualNetwork=coalesce(virtualNetwork, '-'),\r\n subnet=coalesce(subnet, '-'),\r\n primaryPrivateIPAddress,\r\n secondaryPrivateIPAddress,\r\n publicIpAddress=coalesce(publicIpAddress, '-')\r\n| where (type !~ ('dynatrace.observability/monitors'))\r\n| where (type !~ ('nginx.nginxplus/nginxdeployments'))\r\n| where (type !~ ('microsoft.agfoodplatform/farmbeats'))\r\n| where (type !~ ('microsoft.cdn/profiles/afdendpoints'))\r\n| where (type !~ ('microsoft.cdn/profiles/customdomains'))\r\n| where (type !~ ('microsoft.cdn/profiles/origingroups'))\r\n| where (type !~ ('microsoft.cdn/profiles/rulesets'))\r\n| where (type !~ ('microsoft.cdn/profiles/secrets'))\r\n| where (type !~ ('microsoft.cdn/profiles/securitypolicies'))\r\n| where (type !~ ('microsoft.cdn/profiles/afdendpoints/routes'))\r\n| where (type !~ ('microsoft.cdn/profiles/origingroups/origins'))\r\n| where (type !~ ('microsoft.cdn/profiles/rulesets/rules'))\r\n| where (type !~ ('microsoft.kubernetes/connectedclusters/microsoft.kubernetesconfiguration/fluxconfigurations'))\r\n| where (type !~ ('microsoft.containerservice/managedclusters/microsoft.kubernetesconfiguration/fluxconfigurations'))\r\n| where (type !~ ('microsoft.portal/extensions/deployments'))\r\n| where (type !~ ('microsoft.portal/extensions'))\r\n| where (type !~ ('microsoft.portal/extensions/slots'))\r\n| where (type !~ ('microsoft.portal/extensions/versions'))\r\n| where (type !~ ('microsoft.datacollaboration/workspaces'))\r\n| where (type !~ ('microsoft.network/dnsforwardingrulesets'))\r\n| where (type !~ ('microsoft.network/dnsresolvers'))\r\n| where (type !~ ('microsoft.azurestack/registrations'))\r\n| where (type !~ ('microsoft.communication/emailservices'))\r\n| where (type !~ ('microsoft.hdinsight/clusterpools/clusters'))\r\n| where (type !~ ('microsoft.hdinsight/clusterpools/clusters/sessionclusters'))\r\n| where (type !~ ('microsoft.hdinsight/clusterpools'))\r\n| where (type !~ ('microsoft.hpcworkbench/instances'))\r\n| where (type !~ ('microsoft.scvmm/vmmservers'))\r\n| where (type !~ ('microsoft.connectedvmwarevsphere/vcenters'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/assets'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/tests'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/executionplans'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins/testplans'))\r\n| where (type !~ ('microsoft.intelligentitdigitaltwin/digitaltwins'))\r\n| where not((type =~ ('microsoft.network/serviceendpointpolicies')) and ((kind =~ ('internal'))))\r\n| where (type !~ ('microsoft.openlogisticsplatform/workspaces'))\r\n| where (type !~ ('microsoft.scom/managedinstances'))\r\n| where (type !~ ('microsoft.orbital/spacecrafts/contacts'))\r\n| where (type !~ ('microsoft.orbital/contactprofiles'))\r\n| where (type !~ ('microsoft.orbital/edgesites'))\r\n| where (type !~ ('microsoft.orbital/groundstations'))\r\n| where (type !~ ('microsoft.orbital/l2connections'))\r\n| where (type !~ ('microsoft.orbital/spacecrafts'))\r\n| where (type !~ ('microsoft.azurepercept/accounts'))\r\n| where (type !~ ('microsoft.workloads/phpworkloads'))\r\n| where (type !~ ('microsoft.playfab/playeraccountpools'))\r\n| where (type !~ ('microsoft.playfab/playfabresources'))\r\n| where (type !~ ('microsoft.playfab/titles'))\r\n| where (type !~ ('microsoft.recommendationsservice/accounts/modeling'))\r\n| where (type !~ ('microsoft.recommendationsservice/accounts/serviceendpoints'))\r\n| where (type !~ ('microsoft.recoveryservicesbvtd2/vaults'))\r\n| where (type !~ ('microsoft.recoveryservicesbvtd/vaults'))\r\n| where (type !~ ('microsoft.recoveryservicesintd/vaults'))\r\n| where (type !~ ('microsoft.recoveryservicesintd2/vaults'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances/applicationinstances'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances/centralinstances'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances/databaseinstances'))\r\n| where (type !~ ('microsoft.workloads/sapvirtualinstances'))\r\n| where (type !~ ('microsoft.datareplication/replicationvaults'))\r\n| where (type !~ ('microsoft.storagecache/amlfilesystems'))\r\n| where not((type =~ ('microsoft.synapse/workspaces/sqlpools')) and ((kind =~ ('v3'))))\r\n| where (type !~ ('microsoft.mobilenetwork/mobilenetworks'))\r\n| where (type !~ ('microsoft.mobilenetwork/mobilenetworks/sites'))\r\n| where (type !~ ('microsoft.mobilenetwork/packetcorecontrolplanes'))\r\n| where (type !~ ('microsoft.mobilenetwork/mobilenetworks/services'))\r\n| where (type !~ ('microsoft.mobilenetwork/sims'))\r\n| where (type !~ ('microsoft.workloads/monitors'))\r\n| where not((type =~ ('microsoft.sql/servers/databases')) and ((kind in~ ('system','v2.0,system','v12.0,system','v12.0,user,datawarehouse,gen2,analytics'))))\r\n| where not((type =~ ('microsoft.sql/servers')) and ((kind =~ ('v12.0,analytics'))))\r\n| where attachedTo == '-'\r\n| project id ,virtualNetwork,primaryPrivateIPAddress, resourceGroup, location\r\n| sort by (tolower(tostring(id))) asc",
- "size": 3,
- "title": "Orphan NIC's",
- "noDataMessage": "No orphan NICs for the selection, Great job!",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| extend SID = tostring(split(id,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project SID = tostring(split(id,\"/\",8)[0]), id, hostname=properties.hostname , resourceGroup, InstanceNumber= properties.instanceNo, Instancename=name, type = tostring(split(type,\"/\",2)[0]), SAPKernel= properties.kernelVersion, SAPkernelPatch= properties.kernelPatch, location, tags\r\n\r\n",
+ "size": 2,
+ "title": "SAP Instance Overview",
+ "noDataMessage": "No VIS configuration",
"showExportToExcel": true,
- "exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
"gridSettings": {
- "rowLimit": 10000,
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "15ch"
+ }
+ },
+ {
+ "columnMatch": "Instancename",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ }
+ ],
+ "rowLimit": 1000,
"filter": true,
"labelSettings": [
{
"columnId": "id",
- "label": "NIC Name"
- },
- {
- "columnId": "virtualNetwork",
- "label": "Virtual Network"
+ "label": "Instance"
},
{
- "columnId": "primaryPrivateIPAddress",
- "label": "IP Address"
+ "columnId": "hostname",
+ "label": "Hostname"
},
{
"columnId": "resourceGroup",
"label": "Resource Group"
},
+ {
+ "columnId": "InstanceNumber",
+ "label": "Instance No."
+ },
+ {
+ "columnId": "Instancename",
+ "label": "Name"
+ },
+ {
+ "columnId": "type",
+ "label": "Type"
+ },
{
"columnId": "location",
"label": "Azure Region"
}
]
}
- },
- "name": "query - Orphan NICs",
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "saplandscape"
+ },
+ {
+ "parameterName": "saplandscape",
+ "comparison": "isEqualTo",
+ "value": "sapinstanceoverview"
+ }
+ ],
+ "name": "query - VIS SAP Instance Overview",
"styleSettings": {
"showBorder": true
}
@@ -12125,42 +17661,69 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "Resources\r\n| where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets)\r\n| project Resource=id, resourceGroup, location",
- "size": 2,
- "title": "Orphan NSG",
- "noDataMessage": "No orphan NSG for the selection, Great job!",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, Landscape= tostring(properties.environment), type = tostring(split(type,\"/\",1)[0]) , configtype= tostring(properties.configuration.configurationType), sapProduct = properties.sapProduct, resourceGroup, tags",
+ "size": 0,
+ "title": "SAP SID Overview",
+ "noDataMessage": "VIS SAP Configuration not found",
"showExportToExcel": true,
- "exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
"gridSettings": {
- "rowLimit": 10000,
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "10ch"
+ }
+ }
+ ],
"filter": true,
"labelSettings": [
{
- "columnId": "Resource",
- "label": "NSG Name"
+ "columnId": "id",
+ "label": "SID"
},
{
- "columnId": "resourceGroup",
- "label": "Resource Group"
+ "columnId": "type",
+ "label": "Type"
},
{
- "columnId": "location",
- "label": "Azure Region"
+ "columnId": "configtype",
+ "label": "Configtype"
+ },
+ {
+ "columnId": "sapProduct",
+ "label": "SAP Product"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
}
]
}
},
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- "name": "query - Orphan NSG",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "saplandscape"
+ },
+ {
+ "parameterName": "saplandscape",
+ "comparison": "isEqualTo",
+ "value": "sapsidoverview"
+ }
+ ],
+ "name": "query - SAP SID Overview",
"styleSettings": {
"showBorder": true
}
@@ -12169,222 +17732,194 @@
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "Resources\r\n| where type =~ 'microsoft.network/applicationsecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets)\r\n| project Resource=id, resourceGroup, subscriptionId, location",
- "size": 2,
- "title": "Orphan ASG",
- "noDataMessage": "No orphan ASG for the selection, Great job!",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, Landscape= tostring(properties.environment)\r\n| summarize count() by Landscape",
+ "size": 3,
+ "title": "SAP Landscape Overview",
+ "noDataMessage": "No VIS SAP Landscape found",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "gridSettings": {
- "rowLimit": 10000,
- "filter": true
- }
- },
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
+ "visualization": "piechart"
},
- "name": "query - Orphan ASG",
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visoverview"
+ },
+ {
+ "parameterName": "Subscriptions",
+ "comparison": "isNotEqualTo"
+ }
+ ],
+ "name": "query - VIS SAP Overview Query",
"styleSettings": {
- "showBorder": true
+ "maxWidth": "33"
}
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "Resources \r\n| where type contains \"microsoft.compute/disks\" \r\n| extend diskState = tostring(properties.diskState)\r\n| where managedBy == \"\" \r\n and (diskState == 'Unattached' or diskState != 'ActiveSAS')\r\n| project id, diskState, resourceGroup, location, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB)",
- "size": 2,
- "title": "Orphan Disks",
- "noDataMessage": "No orphan Disk for the selection, Great job!",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| extend SID = tostring(split(id,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project id, hostname=properties.hostname , resourceGroup, type = tostring(split(type,\"/\",2)[0])\r\n| summarize count() by type",
+ "size": 3,
+ "title": "SAP Instance Type Overview",
+ "noDataMessage": "N VIS SAP Instance Type found",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "gridSettings": {
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Disk Name"
- },
- {
- "columnId": "diskState",
- "label": "Disk State"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "disk_tier",
- "label": "Disk Tier"
- },
- {
- "columnId": "disk_size_GB",
- "label": "Disk Size"
- }
- ]
- }
- },
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
+ "visualization": "piechart"
},
- "name": "query - Orphan Disks",
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visoverview"
+ },
+ {
+ "parameterName": "Subscriptions",
+ "comparison": "isNotEqualTo"
+ }
+ ],
+ "name": "query - VIS Instance Overview Query",
"styleSettings": {
- "showBorder": true
+ "maxWidth": "33%"
}
},
- {
- "type": 1,
- "content": {
- "json": "## Configuration Checks"
- },
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- "name": "text - Config Checks"
- },
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines' \r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project id, vmName = name, az = tostring(zones), vmSize = tostring(properties.hardwareProfile.vmSize), AvSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0]), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), nicId = tostring(nic.id) \r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations\r\n | where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| where AcceleratedNetworkingOn == \"false\"\r\n| summarize by id, nicId, vmName,vmSize,ipaddress, AvSet, ppg, az, AcceleratedNetworkingOn",
- "size": 2,
- "title": "VM's with disabled Accelerated Networking",
- "noDataMessage": "No VM with disabled AN, Great job!",
- "showExportToExcel": true,
+ "query": "advisorresources\r\n| where type =~ 'microsoft.advisor/recommendations' \r\n| where properties.lastUpdated >=ago(1d)\r\n| extend visId = split(split(split(id, '/centralInstances')[0], '/applicationInstances')[0], '/databaseInstances')[0]\r\n| extend SID= tostring(split(['id'], \"/\",8)[0])\r\n| extend resourceId = tostring(properties.resourceMetadata.resourceId)\r\n| extend impactedField = properties.impactedField\r\n| extend resourceTypeName = \"Database\"\r\n| extend impact = properties.impact\r\n| extend resourceTypeName = iff(impactedField has \"centralInstances\", \"Central service instance\", resourceTypeName)\r\n| extend resourceTypeName = iff(impactedField has \"applicationInstances\", \"App server instance\", resourceTypeName)\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n//| project resourceId, resourceTypeName, visId, impact, properties.shortDescription.solution, properties.category, properties.lastUpdated, SID\r\n| summarize count() by tostring(properties.category)",
+ "size": 3,
+ "title": "Well-Architected for SAP Summary",
+ "noDataMessage": "No WAF related observations found for the selected SAP system",
+ "exportMultipleValues": true,
+ "exportedParameters": [
+ {
+ "parameterType": 1
+ }
+ ],
"exportToExcelOptions": "all",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "Column1",
- "formatter": 5
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Virtual Machibe"
- },
- {
- "columnId": "nicId",
- "label": "NIC Name"
- }
- ]
- }
+ "visualization": "piechart"
},
- "name": "query - VM's with disabled Accelerated Networking",
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visoverview"
+ },
+ {
+ "parameterName": "Subscriptions",
+ "comparison": "isNotEqualTo"
+ }
+ ],
+ "name": "query - Well-Architected for SAP Summary",
"styleSettings": {
- "showBorder": true
+ "maxWidth": "33"
}
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
- "query": "Resources\r\n | where type =~ 'microsoft.network/publicipaddresses' and isnotempty(properties.ipAddress)\r\n | where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n | project id, resourceGroup, sku=sku.name, Tier=sku.tier, location",
- "size": 0,
- "title": "Public IP ",
- "noDataMessage": "No Public IP resource found!",
- "showExportToExcel": true,
- "exportToExcelOptions": "all",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, configtype= tostring(properties.configuration.configurationType)\r\n| summarize count() by configtype\r\n",
+ "size": 3,
+ "title": "SAP Overview by configuration",
+ "noDataMessage": "No VIS SAP Configuration foud",
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources",
"crossComponentResources": [
"{Subscriptions}"
],
- "visualization": "table",
- "gridSettings": {
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Public IP Name"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "sku",
- "label": "SKU"
- },
- {
- "columnId": "Tier",
- "label": "Tier"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- }
- ]
+ "visualization": "piechart"
+ },
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visoverview"
+ },
+ {
+ "parameterName": "Subscriptions",
+ "comparison": "isNotEqualTo"
}
+ ],
+ "name": "query - VIS SAP Configuration overview query",
+ "styleSettings": {
+ "maxWidth": "33"
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, location\r\n| summarize count() by location",
+ "size": 3,
+ "title": "Number of SAP Deployment per region",
+ "noDataMessage": "No VIS configuration found",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
},
- "name": "query - Public IP",
+ "customWidth": "33",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visoverview"
+ },
+ {
+ "parameterName": "Subscriptions",
+ "comparison": "isNotEqualTo"
+ }
+ ],
+ "name": "query -SAP Region deployment",
"styleSettings": {
- "showBorder": true
+ "maxWidth": "33"
}
- }
- ],
- "exportParameters": true
- },
- "conditionalVisibility": {
- "parameterName": "Report_check",
- "comparison": "isEqualTo",
- "value": "Yes"
- },
- "name": "group - Report Overview"
- },
- {
- "type": 1,
- "content": {
- "json": "### VIS"
- },
- "conditionalVisibility": {
- "parameterName": "show",
- "comparison": "isEqualTo",
- "value": "NoShow"
- },
- "name": "text - VIS Group Start"
- },
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "title": "VIS Group",
- "items": [
+ },
{
"type": 11,
"content": {
@@ -12392,1354 +17927,1090 @@
"style": "tabs",
"links": [
{
- "id": "20d179e1-fb3c-4407-b1f0-a17edda878c1",
- "cellValue": "visoverview",
+ "id": "c6cd90f9-3900-4219-8244-4f8eee9bf025",
+ "cellValue": "compute",
"linkTarget": "parameter",
- "linkLabel": "VIS Overview",
- "preText": "VIS Overview",
+ "linkLabel": "Compute Overview",
+ "subTarget": "computeoverview",
"style": "link"
},
{
- "id": "9d7e9d85-2092-4d3f-8a5a-d2619bbd638d",
- "cellValue": "vissaplandscape",
+ "id": "6cd1f6b4-8322-41c8-aaa1-992c2860f942",
+ "cellValue": "compute",
"linkTarget": "parameter",
- "linkLabel": "SAP Landscape",
- "preText": "VIS SAP Landscape",
+ "linkLabel": "Compute List",
+ "subTarget": "VMList",
"style": "link"
},
{
- "id": "4b83ade7-2583-447a-a2ea-c51be3a26602",
- "cellValue": "viscompute",
+ "id": "4bea9c59-7024-4824-94dd-35ee2e9373e2",
+ "cellValue": "compute",
"linkTarget": "parameter",
- "linkLabel": "Compute",
- "preText": "VIS Compute",
+ "linkLabel": "Compute+OS Disk",
+ "subTarget": "computeos",
+ "style": "link"
+ },
+ {
+ "id": "6fcefb44-a191-46f6-96b7-087fd6e8ab0e",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Managed Data Disk",
+ "subTarget": "datadisk",
+ "style": "link"
+ },
+ {
+ "id": "7b636445-ef8a-45de-8720-1730a37323a1",
+ "cellValue": "compute",
+ "linkTarget": "parameter",
+ "linkLabel": "Compute Extension",
+ "subTarget": "Extension",
"style": "link"
},
{
- "id": "a47e4c3a-ffc1-4302-90aa-c9d7919a8044",
- "cellValue": "visconfiguration",
+ "id": "db957d65-0b5d-4255-97dd-3b949ec13bbf",
+ "cellValue": "compute",
"linkTarget": "parameter",
- "linkLabel": "Configuration",
- "preText": "VIS Configuration",
+ "linkLabel": "VM Stats",
+ "subTarget": "vmstats",
"style": "link"
}
]
},
- "conditionalVisibility": {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- "name": "links - VIS Overview Links"
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "show",
- "comparison": "isEqualTo",
- "value": "NoShow"
- },
- "name": "group -VIS Group"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "9f093954-c9e0-45fa-b1e1-91260a61cc4d",
- "cellValue": "vis",
- "linkTarget": "parameter",
- "linkLabel": "VIS Overview",
- "subTarget": "visoverview",
- "preText": "VIS Overview",
- "style": "link"
- },
- {
- "id": "322ba4d3-0527-4e5f-ad09-9b552d65eef4",
- "cellValue": "vis",
- "linkTarget": "parameter",
- "linkLabel": "VIS SAP Landscape",
- "subTarget": "saplandcape",
- "style": "link"
- },
- {
- "id": "73e6ea22-da63-4aff-8f56-2b8d75d2f4d4",
- "cellValue": "vis",
- "linkTarget": "parameter",
- "linkLabel": "VIS Compute",
- "subTarget": "viscompute",
- "preText": "VIS Compute",
- "style": "link"
- },
- {
- "id": "80a3f65f-55d4-4df8-ab5b-8fb593959e26",
- "cellValue": "vis",
- "linkTarget": "parameter",
- "linkLabel": "Platform Configuration",
- "subTarget": "visconfiguration",
- "preText": "VIS Configuraton",
- "style": "link"
- },
- {
- "id": "a2157006-30fd-42c4-a4dd-a683290994cf",
- "cellValue": "vis",
- "linkTarget": "parameter",
- "linkLabel": "Monitoring & Service Health",
- "subTarget": "vismonitoring",
- "style": "link"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "name": "links - VIS Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, Landscape= tostring(properties.environment)\r\n| summarize count() by Landscape",
- "size": 3,
- "title": "SAP Landscape Overview",
- "noDataMessage": "No VIS SAP Landscape found",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visoverview"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "customWidth": "33",
- "name": "query - VIS SAP Overview Query",
- "styleSettings": {
- "maxWidth": "33"
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| extend SID = tostring(split(id,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project id, hostname=properties.hostname , resourceGroup, type = tostring(split(type,\"/\",2)[0])\r\n| summarize count() by type",
- "size": 3,
- "title": "SAP Instance Type Overview",
- "noDataMessage": "N VIS SAP Instance Type found",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visoverview"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "customWidth": "33",
- "name": "query - VIS Instance Overview Query",
- "styleSettings": {
- "maxWidth": "33%"
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "advisorresources\r\n| where type =~ 'microsoft.advisor/recommendations' \r\n| where properties.lastUpdated >=ago(1d)\r\n| extend visId = split(split(split(id, '/centralInstances')[0], '/applicationInstances')[0], '/databaseInstances')[0]\r\n| extend SID= tostring(split(['id'], \"/\",8)[0])\r\n| extend resourceId = tostring(properties.resourceMetadata.resourceId)\r\n| extend impactedField = properties.impactedField\r\n| extend resourceTypeName = \"Database\"\r\n| extend impact = properties.impact\r\n| extend resourceTypeName = iff(impactedField has \"centralInstances\", \"Central service instance\", resourceTypeName)\r\n| extend resourceTypeName = iff(impactedField has \"applicationInstances\", \"App server instance\", resourceTypeName)\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n//| project resourceId, resourceTypeName, visId, impact, properties.shortDescription.solution, properties.category, properties.lastUpdated, SID\r\n| summarize count() by tostring(properties.category)",
- "size": 3,
- "title": "Well-Architected for SAP Summary",
- "noDataMessage": "No WAF related observations found for the selected SAP system",
- "exportMultipleValues": true,
- "exportedParameters": [
- {
- "parameterType": 1
- }
- ],
- "exportToExcelOptions": "all",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visoverview"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "customWidth": "33",
- "name": "query - Well-Architected for SAP Summary",
- "styleSettings": {
- "maxWidth": "33"
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, configtype= tostring(properties.configuration.configurationType)\r\n| summarize count() by configtype\r\n",
- "size": 3,
- "title": "SAP Overview by configuration",
- "noDataMessage": "No VIS SAP Configuration foud",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visoverview"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "customWidth": "33",
- "name": "query - VIS SAP Configuration overview query",
- "styleSettings": {
- "maxWidth": "33"
- }
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, location\r\n| summarize count() by location",
- "size": 3,
- "title": "Number of SAP Deployment per region",
- "noDataMessage": "No VIS configuration found",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visoverview"
- },
- {
- "parameterName": "Subscriptions",
- "comparison": "isNotEqualTo"
- }
- ],
- "customWidth": "33",
- "name": "query -SAP Region deployment",
- "styleSettings": {
- "maxWidth": "33"
- }
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "994cb1bc-27de-48ea-8f38-7527d52f6935",
- "cellValue": "saplandscape",
- "linkTarget": "parameter",
- "linkLabel": "SAP Systems overview",
- "subTarget": "sapoverview",
- "preText": "SAP ",
- "style": "link"
- },
- {
- "id": "2613eef1-f693-4ee4-a857-3b2129af6362",
- "cellValue": "saplandscape",
- "linkTarget": "parameter",
- "linkLabel": "SAP Instance Overview",
- "subTarget": "sapinstanceoverview",
- "style": "link"
- },
- {
- "id": "0587c130-dabc-428d-9715-0f97b113e93a",
- "cellValue": "saplandscape",
- "linkTarget": "parameter",
- "linkLabel": "SAP SID Overview",
- "subTarget": "sapsidoverview",
- "style": "link"
- },
- {
- "id": "f93c0bb3-325e-4d2e-8e8d-796700b424e5",
- "cellValue": "saplandscape",
- "linkTarget": "parameter",
- "linkLabel": "OS Configuration Checks",
- "subTarget": "oschecks",
- "style": "link"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "saplandcape"
- }
- ],
- "name": "links - VIS SAP Landscape Links"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| extend SID = tostring(split(id,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project SID= tostring(split(id,\"/\",8)[0]), SAPVMName=tostring(split(properties.virtualMachineId,\"/\",8)[0]) , Instancename=name, type = tostring(split(type,\"/\",2)[0]), status=properties.status, health=tostring(properties.health)\r\n| summarize count() by SID",
- "size": 0,
- "title": "SAP System Overview",
- "noDataMessage": "VIS SAP Configuration not found",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "graph",
- "graphSettings": {
- "type": 2,
- "topContent": {
- "columnMatch": "SID",
- "formatter": 1
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ }
+ ],
+ "name": "links - compute overview - Copy"
},
- "centerContent": {
- "columnMatch": "count_",
- "formatter": 1,
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources | where type == \"microsoft.compute/virtualmachines\"\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend vmState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| extend vmState = iif(isempty(vmState), \"VM State Unknown\", (vmState))\r\n| summarize count() by vmState",
+ "size": 3,
+ "title": "Azure Compute Status Overview",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart",
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
}
- }
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeoverview"
+ }
+ ],
+ "name": "VIS -Compute Overview"
},
- "nodeIdField": "SID",
- "graphOrientation": 3,
- "showOrientationToggles": false,
- "nodeSize": null,
- "staticNodeSize": 100,
- "colorSettings": {
- "nodeColorField": "health",
+ {
"type": 3,
- "thresholdsGrid": [
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources | where type =~ 'Microsoft.Compute/virtualMachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend licenseType = tostring(properties.['licenseType'])\r\n| extend HybridBenefit = iif(properties.licenseType == \"Windows_Server\", \"Azure Hybrid Benefit\", \"Not Enabled\")\r\n| project id,OStype =tostring(properties.storageProfile.osDisk.osType),licenseType,HybridBenefit,location, resourceGroup\r\n| extend licenseType = iif(isempty(licenseType), \"Blank/PAYG\", (licenseType))\r\n| summarize count() by licenseType",
+ "size": 3,
+ "title": "Azure Compute OS License Type",
+ "noDataMessage": "No license data detected",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "piechart"
+ },
+ "customWidth": "50",
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
{
- "operator": "Default",
- "thresholdValue": null,
- "representation": "lightBlue"
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeoverview"
}
- ]
+ ],
+ "name": "VIS - VM OS License Type"
},
- "hivesMargin": 5,
- "edgeColorSettings": null
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "saplandcape"
- },
- {
- "parameterName": "saplandscape",
- "comparison": "isEqualTo",
- "value": "sapoverview"
- }
- ],
- "name": "query - VIS SAP Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances' or type=~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n| extend SID = tostring(split(id,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project SID = tostring(split(id,\"/\",8)[0]), id, hostname=properties.hostname , resourceGroup, InstanceNumber= properties.instanceNo, Instancename=name, type = tostring(split(type,\"/\",2)[0]), SAPKernel= properties.kernelVersion, SAPkernelPatch= properties.kernelPatch, location, tags\r\n\r\n",
- "size": 2,
- "title": "SAP Instance Overview",
- "noDataMessage": "No VIS configuration",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "advisorresources\r\n| where type =~ 'microsoft.advisor/recommendations' \r\n| where properties.lastUpdated >=ago(1d)\r\n| extend visId = split(split(split(id, '/centralInstances')[0], '/applicationInstances')[0], '/databaseInstances')[0]\r\n| extend SID= tostring(split(['id'], \"/\",8)[0])\r\n| extend resourceId = tostring(properties.resourceMetadata.resourceId)\r\n| extend impactedField = properties.impactedField\r\n| extend resourceTypeName = \"Database\"\r\n| extend impact = properties.impact\r\n| extend resourceTypeName = iff(impactedField has \"centralInstances\", \"Central service instance\", resourceTypeName)\r\n| extend resourceTypeName = iff(impactedField has \"applicationInstances\", \"App server instance\", resourceTypeName)\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project resourceId, resourceTypeName, visId, impact, properties.shortDescription.solution, properties.category, properties.lastUpdated, SID",
+ "size": 0,
+ "title": "OS Configuration Checks",
+ "noDataMessage": "No OS configuration observations found for the selected SAP system",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "resourceId",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "18ch"
+ }
+ },
+ {
+ "columnMatch": "resourceTypeName",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "22ch"
+ }
+ },
+ {
+ "columnMatch": "visId",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "properties_shortDescription_solution",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "100ch"
+ }
+ },
+ {
+ "columnMatch": "SID",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "resourceId",
+ "label": "SAP Instance"
+ },
+ {
+ "columnId": "resourceTypeName",
+ "label": "Type"
+ },
+ {
+ "columnId": "impact",
+ "label": "Impact"
+ },
+ {
+ "columnId": "properties_shortDescription_solution",
+ "label": "Description"
+ },
+ {
+ "columnId": "properties_category",
+ "label": "WAF Pillar"
+ },
+ {
+ "columnId": "properties_lastUpdated",
+ "label": "Last Updated"
+ }
+ ]
}
},
- {
- "columnMatch": "Instancename",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
- }
- }
- ],
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "Instance"
- },
- {
- "columnId": "hostname",
- "label": "Hostname"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "InstanceNumber",
- "label": "Instance No."
- },
- {
- "columnId": "Instancename",
- "label": "Name"
- },
- {
- "columnId": "type",
- "label": "Type"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "saplandcape"
- },
- {
- "parameterName": "saplandscape",
- "comparison": "isEqualTo",
- "value": "sapinstanceoverview"
- }
- ],
- "name": "query - VIS SAP Instance Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances'\r\n| where name in ({system_SID}) or '*' in ({system_SID})\r\n| project id, Landscape= tostring(properties.environment), type = tostring(split(type,\"/\",1)[0]) , configtype= tostring(properties.configuration.configurationType), sapProduct = properties.sapProduct, resourceGroup, tags",
- "size": 0,
- "title": "SAP SID Overview",
- "noDataMessage": "VIS SAP Configuration not found",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "saplandscape"
+ },
+ {
+ "parameterName": "saplandscape",
+ "comparison": "isEqualTo",
+ "value": "oschecks"
}
+ ],
+ "name": "query - WAF",
+ "styleSettings": {
+ "showBorder": true
}
- ],
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "SID"
- },
- {
- "columnId": "type",
- "label": "Type"
- },
- {
- "columnId": "configtype",
- "label": "Configtype"
- },
- {
- "columnId": "sapProduct",
- "label": "SAP Product"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "saplandcape"
- },
- {
- "parameterName": "saplandscape",
- "comparison": "isEqualTo",
- "value": "sapsidoverview"
- }
- ],
- "name": "query - SAP SID Overview"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
- {
- "id": "9f074747-c5c9-4c79-bac1-76dde4810b2d",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute Overview",
- "subTarget": "computeoverview",
- "style": "link"
- },
- {
- "id": "9b1e36a8-780e-4a9f-8847-46893f66faf6",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute List",
- "subTarget": "VMList",
- "style": "link"
- },
- {
- "id": "bcd43e03-ea50-4b35-8639-f100b98fbed2",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute+OS Disk",
- "subTarget": "computeos",
- "style": "link"
- },
- {
- "id": "970a0c00-222a-447f-9fe6-72bfb3b817ca",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Managed Data Disk",
- "subTarget": "datadisk",
- "style": "link"
- },
- {
- "id": "8621b6d9-8dee-43ce-84a7-d95bebb57a3d",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "Compute Extension",
- "subTarget": "Extension",
- "style": "link"
},
{
- "id": "a45e3a03-086b-43e0-a23c-2cfbee127003",
- "cellValue": "compute",
- "linkTarget": "parameter",
- "linkLabel": "VM Stats",
- "subTarget": "vmstats",
- "style": "link"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- }
- ],
- "name": "links - compute overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources | where type == \"microsoft.compute/virtualmachines\"\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend vmState = tostring(properties.extended.instanceView.powerState.displayStatus)\r\n| extend vmState = iif(isempty(vmState), \"VM State Unknown\", (vmState))\r\n| summarize count() by vmState",
- "size": 3,
- "title": "Azure Compute Status Overview",
- "noDataMessage": "No compute detected",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart",
- "chartSettings": {
- "ySettings": {
- "numberFormatSettings": {
- "unit": 0,
- "options": {
- "style": "decimal",
- "useGrouping": true
- }
- }
- }
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeoverview"
- }
- ],
- "customWidth": "50",
- "name": "VIS -Compute Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources | where type =~ 'Microsoft.Compute/virtualMachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend licenseType = tostring(properties.['licenseType'])\r\n| extend HybridBenefit = iif(properties.licenseType == \"Windows_Server\", \"Azure Hybrid Benefit\", \"Not Enabled\")\r\n| project id,OStype =tostring(properties.storageProfile.osDisk.osType),licenseType,HybridBenefit,location, resourceGroup\r\n| extend licenseType = iif(isempty(licenseType), \"Blank/PAYG\", (licenseType))\r\n| summarize count() by licenseType",
- "size": 3,
- "title": "Azure Compute OS License Type",
- "noDataMessage": "No license data detected",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "visualization": "piechart"
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeoverview"
- }
- ],
- "customWidth": "50",
- "name": "VIS - VM OS License Type"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources\r\n| where type =~ \"microsoft.compute/virtualMachines\"\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| project id, vmName = name, powerstate = tostring(properties.extended.instanceView.powerState.displayStatus), vmsize = tostring(properties.hardwareProfile.vmSize), \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer),\r\n location, bootDiagnostics =tostring(properties.diagnosticsProfile.bootDiagnostics.enabled) ,avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n, ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), avZone = tostring(zones), resourceGroup, tags=tostring(tags)",
- "size": 2,
- "title": "VM Compute List",
- "noDataMessage": "No VM found for the selection",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "14ch"
- }
- },
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "publisher",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "is Empty",
- "representation": "1",
- "text": "{0}BYOL/BYOS"
+ "type": 12,
+ "content": {
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 9,
+ "content": {
+ "version": "KqlParameterItem/1.0",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "parameters": [
+ {
+ "id": "890a9d4f-bb4f-4846-bf1a-4f534033c464",
+ "version": "KqlParameterItem/1.0",
+ "name": "VirtualMachines",
+ "type": 5,
+ "isRequired": true,
+ "multiSelect": true,
+ "quote": "'",
+ "delimiter": ",",
+ "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n\t| order by name asc\r\n\t| extend Rank = row_number()\r\n\t| project value = id, label = id, selected = Rank <= 25",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "typeSettings": {
+ "additionalResourceOptions": [
+ "value::1",
+ "value::all"
+ ],
+ "showDefault": false
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "defaultValue": "value::1",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "value": null
+ },
+ {
+ "id": "bf0e62cf-f2dd-491f-988e-782b334c4522",
+ "version": "KqlParameterItem/1.0",
+ "name": "TimeRange",
+ "type": 4,
+ "typeSettings": {
+ "selectableValues": [
+ {
+ "durationMs": 300000
+ },
+ {
+ "durationMs": 900000
+ },
+ {
+ "durationMs": 1800000
+ },
+ {
+ "durationMs": 3600000
+ },
+ {
+ "durationMs": 14400000
+ },
+ {
+ "durationMs": 43200000
+ },
+ {
+ "durationMs": 86400000
+ },
+ {
+ "durationMs": 172800000
+ },
+ {
+ "durationMs": 259200000
+ },
+ {
+ "durationMs": 604800000
+ },
+ {
+ "durationMs": 1209600000
+ },
+ {
+ "durationMs": 2419200000
+ },
+ {
+ "durationMs": 2592000000
+ },
+ {
+ "durationMs": 5184000000
+ },
+ {
+ "durationMs": 7776000000
+ }
+ ]
+ },
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "value": {
+ "durationMs": 5184000000
+ }
+ },
+ {
+ "id": "02b03e23-7c0c-4909-89c5-8b1b62b687d3",
+ "version": "KqlParameterItem/1.0",
+ "name": "Message",
+ "type": 1,
+ "query": "where type == 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| summarize Selected = countif(id in ({VirtualMachines:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ }
+ ],
+ "style": "pills",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- },
- {
- "columnMatch": "imagesku",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "contains",
- "thresholdValue": "gen2",
- "representation": "success",
- "text": "{0}{1}"
+ "name": "parameters - 0"
+ },
+ {
+ "type": 1,
+ "content": {
+ "json": "{Message}\r\n_Virtual machines_"
},
- {
- "operator": "contains",
- "thresholdValue": "gensecond",
- "representation": "success",
- "text": "{0}{1}"
+ "name": "VIS Monitoring - VM Message"
+ },
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "83583394-3202-4227-a74a-0dfda8e91d26",
+ "cellValue": "vismonitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Overview",
+ "subTarget": "visoverview",
+ "preText": "Overview",
+ "style": "link"
+ },
+ {
+ "id": "9e591696-0138-407f-a7c4-df3881b555e4",
+ "cellValue": "vismonitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Key Metrics",
+ "subTarget": "viskeymetrics",
+ "preText": "Key Metrics",
+ "style": "link"
+ },
+ {
+ "id": "9682d94f-a7f8-4fbc-8f71-362e6ed87951",
+ "cellValue": "vismonitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Azure Resource Health",
+ "subTarget": "visresourcehealth",
+ "style": "link"
+ },
+ {
+ "id": "da31164b-f557-4f55-9cef-26636717ba1b",
+ "cellValue": "vismonitor",
+ "linkTarget": "parameter",
+ "linkLabel": "Compute Change Analysis",
+ "subTarget": "viscomputechange",
+ "style": "link"
+ }
+ ]
},
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "1",
- "text": "{0}Review"
- }
- ]
- }
- },
- {
- "columnMatch": "bootDiagnostics",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "true",
- "representation": "success",
- "text": "{0}{1}"
+ "name": "VIS Monitor - Links"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbook27f9ed5d-a85d-42b3-afa6-f6738ff3dcb5",
+ "version": "MetricsItem/2.0",
+ "size": 0,
+ "chartType": -3,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContext": {
+ "durationMs": 3600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4
+ }
+ ],
+ "title": "Virtual Machine CPU Usage",
+ "graphSettings": {
+ "type": 2,
+ "topContent": {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "showIcon": false
+ }
+ },
+ "centerContent": {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 17,
+ "options": {
+ "maximumSignificantDigits": 3,
+ "maximumFractionDigits": 2
+ }
+ }
+ },
+ "hivesContent": {
+ "columnMatch": "Subscription",
+ "formatter": 1
+ },
+ "nodeIdField": "Name",
+ "graphOrientation": 3,
+ "showOrientationToggles": false,
+ "nodeSize": null,
+ "staticNodeSize": 100,
+ "colorSettings": {
+ "nodeColorField": "microsoft.compute/virtualmachines--Percentage CPU",
+ "type": 4,
+ "heatmapPalette": "greenRed",
+ "heatmapMin": 30,
+ "heatmapMax": 80,
+ "emptyValueColor": "gray"
+ },
+ "groupByField": "Subscription",
+ "hivesMargin": 5,
+ "edgeColorSettings": null
+ },
+ "resourceLimit": 1000,
+ "gridSettings": {
+ "rowLimit": 10000
+ }
},
- {
- "operator": "!=",
- "thresholdValue": "true",
- "representation": "1",
- "text": "{0}Review"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "vismonitoring"
+ },
+ {
+ "parameterName": "vismonitor",
+ "comparison": "isEqualTo",
+ "value": "visoverview"
+ }
+ ],
+ "name": "VIS Monitor - CPU Usage"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "{\"version\":\"AzureHealthQuery/1.0\",\"queryType\":\"Detailed\"}",
+ "size": 0,
+ "title": "Azure Compute Resource Health",
+ "noDataMessage": "No Azure Resource Health data found",
+ "showExportToExcel": true,
+ "queryType": 4,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "crossComponentResources": [
+ "{VirtualMachines}"
+ ],
+ "visualization": "graph",
+ "graphSettings": {
+ "type": 2,
+ "topContent": {
+ "columnMatch": "Availability state",
+ "formatter": 1
+ },
+ "centerContent": {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "subTarget": "resourcehealth",
+ "linkIsContextBlade": true,
+ "showIcon": false
+ }
+ },
+ "nodeIdField": "Name",
+ "graphOrientation": 3,
+ "showOrientationToggles": false,
+ "nodeSize": null,
+ "staticNodeSize": 100,
+ "colorSettings": {
+ "nodeColorField": "Availability state",
+ "type": 3,
+ "thresholdsGrid": [
+ {
+ "operator": "==",
+ "thresholdValue": "Available",
+ "representation": "green"
+ },
+ {
+ "operator": "Default",
+ "thresholdValue": null,
+ "representation": "brown"
+ }
+ ]
+ },
+ "hivesMargin": 5,
+ "edgeColorSettings": null
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "vismonitoring"
+ },
+ {
+ "parameterName": "vismonitor",
+ "comparison": "isEqualTo",
+ "value": "visresourcehealth"
+ }
+ ],
+ "name": "VIS Monitor - Azure Resource Health"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "{\"version\":\"ChangeAnalysis/1.0\",\"changeLevels\":[\"Important\"]}",
+ "size": 0,
+ "showAnalytics": true,
+ "title": "Compute Change Analysis - Select one VM at a time",
+ "noDataMessage": "No data found",
+ "timeContext": {
+ "durationMs": 86400000
+ },
+ "queryType": 13,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "crossComponentResources": [
+ "{VirtualMachines}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "Level",
+ "label": "Level"
+ },
+ {
+ "columnId": "Resource",
+ "label": "Resource"
+ },
+ {
+ "columnId": "Time",
+ "label": "Time"
+ },
+ {
+ "columnId": "Category",
+ "label": "Category"
+ },
+ {
+ "columnId": "PropertyChanged",
+ "label": "Property Changed"
+ },
+ {
+ "columnId": "JsonPath",
+ "label": "JSON Path"
+ },
+ {
+ "columnId": "Description",
+ "label": "Description"
+ },
+ {
+ "columnId": "OldValue",
+ "label": "Old Value"
+ },
+ {
+ "columnId": "NewValue",
+ "label": "New Value"
+ },
+ {
+ "columnId": "InitiatedBy",
+ "label": "Initiated By"
+ },
+ {
+ "columnId": "FakeAggregation",
+ "label": "Tally"
+ },
+ {
+ "columnId": "ChangeDetails",
+ "label": "Change Details"
+ }
+ ]
+ }
},
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "success",
- "text": "{0}{1}"
- }
- ]
- }
- }
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "powerstate",
- "label": "VM State"
- },
- {
- "columnId": "os_type",
- "label": "OS Type"
- },
- {
- "columnId": "publisher",
- "label": "Image Publisher"
- },
- {
- "columnId": "version",
- "label": "Image Version"
- },
- {
- "columnId": "imagesku",
- "label": "Image SKU"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "bootDiagnostics",
- "label": "Boot Diagnostic"
- },
- {
- "columnId": "avSet",
- "label": "AvSet"
- },
- {
- "columnId": "ppg",
- "label": "PPG"
- },
- {
- "columnId": "avZone",
- "label": "AvZone"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "VMList"
- }
- ],
- "name": "query - VM Compute List"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n//| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), osDisk = tostring(properties.storageProfile.osDisk.name), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), caching= tostring(properties.storageProfile.osDisk.caching)\r\n, createOption=tostring(properties.storageProfile.osDisk.createOption), osType=tostring(properties.storageProfile.osDisk.osType), avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n| join ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| project id1=id, diskname=name, osDisk=tostring(split(id,\"/\",8)[0]), vmName=tostring(split(managedBy,\"/\",8)[0]), sku =sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), managedBy, location, resourceGroup\r\n)\r\non vmName, osDisk\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName, vmSize, osType, id1, diskname, sku, caching,disk_tier, disk_size_GB,diskbandwidthMBps, disk_iops, createOption, location, resourceGroup , ppg , avSet",
- "size": 0,
- "title": "Compute+OS Disk Overview",
- "noDataMessage": "No OS disk found",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
- }
- },
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "vmSize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "osType",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "8ch"
- }
- },
- {
- "columnMatch": "diskname",
- "formatter": 5
- },
- {
- "columnMatch": "sku",
- "formatter": 18,
- "formatOptions": {
- "thresholdsOptions": "icons",
- "thresholdsGrid": [
- {
- "operator": "contains",
- "thresholdValue": "Premium",
- "representation": "success",
- "text": "{0}{1}"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "vismonitoring"
+ },
+ {
+ "parameterName": "vismonitor",
+ "comparison": "isEqualTo",
+ "value": "viscomputechange"
+ }
+ ],
+ "name": "VIS Monitor - Change Analysis"
+ },
+ {
+ "type": 10,
+ "content": {
+ "chartId": "workbookd6fc1bfa-3416-43fb-a49e-f3cb76fd23d9",
+ "version": "MetricsItem/2.0",
+ "size": 3,
+ "chartType": 0,
+ "resourceType": "microsoft.compute/virtualmachines",
+ "metricScope": 0,
+ "resourceParameter": "VirtualMachines",
+ "resourceIds": [
+ "{VirtualMachines}"
+ ],
+ "timeContext": {
+ "durationMs": 3600000
+ },
+ "metrics": [
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Percentage CPU",
+ "aggregation": 4
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
+ "aggregation": 7
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec",
+ "aggregation": 7
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network In Total",
+ "aggregation": 1
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Network Out Total",
+ "aggregation": 1
+ }
+ ],
+ "title": "Compute Key Metrics",
+ "resourceLimit": 1000,
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "Subscription",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "Name",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 1,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 21,
+ "formatOptions": {
+ "palette": "blue"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 31,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 11,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
+ "formatter": 8,
+ "formatOptions": {
+ "palette": "blue"
+ },
+ "numberFormat": {
+ "unit": 2,
+ "options": {
+ "style": "decimal"
+ }
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
+ "label": "Percentage CPU (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "label": "Percentage CPU Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
+ "label": "Data Disk Read Operations/Sec (Count)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec Timeline",
+ "label": "Data Disk Read Operations/Sec Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec",
+ "label": "Data Disk Write Bytes/Sec (Count)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec Timeline",
+ "label": "Data Disk Write Bytes/Sec Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total",
+ "label": "Network In Total (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
+ "label": "Network In Total Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total",
+ "label": "Network Out Total (Sum)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
+ "label": "Network Out Total Timeline"
+ }
+ ]
+ }
},
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "warning",
- "text": "{0}{1}"
- }
- ],
- "customColumnWidthSetting": "20ch"
- }
- },
- {
- "columnMatch": "caching",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "12ch"
- }
- },
- {
- "columnMatch": "disk_tier",
- "formatter": 5
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "vismonitoring"
+ },
+ {
+ "parameterName": "vismonitor",
+ "comparison": "isEqualTo",
+ "value": "viskeymetrics"
+ }
+ ],
+ "name": "VIS Monitor - Key Metrics"
+ }
+ ]
},
- {
- "columnMatch": "disk_size_GB",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "14ch"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "vismonitoring"
}
- },
- {
- "columnMatch": "disk_iops",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
+ ],
+ "name": "VIS Group - Monitoring & Service Health"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources\r\n| where type =~ \"microsoft.compute/virtualMachines\"\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| project id, vmName = name, powerstate = tostring(properties.extended.instanceView.powerState.displayStatus), vmsize = tostring(properties.hardwareProfile.vmSize), \r\n os_type = tostring(properties.storageProfile.osDisk.osType),publisher= tostring(properties.storageProfile.imageReference.publisher), version= tostring(properties.storageProfile.imageReference.version), imagesku= tostring(properties.storageProfile.imageReference.sku) ,offer= tostring(properties.storageProfile.imageReference.offer),\r\n location, bootDiagnostics =tostring(properties.diagnosticsProfile.bootDiagnostics.enabled) ,avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n, ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), avZone = tostring(zones), resourceGroup, tags=tostring(tags)",
+ "size": 0,
+ "title": "VM Compute List",
+ "noDataMessage": "No VM found for the selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
}
},
- {
- "columnMatch": "createOption",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "15ch"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "VMList"
}
+ ],
+ "name": "query - VM Compute List",
+ "styleSettings": {
+ "showBorder": true
}
- ],
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "vmName",
- "label": "Name"
- },
- {
- "columnId": "vmSize",
- "label": "SKU"
- },
- {
- "columnId": "osType",
- "label": "OS"
- },
- {
- "columnId": "id1",
- "label": "Disk Name"
- },
- {
- "columnId": "diskname",
- "label": "Disk name"
- },
- {
- "columnId": "sku",
- "label": "Disk SKU"
- },
- {
- "columnId": "caching",
- "label": "Caching"
- },
- {
- "columnId": "disk_tier",
- "label": "Tier"
- },
- {
- "columnId": "disk_size_GB",
- "label": "Size (GB)"
- },
- {
- "columnId": "diskbandwidthMBps",
- "label": "MBps"
- },
- {
- "columnId": "disk_iops",
- "label": "IOPS"
- },
- {
- "columnId": "createOption",
- "label": "CreateOption"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "ppg",
- "label": "PPG"
- },
- {
- "columnId": "avSet",
- "label": "AvSet"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "computeos"
- }
- ],
- "name": "VIS - Compute+OS Query"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, \r\n vmSize= tostring(properties.hardwareProfile.vmSize), os_type = tostring(properties.storageProfile.osDisk.osType),\r\n datadisk_lun = toint(datadisks.lun), datadisk_name = tostring(datadisks.name), datadisksize = tostring(datadisks.diskSizeGB), \r\n datadisk_cache = tostring(datadisks.caching), datadisk_wa = tostring(datadisks.writeAcceleratorEnabled)\r\n//| summarize by vmName, location, powerstate, avZone, avSet, ppg, vmSize, osname, vmgen, datadisklun, datadiskname, datadisksize, datadiskcache, datadiskwa\r\n| join kind = leftouter ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| parse managedBy with * \"/virtualMachines/\" vmName\r\n| parse id with * \"/disks/\" datadisk_name \r\n| project id1=id, sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), datadisk_name, vmName, managedBy, location, resourceGroup\r\n)\r\non vmName, datadisk_name\r\n| project-away datadisk_name, datadisk_name1, vmName1, managedBy\r\n| sort by vmName asc , datadisk_lun asc\r\n//| distinct datadisk_name",
- "size": 2,
- "title": "Managed Data Disk Overview",
- "noDataMessage": "No Managed Data Disk found",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "13ch"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n//| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), osDisk = tostring(properties.storageProfile.osDisk.name), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), caching= tostring(properties.storageProfile.osDisk.caching)\r\n, createOption=tostring(properties.storageProfile.osDisk.createOption), osType=tostring(properties.storageProfile.osDisk.osType), avSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0])\r\n| join ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| project id1=id, diskname=name, osDisk=tostring(split(id,\"/\",8)[0]), vmName=tostring(split(managedBy,\"/\",8)[0]), sku =sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), managedBy, location, resourceGroup\r\n)\r\non vmName, osDisk\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| project id, vmName, vmSize, osType, id1, diskname, sku, caching,disk_tier, disk_size_GB,diskbandwidthMBps, disk_iops, createOption, location, resourceGroup , ppg , avSet",
+ "size": 0,
+ "title": "Compute+OS",
+ "noDataMessage": "No VM found for the selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
}
},
- {
- "columnMatch": "vmName",
- "formatter": 5
- },
- {
- "columnMatch": "vmSize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "computeos"
}
+ ],
+ "name": "VIS - Compute+OS Query",
+ "styleSettings": {
+ "showBorder": true
}
- ],
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "vmSize",
- "label": "VM SKU"
- },
- {
- "columnId": "os_type",
- "label": "OS Type"
- },
- {
- "columnId": "datadisk_lun",
- "label": "LUN"
- },
- {
- "columnId": "datadisksize",
- "label": "Disk SKU"
- },
- {
- "columnId": "datadisk_cache",
- "label": "Disk Cache"
- },
- {
- "columnId": "datadisk_wa",
- "label": "WA"
- },
- {
- "columnId": "id1",
- "label": "Disk Name"
- },
- {
- "columnId": "sku_name",
- "label": "Disk SKU"
- },
- {
- "columnId": "disk_tier",
- "label": "Disk Tier"
- },
- {
- "columnId": "disk_size_GB",
- "label": "Disk Size"
- },
- {
- "columnId": "diskbandwidthMBps",
- "label": "Disk BW"
- },
- {
- "columnId": "disk_iops",
- "label": "Disk IOPS"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "datadisk"
- }
- ],
- "name": "query - Managed Data Disk Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources\r\n| where type == 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend\r\n JoinID = toupper(id),\r\n OSName = tostring(properties.osProfile.computerName),\r\n OSType = tostring(properties.storageProfile.osDisk.osType),\r\n VMSize = tostring(properties.hardwareProfile.vmSize)\r\n| join kind=leftouter(\r\n Resources\r\n | where type == 'microsoft.compute/virtualmachines/extensions'\r\n | extend\r\n VMId = toupper(substring(id, 0, indexof(id, '/extensions')))\r\n ,ExtensionName = name\r\n , provisioningState = tostring(properties.provisioningState), autoUpgradeMinorVersion= tostring(properties.autoUpgradeMinorVersion), typeHandlerVersion= tostring(properties.typeHandlerVersion)\r\n) on $left.JoinID == $right.VMId\r\n| summarize Extensions = make_list(ExtensionName) by id, VMSize, OSType, provisioningState, autoUpgradeMinorVersion, typeHandlerVersion, resourceGroup",
- "size": 0,
- "title": "VM Extensions",
- "noDataMessage": "No VM Extension found",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "id",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "14ch"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, \r\n vmSize= tostring(properties.hardwareProfile.vmSize), os_type = tostring(properties.storageProfile.osDisk.osType),\r\n datadisk_lun = toint(datadisks.lun), datadisk_name = tostring(datadisks.name), datadisksize = tostring(datadisks.diskSizeGB), \r\n datadisk_cache = tostring(datadisks.caching), datadisk_wa = tostring(datadisks.writeAcceleratorEnabled)\r\n//| summarize by vmName, location, powerstate, avZone, avSet, ppg, vmSize, osname, vmgen, datadisklun, datadiskname, datadisksize, datadiskcache, datadiskwa\r\n| join kind = leftouter ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| parse managedBy with * \"/virtualMachines/\" vmName\r\n| parse id with * \"/disks/\" datadisk_name \r\n| project id1=id, sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), datadisk_name, vmName, managedBy, location, resourceGroup\r\n)\r\non vmName, datadisk_name\r\n| project-away datadisk_name, datadisk_name1, vmName1, managedBy\r\n| sort by vmName asc , datadisk_lun asc\r\n//| distinct datadisk_name",
+ "size": 0,
+ "title": "Compute + Data Disk",
+ "noDataMessage": "No VM found for the selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
}
},
- {
- "columnMatch": "VMSize",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "20ch"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "datadisk"
}
- },
- {
- "columnMatch": "OSType",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "10ch"
+ ],
+ "name": "query - Managed Data Disk Overview",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "resources \r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| mv-expand datadisks = properties.storageProfile.dataDisks\r\n| project id, vmName = name, \r\n vmSize= tostring(properties.hardwareProfile.vmSize), os_type = tostring(properties.storageProfile.osDisk.osType),\r\n datadisk_lun = toint(datadisks.lun), datadisk_name = tostring(datadisks.name), datadisksize = tostring(datadisks.diskSizeGB), \r\n datadisk_cache = tostring(datadisks.caching), datadisk_wa = tostring(datadisks.writeAcceleratorEnabled)\r\n//| summarize by vmName, location, powerstate, avZone, avSet, ppg, vmSize, osname, vmgen, datadisklun, datadiskname, datadisksize, datadiskcache, datadiskwa\r\n| join kind = leftouter ( \r\nresources\r\n| where type == \"microsoft.compute/disks\"\r\n| parse managedBy with * \"/virtualMachines/\" vmName\r\n| parse id with * \"/disks/\" datadisk_name \r\n| project id1=id, sku.name, disk_tier = tostring(properties.tier), disk_size_GB = tostring(properties.diskSizeGB), \r\n diskbandwidthMBps = tostring(properties.diskMBpsReadWrite), disk_iops = tostring(properties.diskIOPSReadWrite), datadisk_name, vmName, managedBy, location, resourceGroup\r\n)\r\non vmName, datadisk_name\r\n| project-away datadisk_name, datadisk_name1, vmName1, managedBy\r\n| sort by vmName asc , datadisk_lun asc\r\n//| distinct datadisk_name",
+ "size": 0,
+ "title": "VM Extensions",
+ "noDataMessage": "No VM found for the selection",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
}
},
- {
- "columnMatch": "resourceGroup",
- "formatter": 5
- }
- ],
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "VMSize",
- "label": "VM SKU"
- },
- {
- "columnId": "OSType",
- "label": "OS Type"
- },
- {
- "columnId": "provisioningState",
- "label": "Status"
- },
- {
- "columnId": "autoUpgradeMinorVersion",
- "label": "Auto-Upgrade"
- },
- {
- "columnId": "typeHandlerVersion",
- "label": "Version"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "Extensions",
- "label": "Extension"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "Extension"
+ }
+ ],
+ "name": "query - Extension List",
+ "styleSettings": {
+ "showBorder": true
}
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- },
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "Extension"
- }
- ],
- "name": "query - Extension List"
- },
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
+ },
{
"type": 9,
"content": {
"version": "KqlParameterItem/1.0",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
"parameters": [
{
- "id": "6a64934e-9fed-4511-9677-9212c854cc6f",
+ "id": "b7ef06df-c39f-4772-b9c9-50def3d09d4a",
"version": "KqlParameterItem/1.0",
"name": "VirtualMachines",
"type": 5,
+ "isRequired": true,
"multiSelect": true,
"quote": "'",
"delimiter": ",",
- "query": "resources\r\n| where type =~ 'Microsoft.Workloads/sapVirtualInstances/centralInstances' or type =~ 'Microsoft.Workloads/sapVirtualInstances/databaseInstances'\r\n| extend visId = split(split(id, '/centralInstances')[0], '/databaseInstances')[0] // getting the VIS id out of child resource\r\n| extend SID = tostring(split(visId,\"/\",8)[0])\r\n//| extend visList = split('{system_SID:id}', ', ') // split the selected vis list in array to search\r\n//| where set_has_element(visList, tostring(visId)) == 1 //check if the running vis exists in selected vis id.\r\n| mv-expand properties.vmDetails\r\n| extend vmID = tostring(properties_vmDetails.virtualMachineId)\r\n| where strlen(vmID) > 0\r\n| extend vmRole = split(type, \"/\")[2]\r\n//| extend vmRole = \"qwertyuiop\"\r\n//| project visVMId = strcat(tolower(vmID), \", \", SID, \", \", vmRole)\r\n| project visVMId = strcat(tolower(vmID)), SID, vmRole\r\n| union(\r\nresources\r\n | where type =~ 'Microsoft.Workloads/sapVirtualInstances/applicationInstances'\r\n | extend visId = split(id, '/applicationInstances')[0]\r\n // | extend visList = split('{system_SID:id}', ', ') \r\n | extend SID = tostring(split(visId,\"/\",8)[0])\r\n // split the selected vis list in array to search\r\n// | where set_has_element(visList, tostring(visId)) == 1\r\n | extend vmID = tostring(properties.virtualMachineId)\r\n | where strlen(vmID) > 0\r\n | extend vmRole = split(type, \"/\")[2]\r\n //| extend vmRole = \"qwertyuiop\"\r\n // | project visVMId = strcat(tolower(vmID), \", \",SID , \", \", vmRole)\r\n | project visVMId = strcat(tolower(vmID)), SID, vmRole\r\n )\r\n| extend VIS_VMs = tostring(split(visVMId,\"/\",8)[0])\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n//| project VIS_VMs\r\n| distinct visVMId\r\n| order by visVMId asc\r\n| extend Rank = row_number()\r\n| project value = visVMId, label = visVMId, selected = Rank <= 200\r\n\r\n",
+ "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n\t| order by name asc\r\n\t| extend Rank = row_number()\r\n\t| project value = id, label = id, selected = Rank <= 25",
"crossComponentResources": [
"{Subscriptions}"
],
"typeSettings": {
"additionalResourceOptions": [
+ "value::1",
"value::all"
],
"showDefault": false
@@ -13747,19 +19018,14 @@
"timeContext": {
"durationMs": 86400000
},
- "defaultValue": "value::all",
"queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "value": [
- "value::all"
- ]
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "08131869-a1dc-4dd7-9047-85bd1e6b6825",
+ "id": "94248d22-8229-4b42-b4fd-38e85cd995ef",
"version": "KqlParameterItem/1.0",
"name": "TimeRange",
"type": 4,
- "isRequired": true,
"typeSettings": {
"selectableValues": [
{
@@ -13807,26 +19073,45 @@
{
"durationMs": 7776000000
}
- ],
- "allowCustom": false
+ ]
+ },
+ "timeContext": {
+ "durationMs": 86400000
},
"value": {
- "durationMs": 2592000000
+ "durationMs": 300000
}
}
],
- "style": "pills",
- "queryType": 1,
+ "style": "above",
+ "queryType": 0,
"resourceType": "microsoft.resourcegraph/resources"
},
- "name": "parameters - 0"
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "vmstats"
+ }
+ ],
+ "name": "parameters - Virtual Machines"
},
{
"type": 10,
"content": {
- "chartId": "workbook810f4a4c-0149-4243-9976-cc4958d7b9d5",
+ "chartId": "workbook2eeb8cf6-c853-42ef-bc01-5ab32d15d379",
"version": "MetricsItem/2.0",
- "size": 0,
+ "size": 3,
"chartType": 0,
"resourceType": "microsoft.compute/virtualmachines",
"metricScope": 0,
@@ -13836,182 +19121,171 @@
],
"timeContextFromParameter": "TimeRange",
"timeContext": {
- "durationMs": 2592000000
+ "durationMs": 300000
},
"metrics": [
{
"namespace": "microsoft.compute/virtualmachines",
"metric": "microsoft.compute/virtualmachines--Percentage CPU",
- "aggregation": 4,
- "columnName": "%CPU Usage"
+ "aggregation": 3
},
{
"namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Disk Read Bytes",
- "aggregation": 1
+ "metric": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "aggregation": 3
},
{
"namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Disk Write Bytes",
- "aggregation": 1
+ "metric": "microsoft.compute/virtualmachines--Network In Total",
+ "aggregation": 3
},
{
"namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Network In Total",
- "aggregation": 1
+ "metric": "microsoft.compute/virtualmachines--Network Out Total",
+ "aggregation": 3
},
{
"namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Network Out Total",
- "aggregation": 1
+ "metric": "microsoft.compute/virtualmachines--Data Disk Write Operations/Sec",
+ "aggregation": 3
+ },
+ {
+ "namespace": "microsoft.compute/virtualmachines",
+ "metric": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
+ "aggregation": 4
}
],
- "title": "VM Monitoring Key Metrics",
- "resourceLimit": 1000,
"gridSettings": {
"formatters": [
{
"columnMatch": "Subscription",
- "formatter": 5
- },
- {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "showIcon": true
- }
- },
- {
- "columnMatch": "%CPU Usage",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue",
- "compositeBarSettings": {
- "labelText": "",
- "columnSettings": []
- }
- }
+ "formatter": 5
},
{
- "columnMatch": "%CPU Usage Timeline",
- "formatter": 9,
+ "columnMatch": "Name",
+ "formatter": 13,
"formatOptions": {
- "palette": "blue"
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true,
+ "customColumnWidthSetting": "15ch"
}
},
{
- "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
+ "formatter": 1,
"numberFormat": {
- "unit": 2,
+ "unit": 1,
"options": {
"style": "decimal"
}
}
},
{
- "columnMatch": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
- "formatter": 5
+ "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ }
},
{
- "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "formatter": 1,
"numberFormat": {
"unit": 2,
- "options": {
- "style": "decimal"
- }
+ "options": null
}
},
{
- "columnMatch": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
- "formatter": 5
+ "columnMatch": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ }
},
{
"columnMatch": "microsoft.compute/virtualmachines--Network In Total",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
+ "formatter": 1,
"numberFormat": {
"unit": 2,
- "options": {
- "style": "decimal"
- }
+ "options": null
}
},
{
"columnMatch": "microsoft.compute/virtualmachines--Network In Total Timeline",
- "formatter": 5
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ }
},
{
"columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
+ "formatter": 1,
"numberFormat": {
"unit": 2,
- "options": {
- "style": "decimal"
- }
+ "options": null
}
},
{
"columnMatch": "microsoft.compute/virtualmachines--Network Out Total Timeline",
- "formatter": 5
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
+ }
},
{
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
- "formatter": 8,
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Write Operations/Sec",
+ "formatter": 1,
+ "numberFormat": {
+ "unit": 31,
+ "options": null
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Write Operations/Sec Timeline",
+ "formatter": 9,
"formatOptions": {
- "palette": "blue"
- },
+ "palette": "greenRed"
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
+ "formatter": 1,
"numberFormat": {
- "unit": 1,
- "options": {
- "style": "decimal"
- }
+ "unit": 31,
+ "options": null
+ }
+ },
+ {
+ "columnMatch": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec Timeline",
+ "formatter": 9,
+ "formatOptions": {
+ "palette": "greenRed"
}
}
],
"rowLimit": 10000,
- "filter": true,
"labelSettings": [
{
- "columnId": "%CPU Usage",
- "label": "%CPU Usage"
- },
- {
- "columnId": "%CPU Usage Timeline",
- "label": "%CPU Usage Timeline"
- },
- {
- "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes",
- "label": "Disk Read Bytes (Sum)"
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
+ "label": "Percentage CPU (Max)",
+ "comment": "%CPU(MAX)"
},
{
- "columnId": "microsoft.compute/virtualmachines--Disk Read Bytes Timeline",
- "label": "Disk Read Bytes Timeline"
+ "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
+ "label": "Percentage CPU Timeline"
},
{
- "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes",
- "label": "Disk Write Bytes (Sum)"
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes",
+ "label": "Available Memory Bytes (Preview) (Max)"
},
{
- "columnId": "microsoft.compute/virtualmachines--Disk Write Bytes Timeline",
- "label": "Disk Write Bytes Timeline"
+ "columnId": "microsoft.compute/virtualmachines--Available Memory Bytes Timeline",
+ "label": "Available Memory Bytes (Preview) Timeline"
},
{
"columnId": "microsoft.compute/virtualmachines--Network In Total",
- "label": "Network In Total (Sum)"
+ "label": "Network In Total (Max)"
},
{
"columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
@@ -14019,301 +19293,188 @@
},
{
"columnId": "microsoft.compute/virtualmachines--Network Out Total",
- "label": "Network Out Total (Sum)"
+ "label": "Network Out Total (Max)"
},
{
"columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
"label": "Network Out Total Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Write Operations/Sec",
+ "label": "Data Disk Write Operations/Sec (Max)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Write Operations/Sec Timeline",
+ "label": "Data Disk Write Operations/Sec Timeline"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
+ "label": "Data Disk Read Operations/Sec (Average)"
+ },
+ {
+ "columnId": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec Timeline",
+ "label": "Data Disk Read Operations/Sec Timeline"
}
]
}
},
- "name": "VIS - Stats metric"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "compute",
- "comparison": "isEqualTo",
- "value": "vmstats"
- },
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "viscompute"
- }
- ],
- "name": "group - VM Stats"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "viscompute"
+ },
+ {
+ "parameterName": "compute",
+ "comparison": "isEqualTo",
+ "value": "vmstats"
+ }
+ ],
+ "name": "metric - VM Stats"
+ },
{
- "id": "8935cfa5-b304-4d01-aac9-698460187241",
- "cellValue": "config",
- "linkTarget": "parameter",
- "linkLabel": "Accelerated Networking",
- "subTarget": "aan",
- "style": "link"
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "26f95ee4-ba48-495f-8f4c-c633cb7fc0d4",
+ "cellValue": "config",
+ "linkTarget": "parameter",
+ "linkLabel": "Accelerated Networking",
+ "subTarget": "aan",
+ "style": "link"
+ },
+ {
+ "id": "ba8204e8-6bd5-4934-8a22-c46514a7cea7",
+ "cellValue": "config",
+ "linkTarget": "parameter",
+ "linkLabel": "Backup",
+ "subTarget": "backup",
+ "style": "link"
+ }
+ ]
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visconfiguration"
+ }
+ ],
+ "name": "links - Configuration Overview"
},
{
- "id": "8d909809-a0e3-42b9-bd9f-3682a0e1233d",
- "cellValue": "config",
- "linkTarget": "parameter",
- "linkLabel": "Backup",
- "subTarget": "backup",
- "style": "link"
- }
- ]
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visconfiguration"
- }
- ],
- "name": "links - Configuration Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines' \r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project id, vmName = name, az = tostring(zones), vmSize = tostring(properties.hardwareProfile.vmSize), AvSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0]), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), nicId = tostring(nic.id) \r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations \r\n //| where ipconfig.properties.primary =~ 'true' \r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| summarize by id, nicId, vmName,vmSize,AcceleratedNetworkingOn,ipaddress, AvSet, ppg, az ",
- "size": 2,
- "title": "Accelerated Networking",
- "noDataMessage": "No data found",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "vmName",
- "formatter": 5
- }
- ],
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "nicId",
- "label": "NIC"
- },
- {
- "columnId": "vmSize",
- "label": "VM SKU"
- },
- {
- "columnId": "ipaddress",
- "label": "IP Address"
- },
- {
- "columnId": "az",
- "label": "AvZone"
- }
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visconfiguration"
- },
- {
- "parameterName": "config",
- "comparison": "isEqualTo",
- "value": "aan"
- }
- ],
- "name": "query - Accelerated Networking Overview"
- },
- {
- "type": 3,
- "content": {
- "version": "KqlItem/1.0",
- "query": "Resources\r\n| where type in~ ('microsoft.compute/virtualmachines','microsoft.classiccompute/virtualmachines') \r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend resourceId=tolower(id) \r\n| join kind = leftouter ( RecoveryServicesResources\r\n| where type == \"microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems\"\r\n| where properties.backupManagementType == \"AzureIaasVM\"\r\n| project resourceId = tolower(tostring(properties.sourceResourceId)), backupItemid = id, isBackedUp = isnotempty(id) ) on resourceId \r\n| extend isProtected = isnotempty(backupItemid)\r\n| where (isProtected == (0))\r\n| project id,name,resourceGroup,location,tags",
- "size": 2,
- "title": "VMs with no Azure Backup",
- "noDataMessage": "No VM found without Azure Backup",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "name",
- "formatter": 5
- },
- {
- "columnMatch": "tags",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "100ch"
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources \r\n| where type =~ 'microsoft.compute/virtualmachines' \r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend nics=array_length(properties.networkProfile.networkInterfaces) \r\n| mv-expand nic=properties.networkProfile.networkInterfaces \r\n//| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) \r\n| project id, vmName = name, az = tostring(zones), vmSize = tostring(properties.hardwareProfile.vmSize), AvSet= tostring(split(properties.availabilitySet.id,\"/\",8)[0]), ppg = tostring(split(properties.proximityPlacementGroup.id,\"/\",8)[0]), nicId = tostring(nic.id) \r\n| join kind=leftouter ( \r\n Resources \r\n | where type =~ 'microsoft.network/networkinterfaces' \r\n | extend ipConfigsCount=array_length(properties.ipConfigurations) \r\n | mv-expand ipconfig=properties.ipConfigurations \r\n //| where ipconfig.properties.primary =~ 'true' \r\n | project nicId = id, ipaddress = tostring(ipconfig.properties.privateIPAddress), AcceleratedNetworkingOn = tostring(properties.enableAcceleratedNetworking)) on nicId \r\n| summarize by id, nicId, vmName,vmSize,AcceleratedNetworkingOn,ipaddress, AvSet, ppg, az ",
+ "size": 0,
+ "title": "Accelerated Networking",
+ "noDataMessage": "No data found",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visconfiguration"
+ },
+ {
+ "parameterName": "config",
+ "comparison": "isEqualTo",
+ "value": "aan"
}
+ ],
+ "name": "query - Accelerated Networking Overview",
+ "styleSettings": {
+ "showBorder": true
}
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "id",
- "label": "VM Name"
- },
- {
- "columnId": "resourceGroup",
- "label": "Resource Group"
- },
- {
- "columnId": "location",
- "label": "Azure Region"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type in~ ('microsoft.compute/virtualmachines','microsoft.classiccompute/virtualmachines') \r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| extend resourceId=tolower(id) \r\n| join kind = leftouter ( RecoveryServicesResources\r\n| where type == \"microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems\"\r\n| where properties.backupManagementType == \"AzureIaasVM\"\r\n| project resourceId = tolower(tostring(properties.sourceResourceId)), backupItemid = id, isBackedUp = isnotempty(id) ) on resourceId \r\n| extend isProtected = isnotempty(backupItemid)\r\n| where (isProtected == (0))\r\n| project id,name,resourceGroup,location,tags",
+ "size": 0,
+ "title": "VMs with no Azure Backup",
+ "noDataMessage": "No VM found without Azure Backup",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 10000,
+ "filter": true
+ }
+ },
+ "conditionalVisibilities": [
+ {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ {
+ "parameterName": "vis",
+ "comparison": "isEqualTo",
+ "value": "visconfiguration"
+ },
+ {
+ "parameterName": "config",
+ "comparison": "isEqualTo",
+ "value": "backup"
+ }
+ ],
+ "name": "query - VM's with no backup Backup",
+ "styleSettings": {
+ "showBorder": true
}
- ]
- }
+ }
+ ]
},
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "visconfiguration"
- },
- {
- "parameterName": "config",
- "comparison": "isEqualTo",
- "value": "backup"
- }
- ],
- "name": "query - VM's with no backup Backup"
+ "conditionalVisibility": {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "VIS"
+ },
+ "name": "group -VIS Group"
},
{
- "type": 3,
+ "type": 1,
"content": {
- "version": "KqlItem/1.0",
- "query": "advisorresources\r\n| where type =~ 'microsoft.advisor/recommendations' \r\n| where properties.lastUpdated >=ago(1d)\r\n| extend visId = split(split(split(id, '/centralInstances')[0], '/applicationInstances')[0], '/databaseInstances')[0]\r\n| extend SID= tostring(split(['id'], \"/\",8)[0])\r\n| extend resourceId = tostring(properties.resourceMetadata.resourceId)\r\n| extend impactedField = properties.impactedField\r\n| extend resourceTypeName = \"Database\"\r\n| extend impact = properties.impact\r\n| extend resourceTypeName = iff(impactedField has \"centralInstances\", \"Central service instance\", resourceTypeName)\r\n| extend resourceTypeName = iff(impactedField has \"applicationInstances\", \"App server instance\", resourceTypeName)\r\n| where SID in ({system_SID}) or '*' in ({system_SID})\r\n| project resourceId, resourceTypeName, visId, impact, properties.shortDescription.solution, properties.category, properties.lastUpdated, SID",
- "size": 0,
- "title": "OS Configuration Checks",
- "noDataMessage": "No OS configuration observations found for the selected SAP system",
- "showExportToExcel": true,
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources",
- "crossComponentResources": [
- "{Subscriptions}"
- ],
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "resourceId",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "18ch"
- }
- },
- {
- "columnMatch": "resourceTypeName",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "22ch"
- }
- },
- {
- "columnMatch": "visId",
- "formatter": 5
- },
- {
- "columnMatch": "properties_shortDescription_solution",
- "formatter": 0,
- "formatOptions": {
- "customColumnWidthSetting": "100ch"
- }
- },
- {
- "columnMatch": "SID",
- "formatter": 5
- }
- ],
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "resourceId",
- "label": "SAP Instance"
- },
- {
- "columnId": "resourceTypeName",
- "label": "Type"
- },
- {
- "columnId": "impact",
- "label": "Impact"
- },
- {
- "columnId": "properties_shortDescription_solution",
- "label": "Description"
- },
- {
- "columnId": "properties_category",
- "label": "WAF Pillar"
- },
- {
- "columnId": "properties_lastUpdated",
- "label": "Last Updated"
- }
- ]
- }
+ "json": "#### Security"
},
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "saplandcape"
- },
- {
- "parameterName": "saplandscape",
- "comparison": "isEqualTo",
- "value": "oschecks"
- }
- ],
- "name": "query - WAF"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "NoShow"
+ },
+ "name": "text - Security"
},
{
"type": 12,
@@ -14330,653 +19491,793 @@
],
"parameters": [
{
- "id": "890a9d4f-bb4f-4846-bf1a-4f534033c464",
+ "id": "d3ab8407-8271-4e72-bf40-748a3f89037a",
"version": "KqlParameterItem/1.0",
- "name": "VirtualMachines",
- "type": 5,
- "isRequired": true,
- "multiSelect": true,
- "quote": "'",
- "delimiter": ",",
- "query": "where type =~ 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n\t| order by name asc\r\n\t| extend Rank = row_number()\r\n\t| project value = id, label = id, selected = Rank <= 25",
+ "name": "InsecuredNSG",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.network/networksecuritygroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| mv-expand rules = properties.securityRules\r\n| where (rules.properties.sourceAddressPrefix == \"Internet\" or rules.properties.sourceAddressPrefixes has \"Internet\")\r\n| where rules.properties.access == \"Allow\"\r\n| summarize name = count()\r\n| project Message = strcat(name)",
"crossComponentResources": [
"{Subscriptions}"
],
- "typeSettings": {
- "additionalResourceOptions": [
- "value::1",
- "value::all"
- ],
- "showDefault": false
- },
- "timeContext": {
- "durationMs": 86400000
- },
- "defaultValue": "value::1",
+ "isHiddenWhenLocked": true,
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "bf0e62cf-f2dd-491f-988e-782b334c4522",
+ "id": "a0617c2f-0fae-4480-873c-58399af7fe32",
"version": "KqlParameterItem/1.0",
- "name": "TimeRange",
- "type": 4,
- "typeSettings": {
- "selectableValues": [
- {
- "durationMs": 300000
- },
- {
- "durationMs": 900000
- },
- {
- "durationMs": 1800000
- },
- {
- "durationMs": 3600000
- },
- {
- "durationMs": 14400000
- },
- {
- "durationMs": 43200000
- },
- {
- "durationMs": 86400000
- },
- {
- "durationMs": 172800000
- },
- {
- "durationMs": 259200000
- },
- {
- "durationMs": 604800000
- },
- {
- "durationMs": 1209600000
- },
- {
- "durationMs": 2419200000
- },
- {
- "durationMs": 2592000000
- },
- {
- "durationMs": 5184000000
- },
- {
- "durationMs": 7776000000
- }
- ]
- },
- "timeContext": {
- "durationMs": 86400000
- },
- "value": {
- "durationMs": 5184000000
- }
+ "name": "NSGAllw223389",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.network/networksecuritygroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| mv-expand rules = properties.securityRules\r\n| where tostring(rules.properties.access) == \"Allow\"\r\n and tostring(rules.properties.direction) == \"Inbound\"\r\n and (tostring(rules.properties.destinationPortRange) == \"22\" or tostring(rules.properties.destinationPortRange) == \"3389\")\r\n and tostring(rules.properties.sourceAddressPrefix) == \"Internet\"\r\n| project name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
{
- "id": "02b03e23-7c0c-4909-89c5-8b1b62b687d3",
+ "id": "6b55acf0-2d79-41b6-ac8a-bfbd8ba65899",
"version": "KqlParameterItem/1.0",
- "name": "Message",
+ "name": "VMwithPublicIP",
"type": 1,
- "query": "where type == 'microsoft.compute/virtualmachines'\r\n| where name in ({VIS_VMs}) or '*' in ({VIS_VMs})\r\n| summarize Selected = countif(id in ({VirtualMachines:value})), Total = count()\r\n| extend Selected = iff(Selected > 200, 200, Selected)\r\n| project Message = strcat('# ', Selected, ' / ', Total)",
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend nicId = tostring(properties.networkProfile.networkInterfaces[0].id)\r\n| join kind=leftouter (\r\n Resources\r\n | where type == \"microsoft.network/networkinterfaces\"\r\n | mv-expand ipConfigurations = properties.ipConfigurations\r\n | project nicId = id, publicIp = ipConfigurations.properties.publicIPAddress.id, \r\n subnet = ipConfigurations.properties.subnet.id\r\n) on nicId\r\n| where isnotempty(publicIp) and isempty(subnet)\r\n| project name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
"crossComponentResources": [
"{Subscriptions}"
],
"isHiddenWhenLocked": true,
- "timeContext": {
- "durationMs": 86400000
- },
"queryType": 1,
"resourceType": "microsoft.resourcegraph/resources"
- }
- ],
- "style": "pills",
- "queryType": 1,
- "resourceType": "microsoft.resourcegraph/resources"
- },
- "name": "parameters - 0"
- },
- {
- "type": 1,
- "content": {
- "json": "{Message}\r\n_Virtual machines_"
- },
- "name": "VIS Monitoring - VM Message"
- },
- {
- "type": 11,
- "content": {
- "version": "LinkItem/1.0",
- "style": "tabs",
- "links": [
+ },
{
- "id": "83583394-3202-4227-a74a-0dfda8e91d26",
- "cellValue": "vismonitor",
- "linkTarget": "parameter",
- "linkLabel": "Overview",
- "subTarget": "visoverview",
- "preText": "Overview",
- "style": "link"
+ "version": "KqlParameterItem/1.0",
+ "name": "UnsecuredStorageAccount",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| where isempty(properties.networkAcls.virtualNetworkRules) and isempty(properties.networkAcls.ipRules)\r\n| project id, name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "ad1531c4-9008-4c08-97e4-87230f9788ac"
},
{
- "id": "9e591696-0138-407f-a7c4-df3881b555e4",
- "cellValue": "vismonitor",
- "linkTarget": "parameter",
- "linkLabel": "Key Metrics",
- "subTarget": "viskeymetrics",
- "preText": "Key Metrics",
- "style": "link"
+ "version": "KqlParameterItem/1.0",
+ "name": "strgnomanagedidentity",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| where isnull(identity)\r\n| project name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "0af6bd98-8562-4e67-82ea-3127159ddcbf"
},
{
- "id": "9682d94f-a7f8-4fbc-8f71-362e6ed87951",
- "cellValue": "vismonitor",
- "linkTarget": "parameter",
- "linkLabel": "Azure Resource Health",
- "subTarget": "visresourcehealth",
- "style": "link"
+ "version": "KqlParameterItem/1.0",
+ "name": "strgnoencryption",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| where properties.encryption.services.blob.enabled == false or isnull(properties.encryption.services.blob.enabled)\r\n| project name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "bf516db5-bf18-440d-abda-deca4951253a"
},
{
- "id": "da31164b-f557-4f55-9cef-26636717ba1b",
- "cellValue": "vismonitor",
- "linkTarget": "parameter",
- "linkLabel": "Compute Change Analysis",
- "subTarget": "viscomputechange",
- "style": "link"
- }
- ]
- },
- "name": "VIS Monitor - Links"
- },
- {
- "type": 10,
- "content": {
- "chartId": "workbook27f9ed5d-a85d-42b3-afa6-f6738ff3dcb5",
- "version": "MetricsItem/2.0",
- "size": 0,
- "chartType": -3,
- "resourceType": "microsoft.compute/virtualmachines",
- "metricScope": 0,
- "resourceParameter": "VirtualMachines",
- "resourceIds": [
- "{VirtualMachines}"
- ],
- "timeContext": {
- "durationMs": 3600000
- },
- "metrics": [
+ "id": "5670618e-bb22-416e-8323-4c4880adffe8",
+ "version": "KqlParameterItem/1.0",
+ "name": "VMnoDiag",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend diagSettings = properties.diagnosticsProfile.bootDiagnostics.storageUri,\r\n VM_SKU = properties.hardwareProfile.vmSize\r\n| where isnull(diagSettings) or diagSettings == \"\"\r\n| project name \r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
{
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Percentage CPU",
- "aggregation": 4
- }
- ],
- "title": "Virtual Machine CPU Usage",
- "graphSettings": {
- "type": 2,
- "topContent": {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "showIcon": false
- }
+ "version": "KqlParameterItem/1.0",
+ "name": "VMNICwithPublicIP",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend nicId = tostring(properties.networkProfile.networkInterfaces[0].id)\r\n| join kind=leftouter (\r\n Resources\r\n | where type == \"microsoft.network/networkinterfaces\"\r\n | mv-expand ipConfigurations = properties.ipConfigurations\r\n | project nicId = id, publicIp = ipConfigurations.properties.publicIPAddress.id, \r\n subnet = ipConfigurations.properties.subnet.id\r\n) on nicId\r\n| where isnotempty(publicIp) and isempty(subnet)\r\n| project id\r\n| summarize id = count()\r\n| project Message = strcat(id)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "55d425a5-7c8c-4ae0-b911-d1384a995b7a"
},
- "centerContent": {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
- "formatter": 1,
- "numberFormat": {
- "unit": 17,
- "options": {
- "maximumSignificantDigits": 3,
- "maximumFractionDigits": 2
- }
- }
+ {
+ "version": "KqlParameterItem/1.0",
+ "name": "NSGVnetPublicIP",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.network/networksecuritygroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| mv-expand rules = properties.securityRules\r\n| where tostring(rules.properties.access) == \"Allow\"\r\n and tostring(rules.properties.direction) == \"Inbound\"\r\n and (tostring(rules.properties.sourceAddressPrefix) == \"Internet\" \r\n or rules.properties.sourceAddressPrefix matches regex \"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+/\\\\d+$\")\r\n| project id, nsgName = name, \r\n rulesName = rules.name, \r\n resourceGroup, \r\n subnetId = tostring(properties.subnets[0].id),\r\n sourceAddress = tostring(rules.properties.sourceAddressPrefix), \r\n destinationPort = tostring(rules.properties.destinationPortRange), \r\n destinationAddress = tostring(rules.properties.destinationAddressPrefix)\r\n| join kind=leftouter (\r\n Resources\r\n | where type == \"microsoft.network/virtualnetworks\"\r\n | mv-expand subnets = properties.subnets\r\n | project vnetName = name, subnetId = tostring(subnets.id)\r\n) on $left.subnetId == $right.subnetId\r\n| summarize nsgName = count()\r\n| project Message = strcat(nsgName)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "198ed5ea-38d3-4374-9df6-82a812c2672a"
},
- "hivesContent": {
- "columnMatch": "Subscription",
- "formatter": 1
+ {
+ "id": "66540de5-6f72-49fe-9e1e-c5c38d6a53f5",
+ "version": "KqlParameterItem/1.0",
+ "name": "location",
+ "type": 1,
+ "query": "Resources\r\n| where type =~ 'microsoft.compute/virtualmachines'\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| distinct location\r\n",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "typeSettings": {
+ "multiLineText": true,
+ "editorLanguage": "text"
+ },
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
+ },
+ {
+ "id": "ef954fdd-54fc-4e3d-80ab-149eab8f5e6b",
+ "version": "KqlParameterItem/1.0",
+ "name": "OrphanedPubIP",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.network/publicipaddresses\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend ipAllocationMethod = properties.publicIPAllocationMethod, ipAddress = properties.ipAddress\r\n| extend associatedResource = properties.ipConfiguration.id\r\n| where isnull(associatedResource) or isempty(associatedResource)\r\n| project id, name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- "nodeIdField": "Name",
- "graphOrientation": 3,
- "showOrientationToggles": false,
- "nodeSize": null,
- "staticNodeSize": 100,
- "colorSettings": {
- "nodeColorField": "microsoft.compute/virtualmachines--Percentage CPU",
- "type": 4,
- "heatmapPalette": "greenRed",
- "heatmapMin": 30,
- "heatmapMax": 80,
- "emptyValueColor": "gray"
+ {
+ "id": "d26a1b5b-40e6-45cf-abac-8ca12e9e4b12",
+ "version": "KqlParameterItem/1.0",
+ "name": "stgwithoutendpnt",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend privateEndpoints = properties.privateEndpointConnections\r\n| where isnull(privateEndpoints) or array_length(privateEndpoints) == 0\r\n| project name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- "groupByField": "Subscription",
- "hivesMargin": 5,
- "edgeColorSettings": null
- },
- "resourceLimit": 1000,
- "gridSettings": {
- "rowLimit": 10000
- }
+ {
+ "version": "KqlParameterItem/1.0",
+ "name": "lb_basic",
+ "type": 1,
+ "query": "Resources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend skuName = tostring(sku.name)\r\n| where skuName == \"Basic\"\r\n| project name\r\n| summarize name = count()\r\n| project Message = strcat(name)",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "isHiddenWhenLocked": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "id": "6d190633-95b1-4d06-a637-efabd5f5d044"
+ }
+ ],
+ "style": "pills",
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources"
},
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "vismonitoring"
- },
- {
- "parameterName": "vismonitor",
- "comparison": "isEqualTo",
- "value": "visoverview"
- }
- ],
- "name": "VIS Monitor - CPU Usage"
+ "name": "parameters - AzSecurity Summary Overview"
},
{
- "type": 3,
+ "type": 1,
"content": {
- "version": "KqlItem/1.0",
- "query": "{\"version\":\"AzureHealthQuery/1.0\",\"queryType\":\"Detailed\"}",
- "size": 0,
- "title": "Azure Compute Resource Health",
- "noDataMessage": "No Azure Resource Health data found",
- "showExportToExcel": true,
- "queryType": 4,
- "resourceType": "microsoft.compute/virtualmachines",
- "crossComponentResources": [
- "{VirtualMachines}"
- ],
- "visualization": "graph",
- "graphSettings": {
- "type": 2,
- "topContent": {
- "columnMatch": "Availability state",
- "formatter": 1
- },
- "centerContent": {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "subTarget": "resourcehealth",
- "linkIsContextBlade": true,
- "showIcon": false
- }
- },
- "nodeIdField": "Name",
- "graphOrientation": 3,
- "showOrientationToggles": false,
- "nodeSize": null,
- "staticNodeSize": 100,
- "colorSettings": {
- "nodeColorField": "Availability state",
- "type": 3,
- "thresholdsGrid": [
- {
- "operator": "==",
- "thresholdValue": "Available",
- "representation": "green"
- },
- {
- "operator": "Default",
- "thresholdValue": null,
- "representation": "brown"
- }
- ]
- },
- "hivesMargin": 5,
- "edgeColorSettings": null
- }
+ "json": " \r\n SAP On Azure Deployment Security Summary\r\n
\r\n\r\n Azure Region of deployment for selected resources: {location}\r\n
\r\n\r\n \r\n \r\n | Item | \r\n Observation | \r\n
\r\n \r\n \r\n \r\n | AzSec-001 | \r\n {InsecuredNSG} Network Security Group (NSG) has public access rules configured, allowing inbound traffic from the Internet. | \r\n
\r\n AzSec-002 | \r\n {NSGAllw223389} Network Security Group (NSG) has inbound access on port 22 or 3389 from the Internet. | \r\n \r\n \r\n | AzSec-003 | \r\n {NSGVnetPublicIP} Network Security Group (NSG) allows inbound access to a virtual network from public IPs. | \r\n
\r\n AzSec-004 | \r\n {VMwithPublicIP} Virtual Machines with assigned public IP addresses detected. | \r\n \r\n \r\n | AzSec-005 | \r\n {VMnoDiag} Virtual Machines do not have a managed diagnostic Storage Account. | \r\n
\r\n AzSec-006 | \r\n {UnsecuredStorageAccount} Storage accounts lack both virtual network and IP-based access restrictions (applicable for service endpoint). | \r\n \r\n \r\n | AzSec-007 | \r\n {strgnomanagedidentity} Storage accounts without managed identity enabled. | \r\n
\r\n AzSec-008 | \r\n {strgnoencryption} Storage accounts without encryption enabled. | \r\n \r\n \r\n | AzSec-009 | \r\n {OrphanedPubIP} Orphaned Public IP found. | \r\n
\r\n AzSec-010 | \r\n {stgwithoutendpnt} Storage accounts without Private Endpoint. | \r\n \r\n \r\n | AzSec-011 | \r\n {lb_basic} Load Balancers are of basic tier. | \r\n
\r\n \r\n
\r\n"
},
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "vismonitoring"
- },
- {
- "parameterName": "vismonitor",
- "comparison": "isEqualTo",
- "value": "visresourcehealth"
- }
- ],
- "name": "VIS Monitor - Azure Resource Health"
+ "name": "text - AzSecurity Summary",
+ "styleSettings": {
+ "showBorder": true
+ }
},
{
- "type": 3,
+ "type": 12,
"content": {
- "version": "KqlItem/1.0",
- "query": "{\"version\":\"ChangeAnalysis/1.0\",\"changeLevels\":[\"Important\"]}",
- "size": 0,
- "showAnalytics": true,
- "title": "Compute Change Analysis - Select one VM at a time",
- "noDataMessage": "No data found",
- "timeContext": {
- "durationMs": 86400000
- },
- "queryType": 13,
- "resourceType": "microsoft.compute/virtualmachines",
- "crossComponentResources": [
- "{VirtualMachines}"
- ],
- "visualization": "table",
- "gridSettings": {
- "rowLimit": 1000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "Level",
- "label": "Level"
- },
- {
- "columnId": "Resource",
- "label": "Resource"
- },
- {
- "columnId": "Time",
- "label": "Time"
- },
- {
- "columnId": "Category",
- "label": "Category"
- },
- {
- "columnId": "PropertyChanged",
- "label": "Property Changed"
- },
- {
- "columnId": "JsonPath",
- "label": "JSON Path"
- },
- {
- "columnId": "Description",
- "label": "Description"
- },
- {
- "columnId": "OldValue",
- "label": "Old Value"
+ "version": "NotebookGroup/1.0",
+ "groupType": "editable",
+ "items": [
+ {
+ "type": 11,
+ "content": {
+ "version": "LinkItem/1.0",
+ "style": "tabs",
+ "links": [
+ {
+ "id": "a562ff28-5b70-4ce5-9397-f8c009ac60cb",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-001",
+ "subTarget": "AzSec-001",
+ "style": "link"
+ },
+ {
+ "id": "50121c24-cb6d-4128-92e3-bbcd0d6716aa",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-002",
+ "subTarget": "AzSec-002",
+ "style": "link"
+ },
+ {
+ "id": "0e4af4f3-09d1-4872-8b08-d426936e9948",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-003",
+ "subTarget": "AzSec-003",
+ "style": "link"
+ },
+ {
+ "id": "f2fb19a5-1460-412b-9946-e87239234a0c",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-004",
+ "subTarget": "AzSec-004",
+ "style": "link"
+ },
+ {
+ "id": "d0a6d27c-4ecd-4dab-9632-e775c065551c",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-005",
+ "subTarget": "AzSec-005",
+ "style": "link"
+ },
+ {
+ "id": "9aa50c16-9617-4aa0-9a79-d0747d62a031",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-006",
+ "subTarget": "AzSec-006",
+ "style": "link"
+ },
+ {
+ "id": "84b5fb3f-feb1-4764-8cfb-d4f2eb22d33a",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-007",
+ "subTarget": "AzSec-007",
+ "style": "link"
+ },
+ {
+ "id": "02981ad6-4258-4d5d-bf9c-3e77036b1086",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-008",
+ "subTarget": "AzSec-008",
+ "style": "link"
+ },
+ {
+ "id": "ced5b07a-36e8-4347-b819-e12a9f147014",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-009",
+ "subTarget": "AzSec-009",
+ "style": "link"
+ },
+ {
+ "id": "1c2341f8-eb16-42e0-9c77-f6619bea6b23",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-010",
+ "subTarget": "AzSec-010",
+ "style": "link"
+ },
+ {
+ "id": "fd11cc08-c595-4405-b552-2e891e4d74a0",
+ "cellValue": "SelectedTab",
+ "linkTarget": "parameter",
+ "linkLabel": "AzSec-011",
+ "style": "link"
+ }
+ ]
},
- {
- "columnId": "NewValue",
- "label": "New Value"
+ "conditionalVisibility": {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
},
- {
- "columnId": "InitiatedBy",
- "label": "Initiated By"
+ "name": "links - AzSec Summary"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.network/networksecuritygroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| mv-expand rules = properties.securityRules\r\n| where (rules.properties.sourceAddressPrefix == \"Internet\" or rules.properties.sourceAddressPrefixes has \"Internet\")\r\n| where tostring(rules.properties.access) == \"Allow\"\r\n| where rules.properties.destinationPortRange != \"443\"\r\n| project id, direction = rules.properties.direction, access = rules.properties.access, \r\n protocol = rules.properties.protocol, sourceAddress = rules.properties.sourceAddressPrefix, \r\n destinationAddress = rules.properties.destinationAddressPrefix, destinationPortRange = rules.properties.destinationPortRange, resourceGroup, location\r\n",
+ "size": 2,
+ "title": "NSGs that allow traffic from the Internet to ports other than 443 (HTTPS)",
+ "noDataMessage": "No NSG with Public Access found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "direction",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "access",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "11ch"
+ }
+ },
+ {
+ "columnMatch": "protocol",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "14ch"
+ }
+ },
+ {
+ "columnMatch": "sourceAddress",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "16ch"
+ }
+ },
+ {
+ "columnMatch": "resourceGroup",
+ "formatter": 0,
+ "formatOptions": {
+ "customColumnWidthSetting": "35ch"
+ }
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "NSG Name"
+ },
+ {
+ "columnId": "direction",
+ "label": "Direction"
+ },
+ {
+ "columnId": "access",
+ "label": "Access"
+ },
+ {
+ "columnId": "protocol",
+ "label": "Protocol"
+ },
+ {
+ "columnId": "sourceAddress",
+ "label": "SourceAddress"
+ },
+ {
+ "columnId": "destinationAddress",
+ "label": "DestinationAddress"
+ },
+ {
+ "columnId": "destinationPortRange",
+ "label": "DestinationPortRange"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "ResourceGroup"
+ },
+ {
+ "columnId": "location",
+ "label": "Azure region"
+ }
+ ]
+ }
},
- {
- "columnId": "FakeAggregation",
- "label": "Tally"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-001"
},
- {
- "columnId": "ChangeDetails",
- "label": "Change Details"
+ "name": "query - Access from Internet",
+ "styleSettings": {
+ "showBorder": true
}
- ]
- }
- },
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "vismonitoring"
- },
- {
- "parameterName": "vismonitor",
- "comparison": "isEqualTo",
- "value": "viscomputechange"
- }
- ],
- "name": "VIS Monitor - Change Analysis"
- },
- {
- "type": 10,
- "content": {
- "chartId": "workbookd6fc1bfa-3416-43fb-a49e-f3cb76fd23d9",
- "version": "MetricsItem/2.0",
- "size": 3,
- "chartType": 0,
- "resourceType": "microsoft.compute/virtualmachines",
- "metricScope": 0,
- "resourceParameter": "VirtualMachines",
- "resourceIds": [
- "{VirtualMachines}"
- ],
- "timeContext": {
- "durationMs": 3600000
- },
- "metrics": [
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Percentage CPU",
- "aggregation": 4
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
- "aggregation": 7
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec",
- "aggregation": 7
- },
- {
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Network In Total",
- "aggregation": 1
},
{
- "namespace": "microsoft.compute/virtualmachines",
- "metric": "microsoft.compute/virtualmachines--Network Out Total",
- "aggregation": 1
- }
- ],
- "title": "Compute Key Metrics",
- "resourceLimit": 1000,
- "gridSettings": {
- "formatters": [
- {
- "columnMatch": "Subscription",
- "formatter": 5
- },
- {
- "columnMatch": "Name",
- "formatter": 13,
- "formatOptions": {
- "linkTarget": "Resource",
- "linkIsContextBlade": true,
- "showIcon": true
- }
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
- "numberFormat": {
- "unit": 1,
- "options": {
- "style": "decimal"
- }
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.network/networksecuritygroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| mv-expand rules = properties.securityRules\r\n| where tostring(rules.properties.access) == \"Allow\"\r\n and tostring(rules.properties.direction) == \"Inbound\"\r\n and (tostring(rules.properties.destinationPortRange) == \"22\" or tostring(rules.properties.destinationPortRange) == \"3389\")\r\n and tostring(rules.properties.sourceAddressPrefix) == \"Internet\"\r\n| project id, direction = rules.properties.direction, access = rules.properties.access, \r\n protocol = rules.properties.protocol, sourceAddress = rules.properties.sourceAddressPrefix, \r\n destinationAddress = rules.properties.destinationAddressPrefix, destinationPortRange = rules.properties.destinationPortRange, resourceGroup, location\r\n",
+ "size": 0,
+ "title": "NSGs to allow Inbound access from Internet on port 22/3389",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "visualization": "table",
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "name",
+ "formatter": 5
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "NSG Name"
+ }
+ ]
}
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
- "formatter": 21,
- "formatOptions": {
- "palette": "blue"
- }
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-002"
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
- "numberFormat": {
- "unit": 31,
- "options": {
- "style": "decimal"
- }
+ "name": "Access from Internet on port 22/3389",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.network/networksecuritygroups\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| mv-expand rules = properties.securityRules\r\n| where tostring(rules.properties.access) == \"Allow\"\r\n and tostring(rules.properties.direction) == \"Inbound\"\r\n and (tostring(rules.properties.sourceAddressPrefix) == \"Internet\" \r\n or rules.properties.sourceAddressPrefix matches regex \"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+/\\\\d+$\")\r\n| project id, nsgName = name, \r\n rulesName = rules.name, \r\n resourceGroup, \r\n subnetId = tostring(properties.subnets[0].id),\r\n sourceAddress = tostring(rules.properties.sourceAddressPrefix), \r\n destinationPort = tostring(rules.properties.destinationPortRange), \r\n destinationAddress = tostring(rules.properties.destinationAddressPrefix)\r\n| join kind=leftouter (\r\n Resources\r\n | where type == \"microsoft.network/virtualnetworks\"\r\n | mv-expand subnets = properties.subnets\r\n | project vnetName = name, subnetId = tostring(subnets.id)\r\n) on $left.subnetId == $right.subnetId\r\n| project id, nsgName, \r\n rulesName, \r\n vnetName, \r\n sourceAddress, \r\n destinationPort, \r\n destinationAddress,\r\n resourceGroup\r\n",
+ "size": 0,
+ "title": "NSG allowing Vnet access from Public",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ },
+ {
+ "columnMatch": "nsgName",
+ "formatter": 5
+ },
+ {
+ "columnMatch": "rulesName",
+ "formatter": 1
+ }
+ ],
+ "rowLimit": 10000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "NSG Name"
+ }
+ ]
}
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec Timeline",
- "formatter": 5
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-003"
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
- "numberFormat": {
- "unit": 11,
- "options": {
- "style": "decimal"
- }
- }
+ "name": "NSG allowing Vnet access from Public",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend nicId = tostring(properties.networkProfile.networkInterfaces[0].id)\r\n| join kind=leftouter (\r\n Resources\r\n | where type == \"microsoft.network/networkinterfaces\"\r\n | mv-expand ipConfigurations = properties.ipConfigurations\r\n | project nicId = id, publicIp = ipConfigurations.properties.publicIPAddress.id, \r\n subnet = ipConfigurations.properties.subnet.id\r\n) on nicId\r\n| where isnotempty(publicIp) and isempty(subnet)\r\n| project id, name, resourceGroup, location, publicIp\r\n",
+ "size": 0,
+ "title": "Virtual Machine with attached Public IP",
+ "noDataMessage": "No VM with attached Public IP NIC found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ]
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec Timeline",
- "formatter": 5
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-004"
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network In Total",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
- "numberFormat": {
- "unit": 2,
- "options": {
- "style": "decimal"
- }
+ "name": "query - Virtual Machine with Public IP NIC",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.compute/virtualmachines\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend diagSettings = properties.diagnosticsProfile.bootDiagnostics.storageUri,\r\n VM_SKU = properties.hardwareProfile.vmSize\r\n| where isnull(diagSettings) or diagSettings == \"\"\r\n| project id, VM_SKU, resourceGroup, location \r\n",
+ "size": 0,
+ "title": "Virtual Machines without boot diagnostics enabled",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "VM Name"
+ }
+ ]
}
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network In Total Timeline",
- "formatter": 5
- },
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network Out Total",
- "formatter": 8,
- "formatOptions": {
- "palette": "blue"
- },
- "numberFormat": {
- "unit": 2,
- "options": {
- "style": "decimal"
- }
- }
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-005"
},
- {
- "columnMatch": "microsoft.compute/virtualmachines--Network Out Total Timeline",
- "formatter": 5
+ "name": "query - VM without boot diagnostics enabled",
+ "styleSettings": {
+ "showBorder": true
}
- ],
- "rowLimit": 10000,
- "filter": true,
- "labelSettings": [
- {
- "columnId": "microsoft.compute/virtualmachines--Percentage CPU",
- "label": "Percentage CPU (Average)"
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| where isempty(properties.networkAcls.virtualNetworkRules) and isempty(properties.networkAcls.ipRules)\r\n| project id, name, resourceGroup, location, kind, sku = properties.sku.name\r\n",
+ "size": 0,
+ "title": "Unsecured Storage Account",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ]
},
- {
- "columnId": "microsoft.compute/virtualmachines--Percentage CPU Timeline",
- "label": "Percentage CPU Timeline"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-006"
},
- {
- "columnId": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec",
- "label": "Data Disk Read Operations/Sec (Count)"
+ "name": "query - Unsecured Storage Account",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| where isnull(identity)\r\n| project id, resourceGroup, location\r\n",
+ "size": 0,
+ "title": "Storage Account Without Managed Identity",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ }
+ ],
+ "rowLimit": 1000,
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Storage Account"
+ }
+ ]
+ }
},
- {
- "columnId": "microsoft.compute/virtualmachines--Data Disk Read Operations/Sec Timeline",
- "label": "Data Disk Read Operations/Sec Timeline"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-007"
},
- {
- "columnId": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec",
- "label": "Data Disk Write Bytes/Sec (Count)"
+ "name": "query - Storage Account Without Managed Identity",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| where properties.encryption.services.blob.enabled == false or isnull(properties.encryption.services.blob.enabled)\r\n| project name, resourceGroup\r\n",
+ "size": 0,
+ "title": "Storage Accounts Without Encryption Enabled",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ]
},
- {
- "columnId": "microsoft.compute/virtualmachines--Data Disk Write Bytes/sec Timeline",
- "label": "Data Disk Write Bytes/Sec Timeline"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-008"
},
- {
- "columnId": "microsoft.compute/virtualmachines--Network In Total",
- "label": "Network In Total (Sum)"
+ "name": "query - Storage Accounts Without Encryption Enabled",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.network/publicipaddresses\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend ipAllocationMethod = properties.publicIPAllocationMethod, ipAddress = properties.ipAddress\r\n| extend associatedResource = properties.ipConfiguration.id\r\n| where isnull(associatedResource) or isempty(associatedResource)\r\n| project id, location, ipAllocationMethod, ipAddress\r\n",
+ "size": 0,
+ "title": "Orphaned Public IP",
+ "noDataMessage": "No Orphaned Public IP found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Name"
+ }
+ ]
+ }
},
- {
- "columnId": "microsoft.compute/virtualmachines--Network In Total Timeline",
- "label": "Network In Total Timeline"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-009"
},
- {
- "columnId": "microsoft.compute/virtualmachines--Network Out Total",
- "label": "Network Out Total (Sum)"
+ "name": "query -Orphaned Public IP",
+ "styleSettings": {
+ "showBorder": true
+ }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.storage/storageaccounts\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group}) \r\n| extend privateEndpoints = properties.privateEndpointConnections\r\n| where isnull(privateEndpoints) or array_length(privateEndpoints) == 0\r\n| project id, name",
+ "size": 0,
+ "title": "Storage Account without EndPoint",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "rowLimit": 1000,
+ "filter": true
+ }
},
- {
- "columnId": "microsoft.compute/virtualmachines--Network Out Total Timeline",
- "label": "Network Out Total Timeline"
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-010"
+ },
+ "name": "query - Storage Account without EndPoint",
+ "styleSettings": {
+ "showBorder": true
}
- ]
- }
+ },
+ {
+ "type": 3,
+ "content": {
+ "version": "KqlItem/1.0",
+ "query": "Resources\r\n| where type == \"microsoft.network/loadbalancers\"\r\n| where resourceGroup in ({Resource_Group}) or '*' in ({Resource_Group})\r\n| extend skuName = tostring(sku.name)\r\n| where skuName == \"Basic\"\r\n| project id, SKU=tostring(sku.name), Tier=tostring(sku.tier), resourceGroup, location",
+ "size": 0,
+ "title": "Load Balancers with Basic SKU",
+ "noDataMessage": "No Load Balancer with Basic SKU found",
+ "showExportToExcel": true,
+ "queryType": 1,
+ "resourceType": "microsoft.resourcegraph/resources",
+ "crossComponentResources": [
+ "{Subscriptions}"
+ ],
+ "gridSettings": {
+ "formatters": [
+ {
+ "columnMatch": "id",
+ "formatter": 13,
+ "formatOptions": {
+ "linkTarget": "Resource",
+ "linkIsContextBlade": true,
+ "showIcon": true
+ }
+ }
+ ],
+ "filter": true,
+ "labelSettings": [
+ {
+ "columnId": "id",
+ "label": "Name"
+ },
+ {
+ "columnId": "resourceGroup",
+ "label": "Resource Group"
+ },
+ {
+ "columnId": "location",
+ "label": "AzureRegion"
+ }
+ ]
+ }
+ },
+ "conditionalVisibility": {
+ "parameterName": "SelectedTab",
+ "comparison": "isEqualTo",
+ "value": "AzSec-011"
+ },
+ "name": "query - Load Balancer"
+ }
+ ]
},
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "vismonitoring"
- },
- {
- "parameterName": "vismonitor",
- "comparison": "isEqualTo",
- "value": "viskeymetrics"
- }
- ],
- "name": "VIS Monitor - Key Metrics"
+ "conditionalVisibility": {
+ "parameterName": "Expand_Summary",
+ "comparison": "isEqualTo",
+ "value": "Yes"
+ },
+ "name": "group - AzSecurity Extended Summary"
}
]
},
- "conditionalVisibilities": [
- {
- "parameterName": "Resource_Filter",
- "comparison": "isEqualTo",
- "value": "VIS"
- },
- {
- "parameterName": "vis",
- "comparison": "isEqualTo",
- "value": "vismonitoring"
- }
- ],
- "name": "VIS Group - Monitoring & Service Health"
+ "conditionalVisibility": {
+ "parameterName": "Dashboard",
+ "comparison": "isEqualTo",
+ "value": "AzSecurity"
+ },
+ "name": "group - AzSecurity"
}
],
"fallbackResourceIds": [