Skip to content

Commit

Permalink
Advisor - Cost optimization workbook - December release (#2857)
Browse files Browse the repository at this point in the history
* Fix formatting and update content in Azure Advisor workbooks for consistency and clarity

* No code changes made.
  • Loading branch information
sebassem authored Dec 17, 2024
1 parent 3829a38 commit a3768bc
Show file tree
Hide file tree
Showing 10 changed files with 2,351 additions and 36 deletions.
561 changes: 552 additions & 9 deletions Workbooks/Azure Advisor/Cost Optimization/AHB/AHB.workbook

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,7 @@
"content": {
"version": "NotebookGroup/1.0",
"groupType": "template",
"loadFromTemplateId": "community-Workbooks/Azure Advisor/Cost Optimization/commitmentDiscounts",
"loadFromTemplateId": "community-Workbooks/Azure Advisor/Cost Optimization/commitment-discounts",
"items": []
},
"conditionalVisibility": {
Expand Down Expand Up @@ -898,9 +898,9 @@
{
"type": 1,
"content": {
"json": "## Prerequisites\r\n\r\nThis workbook requires the following least-privileged (minimum) roles on your Subscriptions:\r\n\r\n * **Reader** : allows you to import the workbook without saving it and view all of the workbook tabs.\r\n * **Workbook Contributor** : allows you to import and save the workbook\r\n\r\nThis workbook includes \"Quick Fix\" actions within certain queries. The permissions necessary to execute these actions may vary and are documented for each specific action.\r\n\r\n\r\n"
"json": "## Change log\r\n**Last update:** December 2024 \r\n\r\nTo learn more about this update and other announcements, visit the [FinOps Toolkit](https://github.com/microsoft/finops-toolkit/releases) page. \r\n\r\n### **December 2024** \r\n➕ **Added:** \r\n- Azure Arc Windows license management under the **Commitment Discounts** tab. \r\n\r\n### **November 2024** \r\n➕ **Added:** \r\n- On the **Storage** tab, included the RSVaultBackup tag in the list of non-idle disks. \r\n\r\n🛠️ **Fixed:** \r\n- Resolved an issue on the **Commitment Discounts** tab where RI rows were limited. \r\n- Corrected VM processor details on the **Compute** tab query. \r\n\r\n### **October 2024** \r\n➕ **Added:** \r\n- New **Compute** query to identify VMs by processor architecture type. \r\n- New **Database** query to identify SQL Pool instances with zero databases. \r\n- New **Storage** query to identify powered-off VMs with premium disks. \r\n\r\n✏️ **Changed:** \r\n- Redesigned the **Rate Optimization** tab for easier identification of break-even points for reservations. \r\n- Fixed the **AHB VMSS** query to count the total cores consumed across the entire scale set. \r\n- Improved the **Storage Idle Disks** query to ignore disks used by AKS pods. \r\n- Updated the **Storage Not V2** query to exclude blockBlobStorage accounts. \r\n- Added an export option for the **Idle Backups** list to streamline data extraction. \r\n"
},
"name": "Prerequisites"
"name": "changelog"
},
{
"type": 1,
Expand Down Expand Up @@ -1082,4 +1082,4 @@
"Azure Monitor"
],
"$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -434,4 +434,4 @@
"Azure Monitor"
],
"$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@
"id": "68a77162-06c2-4648-83e0-f8f41c4fbda7",
"cellValue": "SelectedSubTab",
"linkTarget": "parameter",
"linkLabel": "Express Route",
"linkLabel": "ExpressRoute",
"subTarget": "ER",
"style": "link"
},
Expand Down Expand Up @@ -761,7 +761,7 @@
{
"type": 1,
"content": {
"json": "# Routing Preference\r\n\r\nAzure routing preference enables you to choose how your traffic routes between Azure and the Internet. You can choose to route traffic either via the Microsoft network or via the ISP network (public internet). By default, traffic is routed via the Microsoft global network for all Azure services.\r\n\r\nRouting preference choices include:\r\n\r\n- **Microsoft Network**: Both ingress and egress traffic stays bulk of the travel on the Microsoft global network. This routing is also known as cold potato routing. This option has a higher ingress/egress cost.\r\n\r\n- **Public Internet (ISP network)**: The new routing choice Internet routing minimizes travel on the Microsoft global network and uses the transit ISP network to route your traffic. This routing is also known as hot potato routing.\r\n\r\nFor more information about routing preference, see [What is routing preference?](https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/ip-services-overview#routing-preference).\r\n\r\n",
"json": "# Routing Preference\r\n\r\nAzure routing preference enables you to choose how your traffic routes between Azure and the Internet. You can choose to route traffic either via the Microsoft network or via the ISP network (public internet). By default, traffic is routed via the Microsoft global network for all Azure services.\r\n\r\nRouting preference choices include:\r\n\r\n- **Microsoft Network**: Both ingress and egress traffic stays bulk of the travel on the Microsoft global network. This routing is also known as cold potato routing. This option has a higher ingress/egress cost.\r\n\r\n- **Public Internet (ISP network)**: The new routing choice Internet routing minimizes travel on the Microsoft global network and uses the transit ISP network to route your traffic. This routing is also known as hot potato routing.\r\n\r\nFor more information about routing preference, see [What is routing preference?](https://learn.microsoft.com/azure/virtual-network/ip-services/ip-services-overview#routing-preference).\r\n\r\n",
"style": "upsell"
},
"name": "text - 3"
Expand Down Expand Up @@ -1161,7 +1161,7 @@
"json": "# Recommendations for NAT Gateways\r\nReview idle NAT Gateways that have no subnet defined, as they may represent additional cost.\r\n",
"style": "upsell"
},
"name": "Recommendations for idle virtualNetworkGateways"
"name": "Recommendations for idle NAT Gateway"
},
{
"type": 3,
Expand Down Expand Up @@ -1265,7 +1265,7 @@
{
"type": 1,
"content": {
"json": "# Recommendations for Private DNS\r\nReview private DNS without [Virtual Network Links](https://learn.microsoft.com/en-us/azure/dns/private-dns-virtual-network-links).\r\n",
"json": "# Recommendations for Private DNS\r\nReview private DNS without [Virtual Network Links](https://learn.microsoft.com/azure/dns/private-dns-virtual-network-links).\r\n",
"style": "upsell"
},
"name": "Recommendations for idle private dns"
Expand Down Expand Up @@ -1370,7 +1370,7 @@
{
"type": 1,
"content": {
"json": "# Recommendations for Private endpoints\r\nReview [Private Endpoints](https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-overview) that are not connected to any resource.",
"json": "# Recommendations for Private endpoints\r\nReview [Private Endpoints](https://learn.microsoft.com/azure/private-link/private-endpoint-overview) that are not connected to any resource.",
"style": "upsell"
},
"name": "Recommendations for idle private endpoints"
Expand Down Expand Up @@ -1493,7 +1493,7 @@
{
"type": 1,
"content": {
"json": "# Recommendations for Azure Firewall\r\n\r\n## Azure Firewall Premium SKU\r\nThis table identifies Azure Firewalls with Premium SKU and evaluates whether the associated policy incorporates premium-only features or not. If a Premium SKU Firewall lacks a policy with premium features, such as TLS or intrusion detection it will be shown here. To learn more about Azure Firewall skus, check this [SKU comparison table](https://learn.microsoft.com/en-us/azure/firewall/choose-firewall-sku). ",
"json": "# Recommendations for Azure Firewall\r\n\r\n## Azure Firewall Premium SKU\r\nThis table identifies Azure Firewalls with Premium SKU and evaluates whether the associated policy incorporates premium-only features or not. If a Premium SKU Firewall lacks a policy with premium features, such as TLS or intrusion detection it will be shown here. To learn more about Azure Firewall skus, check this [SKU comparison table](https://learn.microsoft.com/azure/firewall/choose-firewall-sku). ",
"style": "upsell"
},
"name": "Recommendations for premium Firewall"
Expand Down Expand Up @@ -1593,7 +1593,7 @@
{
"type": 1,
"content": {
"json": "## Avoid multiple Firewall instances in the same region\r\nOptimize the use of Azure Firewall by having a central instance of Azure Firewall in the hub virtual network or Virtual WAN secure hub and share the same firewall across many spoke virtual networks that are connected to the same hub from the same region. Ensure there's no unexpected cross-region traffic as part of the hub-spoke topology nor multiple Azure firewall instances deployed to the same region. To learn more about Azure Firewall design principles, check [Azure Well-Architected Framework review - Azure Firewall](https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-firewall#cost-optimization).",
"json": "## Avoid multiple Firewall instances in the same region\r\nOptimize the use of Azure Firewall by having a central instance of Azure Firewall in the hub virtual network or Virtual WAN secure hub and share the same firewall across many spoke virtual networks that are connected to the same hub from the same region. Ensure there's no unexpected cross-region traffic as part of the hub-spoke topology nor multiple Azure firewall instances deployed to the same region. To learn more about Azure Firewall design principles, check [Azure Well-Architected Framework review - Azure Firewall](https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall#cost-optimization).",
"style": "upsell"
},
"name": "text - 3"
Expand Down Expand Up @@ -1704,19 +1704,20 @@
{
"type": 1,
"content": {
"json": "# Recommendations for Express Route\r\n\r\n## Express Route Gateways without a completed circuit (ISP has not completed the connection)\r\nThis table identifies Express Route circutis that have not been completed. ",
"json": "# Recommendations for ExpressRoute\r\n\r\nReview idle ExpressRoute circuits that has not been provisioned (service provider has not completed provisioning or has deprovisioned), as they may represent additional cost.",
"style": "upsell"
},
"name": "Recommendations for premium Firewall"
"name": "Recommendations for ExpressRoute"
},
{
"type": 3,
"content": {
"version": "KqlItem/1.0",
"query": "resources\r\n| where type =~ 'Microsoft.Network/expressRouteCircuits' and properties.serviceProviderProvisioningState == \"NotProvisioned\"\r\n| extend ServiceLocation=tostring(properties.serviceProviderProperties.peeringLocation), ServiceProvider=tostring(properties.serviceProviderProperties.serviceProviderName), BandwidthInMbps=tostring(properties.serviceProviderProperties.bandwidthInMbps)\r\n| project ERId=id,ERName = name, ERRG = resourceGroup, SKUName=tostring(sku.name), SKUTier=tostring(sku.tier), SKUFamily=tostring(sku.family), ERLocation = location, ServiceLocation, ServiceProvider, BandwidthInMbps\r\n| join kind = innerunique(\r\n resources\r\n | extend replaced_tags = replace('{}', 'null', tostring(tags))\r\n | extend replaced_tags = parse_json(replaced_tags)\r\n | mv-expand replaced_tags\r\n | extend tagName = tostring(bag_keys(replaced_tags)[0])\r\n | extend tagValue = tostring(replaced_tags['{TagName}'])\r\n | where tagName has '{TagName}' and tagValue has '{TagValue}'\r\n | extend ERId=id\r\n | distinct ERId\r\n )\r\n on ERId\r\n\r\n",
"size": 0,
"title": "Idle Express Route circuits",
"noDataMessage": "No idle Express Route circuit found",
"title": "Idle ExpressRoute circuits",
"noDataMessage": "No idle ExpressRoute circuits found",

"noDataMessageStyle": 3,
"showExportToExcel": true,
"queryType": 1,
Expand All @@ -1734,11 +1735,11 @@
"labelSettings": [
{
"columnId": "ERId",
"label": "Express Route ID"
"label": "ExpressRoute ID"
},
{
"columnId": "ERName",
"label": "E.R. Name"
"label": "ER Name"
},
{
"columnId": "ERRG",
Expand Down Expand Up @@ -1775,7 +1776,7 @@
]
}
},
"name": "Idle Express Route circuits"
"name": "Idle ExpressRoute circuits"
}
]
},
Expand All @@ -1784,7 +1785,7 @@
"comparison": "isEqualTo",
"value": "ER"
},
"name": "Express Route Group"
"name": "ExpressRoute Group"
}
]
},
Expand All @@ -1803,4 +1804,4 @@
"Azure Monitor"
],
"$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json"
}
}
Loading

0 comments on commit a3768bc

Please sign in to comment.