Skip to content

Enhance documentation for Azure Optimization Engine - #2267

Open
Hélder Pinto (helderpinto) wants to merge 6 commits into
microsoft:devfrom
helderpinto:helderpinto/dev/docs2608
Open

Enhance documentation for Azure Optimization Engine#2267
Hélder Pinto (helderpinto) wants to merge 6 commits into
microsoft:devfrom
helderpinto:helderpinto/dev/docs2608

Conversation

@helderpinto

@helderpinto Hélder Pinto (helderpinto) commented Aug 18, 2026

Copy link
Copy Markdown
Member

🛠️ Description

This pull request introduces documentation improvements to the FinOps toolkit, primarily by adding a comprehensive reference for the Azure Optimization Engine (AOE) and updating related documentation to reflect this addition. These changes enhance the discoverability and usability of AOE configuration details.

Documentation enhancements:

  • Added a new "Reference" page (toolkit/optimization-engine/reference.md) to the AOE section in the table of contents, providing comprehensive documentation for runbooks, schedules, variables, Log Analytics tables, and SQL Database tables.
  • Announced the addition of the AOE reference documentation in the changelog, highlighting its coverage of runbooks, schedules, variables, and more.
  • Updated the AOE customization guide to direct users to the new reference page for a complete list of configuration variables.

Deployment fixes:

  • Removed AzureOptimization_LogAnalyticsWorkspaceKey automation variable from deployment (leftover of upgrade to DCR-based ingestion) and updated variables documentation accordingly.

Changelog update:

  • Updated the ms.date field in changelog.md to reflect the latest documentation update.

Fixes #1271

📋 Checklist

🔬 How did you test this change?

  • 🤏 Lint tests
  • 🤞 PS -WhatIf / az validate
  • 👍 Manually deployed + verified
  • 💪 Unit tests
  • 🙌 Integration tests

📦 Deploy to test?

  • Hubs + ADX (managed)
  • Hubs + Fabric (manual) — URI:
  • Hubs (manual)
  • Hubs (no data)
  • Workbooks
  • Alerts

🙋‍♀️ Do any of the following that apply?

  • 🚨 This is a breaking change.
  • 🤏 The change is less than 20 lines of code.

📑 Did you update docs/changelog.md?

  • ✅ Updated changelog (required for dev PRs)
  • ➡️ Will add log in a future PR (feature branch PRs only)
  • ❎ Log not needed (small/internal change)

📖 Did you update documentation?

  • ✅ Public docs in docs (required for dev)
  • ✅ Public docs in docs-mslearn (required for dev)
  • ✅ Internal dev docs in docs-wiki (required for dev)
  • ✅ Internal dev docs in src (required for dev)
  • ➡️ Will add docs in a future PR (feature branch PRs only)
  • ❎ Docs not needed (small/internal change)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves Microsoft Learn documentation for the Azure Optimization Engine (AOE) in the FinOps Toolkit by adding a dedicated reference page and wiring it into navigation and the changelog. It also includes a functional deployment template change removing a legacy Automation variable.

Changes:

  • Added a new AOE “Reference” doc covering runbooks, schedules, variables, and data tables.
  • Updated AOE customization guidance and the toolkit changelog/TOC to point to the new reference content.
  • Removed the AzureOptimization_LogAnalyticsWorkspaceKey Automation variable from the AOE nested deployment template.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/optimization-engine/azuredeploy-nested.bicep Removes a legacy Automation variable from the deployment template.
docs-mslearn/toolkit/optimization-engine/reference.md Adds the new AOE reference documentation page.
docs-mslearn/toolkit/optimization-engine/customize.md Links readers to the new reference page for the full variable list.
docs-mslearn/toolkit/changelog.md Announces the new AOE reference page and updates ms.date.
docs-mslearn/TOC.yml Adds the new reference page to the AOE documentation TOC.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs-mslearn/toolkit/optimization-engine/reference.md Outdated
Comment thread docs-mslearn/toolkit/optimization-engine/reference.md Outdated
Comment thread docs-mslearn/toolkit/optimization-engine/reference.md Outdated
Comment thread docs-mslearn/toolkit/optimization-engine/customize.md Outdated
Comment thread src/optimization-engine/azuredeploy-nested.bicep
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

@MSBrett Brett Wilson (MSBrett) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two publish-facing defects need correction: the page renders with "Runbooks" as its heading instead of a reference title, and its only in-page link is broken. The remaining comments are non-blocking Microsoft style and navigation improvements.

#customer intent: As a FinOps user, I want to understand the Azure optimization engine reference tables, runbooks, schedules and variables.
---

# Runbooks

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This article has no page-level H1, so # Runbooks becomes the rendered page heading—the published page will be titled "Runbooks" even though the TOC entry and title metadata say "Reference".

Adding one heading above this line fixes it and matches the pattern already used in setup-options.md and configure-workspaces.md (page H1 followed by additional H1 sections), so the existing section headings can stay as they are:

# Azure optimization engine reference

Optional: title: Reference (line 2) is very generic for a browser tab and search result. title: Azure optimization engine reference would front-load the searchable keywords; the TOC display name can stay "Reference".

- Runbooks that access Azure SQL Database use `AzureOptimization_SQLServerHostname`; `AzureOptimization_SQLServerDatabase` defaults to `azureoptimization`.
- Runbooks that ingest data into Log Analytics use `AzureOptimization_DCEIngestionEndpoint` and the DCR mappings stored in Azure SQL Database.

See [Variables](#-variables) for more details.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only in-page link on this page doesn't resolve. This anchor is left over from the emoji-heading cleanup—# 🧿 Variables produced #-variables, but the heading is now plain # Variables (line 165), so the anchor is #variables.

See [Variables](#variables) for more details.

@@ -0,0 +1,312 @@
---
title: Reference
description: Reference to the optimization engine tables, runbooks, schedules and variables.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Microsoft style uses the serial comma before the conjunction in a list of three or more items. This applies here and in the #customer intent line (line 11):

description: Reference to the optimization engine tables, runbooks, schedules, and variables.

| `Filters` | User-created recommendation suppressions | Not applicable | Created by the `Suppress-Recommendation` script | `Ingest-SuppressionsToLogAnalytics` and remediation runbooks | Yes |
| `LogAnalyticsIngestControl` | Storage-to-table mappings, DCR identifiers, and CSV ingestion progress | All CSV export containers | Initialized by deployment and updated by `Setup-LogAnalyticsTablesAndDCRs` | `Ingest-OptimizationCSVExportsToLogAnalytics`, `Ingest-RecommendationsToLogAnalytics`, `Ingest-SuppressionsToLogAnalytics` | No |
| `Recommendations` | Generated recommendations and resource context | `recommendationsexports` | All `Recommend-*` runbooks; populated by `Ingest-RecommendationsToSQLServer` | Cleanup and `Remediate-*` runbooks | Yes |
| `SqlServerIngestControl` | Recommendation JSON ingestion progress | `recommendationsexports` | Initialized by deployment | `Ingest-RecommendationsToSQLServer` | No | No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every other Azure Optimization Engine article ends with a ## Related content section. This one stops at the final table with no onward navigation. Consider adding:

## Related content

- [Get started with the Azure Optimization Engine](overview.md)
- [Customize Azure optimization engine](customize.md)
- [Troubleshoot Azure Optimization Engine issues](troubleshooting.md)

## Adjust thresholds

For Advisor cost recommendations, the AOE's default configuration produces percentile 99th VM metrics aggregations, but you can adjust them to be less conservative. There are also adjustable metrics thresholds that are used to compute the fit score. The default thresholds values are 30% for CPU (5% for shutdown recommendations), 50% for memory (100% for shutdown) and 750 Mbps for network bandwidth (10 Mbps for shutdown). All the adjustable configurations are available as Azure Automation variables. The information in the next table highlights the most relevant configuration variables. To access them, go to the Automation Account _Shared Resources - Variables_ menu option.
For Advisor cost recommendations, the AOE's default configuration produces percentile 99th VM metrics aggregations, but you can adjust them to be less conservative. There are also adjustable metrics thresholds that are used to compute the fit score. The default threshold values are 30% for CPU (5% for shutdown recommendations), 50% for memory (100% for shutdown) and 750 Mbps for network bandwidth (10 Mbps for shutdown). All the adjustable configurations are available as Azure Automation variables. The information in the next table highlights the most relevant configuration variables. To access them, go to the Automation Account _Shared Resources - Variables_ menu option. For a complete list of AOE variables, check [the reference](reference.md).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"the reference" isn't meaningful out of context—link text should make sense on its own. Since the sentence promises a complete variables list, this should also deep-link to that section rather than the top of the page:

For a complete list of AOE variables, see the [Azure optimization engine reference](reference.md#variables).

### [Optimization Engine](optimization-engine/overview.md)

- **Added**
- Added a comprehensive [Azure Optimization Engine reference](optimization-engine/reference.md) for runbooks, schedules, variables, Log Analytics tables, and SQL Database tables. ([#1271](https://github.com/microsoft/finops-toolkit/issues/1271))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: 125 of 128 citation entries in this file put the issue link before the final period (the #2090 line right below is an example). Moving the period keeps it consistent:

- Added a comprehensive [Azure Optimization Engine reference](optimization-engine/reference.md) for runbooks, schedules, variables, Log Analytics tables, and SQL Database tables ([#1271](https://github.com/microsoft/finops-toolkit/issues/1271)).

@microsoft-github-policy-service microsoft-github-policy-service Bot added Needs: Attention 👋 Issue or PR needs to be reviewed by the author or it will be closed due to no activity and removed Needs: Review 👀 PR that is ready to be reviewed labels Aug 21, 2026
@microsoft-github-policy-service

Copy link
Copy Markdown

@Hélder Pinto (@helderpinto): you have some new feedback!

Please review and resolve all comments and I'll let reviewers know by removing the Needs: Attention label. If I miss anything, just reply with #needs-review and I'll update the status.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs: Attention 👋 Issue or PR needs to be reviewed by the author or it will be closed due to no activity Skill: Documentation Documentation updates Tool: Optimization Engine Azure Optimization Engine

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Document each Log Analytics table and the Automation runbooks contributing to the respective data ingestion

4 participants