Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions docs-mslearn/toolkit/alerts/configure-finops-alerts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
title: Configure FinOps alerts
description: FinOps alerts will accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle.
author: bandersmsft
ms.author: banders
ms.date: 02/18/2025
ms.topic: concept-article
ms.service: finops
ms.subservice: finops-toolkit
ms.reviewer: robelmamecha
#customer intent: As a FinOps practitioner, I want to deploy FinOps alerts to detect idle resources.
---

<!-- markdownlint-disable-next-line MD025 -->
# Configure FinOps alerts

FinOps alerts is an automated and proactive cost optimization tool built on Azure Logic Apps. It continuously scans your Azure environment for idle resources and sends notifications to help you take timely action. This solution empowers FinOps practitioners to better manage cloud spending while minimizing waste in the environment.

<br>

## Overview

To configure FinOps alerts, follow these steps:

1. **Deploy FinOps alerts**

> [!div class="nextstepaction"]
> [Deploy to Azure](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json)
>
> [!div class="nextstepaction"]
> [Deploy to Azure Gov](https://portal.azure.us/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json)
>
> [!div class="nextstepaction"]
> [Deploy to Azure China](https://portal.azure.cn/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json)

2. **Authorize API connection**

> [!NOTE]
> After deployment, the Logic app will show a failed run this is due to the API connection, this is a temporary state until authorization is complete.

1. Select the **API connection** resource, then select **Edit API Connection** in the General tab to authorize the connection. Once you enable connection select **Save**.

:::image type="content" source="./media/finops-alerts/authorize-api-connection.png" alt-text="Screenshot of editing API connection." lightbox="./media/finops-alerts/authorize-api-connection.png" :::

3. **Assigning reader permission**

1. The Logic App’s system-assigned identity must have the **Reader** role on the targeted subscriptions. This role enables it to query resource utilization data. Follow [these steps](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal-managed-identity#system-assigned-managed-identity) to assign the reader role.

1. For environments that span multiple subscriptions, consider assigning the Reader role at the management group level to streamline permissions management and ensure comprehensive monitoring.

4. **Configuring the Logic App**

1. Within the Logic App designer adjust the recurrence setting (defaulting to 1 week) based on your monitoring needs.

2. Configure details such as the email subject, alert recipients, and filter which subscription IDs should be included or excluded. This level of customization allows you to tailor the monitoring to your specific cloud environment and cost optimization strategy.

3. If needed, further modify the Logic App’s workflow such as conditions, thresholds, and notification channels to align with your organization’s requirements.

5. **Testing and validation**

1. After completing the setup, run the Logic App to ensure it correctly identifies idle resources and triggers the appropriate notifications.

2. Analyze test results to adjust thresholds or alert parameters as necessary.

<br>

## Give feedback

Let us know how we're doing with a quick review. We use these reviews to improve and expand FinOps tools and resources.

> [!div class="nextstepaction"]
> [Give feedback](https://portal.azure.com/#view/HubsExtension/InProductFeedbackBlade/extensionName/FinOpsToolkit/cesQuestion/How%20easy%20or%20hard%20is%20it%20to%20use%20FinOps%20alerts%3F/cvaQuestion/How%20valuable%20are%20FinOps%20alerts%3F/surveyId/FTK0.8/bladeName/Alerts/featureName/Overview)

If you're looking for something specific, vote for an existing or create a new idea. Share ideas with others to get more votes. We focus on ideas with the most votes.

> [!div class="nextstepaction"]
> [Vote on or suggest ideas](https://github.com/microsoft/finops-toolkit/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22Tool%3A%20FinOps%20alerts%22%20sort%3Areactions-%2B1-desc)

<br>

## Related content

Related FinOps capabilities:

- [Reporting and analytics](../../framework/understand/reporting.md)
- [Workload optimization](../../framework/optimize/workloads.md)

Related products:

- [Azure Logic Apps](/azure/azure-logic-apps/)

Related solutions:

- [FinOps workbooks](../workbooks/finops-workbooks-overview.md)

<br>
75 changes: 75 additions & 0 deletions docs-mslearn/toolkit/alerts/finops-alerts-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: FinOps alerts overview
description: FinOps alerts will accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle.
author: bandersmsft
ms.author: banders
ms.date: 02/18/2025
ms.topic: concept-article
ms.service: finops
ms.subservice: finops-toolkit
ms.reviewer: robelmamecha
#customer intent: As a FinOps practitioner, I need to learn about FinOps alerts.
---

<!-- markdownlint-disable-next-line MD025 -->
# FinOps alerts

FinOps alerts is an automated and proactive cost optimization tool built on Azure Logic Apps. It continuously scans your Azure environment for idle resources and sends notifications to help you take timely action. This solution empowers FinOps practitioners to better manage cloud spending while minimizing waste in the environment.

## How it works

FinOps alerts leverages Azure Logic Apps to automate detection of waste across selected subscriptions:

- **Automated resource monitoring** <br> FinOps alerts runs on a configurable schedule to assess resource activity. It inspects various resource properties to identify idle resources that might be leading to unnecessary costs.

- **Automated notifications** <br> Upon detecting idle resources, the Logic App triggers notificationsβ€”via email or other integrated channels to designated administrators, ensuring that the right stakeholders are alerted promptly to review and to take action.

- **Flexibility** <br> Users can tailor key parameters, including the recurrence interval, alert recipients, and the specific subscriptions to monitor. This makes the tool adaptable to a wide range of cloud environments.

## Benefits

- By automating the detection of idle resources, FinOps alerts helps you preemptively address inefficient spending, ensuring that cloud costs remain under control.

- Designed to operate seamlessly across single or multi-subscription environments.

## Why FinOps alerts?

If you are using the [FinOps workbook](/finops/toolkit/workbooks/finops-workbooks-overview) to identify idle or underutilized resources, you'll notice it doesn’t provide any automatic alerts-meaning engineers must continually check back to review flagged items. FinOps alerts automates this process, ensuring that when resources are identified as potentially inefficient, stakeholders receive timely notifications without having to manually monitor a workbook. This not only frees up valuable time for busy teams but also improves the chances of catching cost-saving opportunities as they arise. Moreover, future releases of the app are planned to include additional queries, broadening its scope and further enhancing its ability to deliver actionable insights for sustainable cloud cost management.

## Required permissions

Deploying FinOps alerts template requires one of the following:

- For least-privileged access, [Contributor](/azure/role-based-access-control/built-in-roles#contributor) and [Role Based Access Control Administrator](/azure/role-based-access-control/built-in-roles#role-based-access-control-administrator)
- [Owner](/azure/role-based-access-control/built-in-roles#owner)

## Give feedback

Let us know how we're doing with a quick review. We use these reviews to improve and expand FinOps tools and resources.

> [!div class="nextstepaction"]
> [Give feedback](https://portal.azure.com/#view/HubsExtension/InProductFeedbackBlade/extensionName/FinOpsToolkit/cesQuestion/How%20easy%20or%20hard%20is%20it%20to%20use%20FinOps%20alerts%3F/cvaQuestion/How%20valuable%20are%20FinOps%20alerts%3F/surveyId/FTK0.8/bladeName/Alerts/featureName/Overview)

If you're looking for something specific, vote for an existing or create a new idea. Share ideas with others to get more votes. We focus on ideas with the most votes.

> [!div class="nextstepaction"]
> [Vote on or suggest ideas](https://github.com/microsoft/finops-toolkit/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22Tool%3A%20FinOps%20alerts%22%20sort%3Areactions-%2B1-desc)

<br>

## Related content

Related FinOps capabilities:

- [Reporting and analytics](../../framework/understand/reporting.md)
- [Workload optimization](../../framework/optimize/workloads.md)

Related products:

- [Azure Logic Apps](/azure/azure-logic-apps/)

Related solutions:

- [FinOps workbooks](../workbooks/finops-workbooks-overview.md)

<br>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions docs-mslearn/toolkit/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ _Released March 2025_
- If you rely on this setting, please [create an issue in GitHub](https://aka.ms/ftk/ideas) and let us know what you need.
- **Fixed**
- Fixed the "The import Storage URL matches no exports" error ([#1344](https://github.com/microsoft/finops-toolkit/issues/1344)).
- Added resource-specific tags to the stop all triggers deployment script ([#1330](https://github.com/microsoft/finops-toolkit/issues/1330))

**[Rate optimization](power-bi/rate-optimization.md)**

Expand All @@ -78,6 +79,13 @@ _Released March 2025_
- Please do not delete the managed identities. Deleting managed identities can result in errors during upgrades.
- Removed the trusted external tenants setting due to an error causing redeployments to fail. Please enable this after deploying FinOps hubs the first time.

### [FinOps alerts](finops-alerts-overview.md) v0.9

- **Added**
- Overview documentation on how the FinOps alert tool works in the [FinOps alerts overview](./alerts/finops-alerts-overview.md).
- Configuration steps in the [Configure FinOps alerts](./alerts/configure-finops-alerts.md).
- FinOps alerts deployment template.

> [!div class="nextstepaction"]
> [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v0.9)
> [!div class="nextstepaction"]
Expand Down
66 changes: 66 additions & 0 deletions docs/finops-alerts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
layout: default
title: FinOps alerts
browser: FinOps alerts - Monitor your Azure environment for optimization
nav_order: 35
description: 'Accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle.'
permalink: /alerts
#customer intent: As a Finops practitioner, I need to learn about FinOps Alerts
---

<span class="fs-9 d-block mb-4">FinOps alerts</span>
Accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle.
{: .fs-6 .fw-300 }

<a class="btn btn-primary fs-5 mb-4 mb-md-0 mr-4" href="#deploy">Deploy</a>
<a class="btn fs-5 mb-4 mb-md-0 mr-4" target="_blank" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/alerts/finops-alerts-overview">Documentation</a>

---

Designed with flexibility in mind, FinOps alerts run on a fully configurable schedule, continuously scanning your selected subscriptions for idle resources.

<div id="whats-new" class="m-0 p-4"
style="background-color:#edf; border:solid 1px #609;">
<h3 class="m-0 mb-4">What's new in March 2025<span
class="ftk-version">v0.9</span></h3>
<p class="mt-2 mb-0">
March released FinOps alerts to boost cost optimization with automated notifications that monitor your cloud.
</p>
<p class="mt-2 mb-0 ftk-externallink"><a target="_blank" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/changelog">See all changes</a></p>
</div>
<a name="features"></a>

## Actionable insights for smarter cloud management

<div class="ftk-gallery ftk-50">
<div class="ftk-tile">
<div>πŸ” Monitor idle resources</div>
<div>Identify idle resources across your environment to uncover cost savings.</div>
</div>
<div class="ftk-tile">
<div>πŸ“§ Automated notifications</div>
<div>Get notified when idle resources are detected and take control of your environment.</div>
</div>
<div class="ftk-tile">
<div>πŸ”” Customize alerts</div>
<div>Tune alerts to reach key stakeholders, take new actions, and more!</div>
</div>
<div class="ftk-tile">
<div>πŸ“ƒ Review resource utilization</div>
<div>Track resource inventory and utilization of targeted services.<br>&nbsp;</div>
</div>
</div>
<a name="deploy"></a>

## Deploy FinOps alerts

FinOps alerts works best with the <strong>Owner</strong> role. For least privileged access, use the Contributor and Role Based Access Control Administrator roles.

<a class="btn mb-4 mb-md-0 mr-4" target="_blank" href="https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json">Deploy to Azure</a>
<a class="btn mb-4 mb-md-0 mr-4" target="_blank" href="https://portal.azure.us/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json">Deploy to Azure Gov</a>
<a class="btn mb-4 mb-md-0 mr-4" target="_blank" href="https://portal.azure.cn/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json">Deploy to Azure China</a>

<a target="_blank" href="https://portal.azure.com/#view/HubsExtension/InProductFeedbackBlade/extensionName/FinOpsToolkit/cesQuestion/How%20easy%20or%20hard%20is%20it%20to%20use%20FinOps%20alerts%3F/cvaQuestion/How%20valuable%20are%20FinOps%20alerts%3F/surveyId/FTK0.8/bladeName/Alerts/featureName/Marketing.Deploy">πŸ’œ Give feedback</a>
<a name="docs"></a>

<br>
72 changes: 72 additions & 0 deletions src/templates/finops-alerts/createUiDefinition.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"config": {
"basics": {
"description": "FinOps alerts is an Azure Logic Apps-based automated detection system that identifies idle resources across selected subscriptions on a configurable schedule and sends notifications to admins to investigate and take action",
"location": {
"label": "Location",
"toolTip": "Location of logic app must be in the same region as the resource group.",
"resourceTypes": [
"Microsoft.Logic/workflows",
"Microsoft.Web/connections"
]
}
}
},
"basics": [
{
"name": "finopsalertsName",
"type": "Microsoft.Common.TextBox",
"label": "FinOps alerts name",
"defaultValue": "finops-alerts",
"toolTip": "Name of the FinOps alerts instance.",
"constraints": {
"required": true,
"regex": "^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]$",
"validationMessage": "Name must be between 3 and 63 characters long and can contain only lowercase letters, numbers, and hyphens. The first and last characters in the name must be alphanumeric."
},
"visible": true
},
{
"name": "connectionsName",
"type": "Microsoft.Common.TextBox",
"label": "Connection name",
"defaultValue": "finops-alerts-connection",
"toolTip": "Name of the API connection.",
"constraints": {
"required": true,
"regex": "^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]$",
"validationMessage": "Name must be between 3 and 63 characters long and can contain only lowercase letters, numbers, and hyphens. The first and last characters in the name must be alphanumeric."
},
"visible": true
}
],
"steps": [{
"name": "tags",
"label": "Tags",
"elements": [
{
"name": "tagsByResource",
"label": "Tags",
"toolTip": "Tags to apply to resources.",
"type": "Microsoft.Common.TagsByResource",
"resources": [
"Microsoft.Logic/workflows",
"Microsoft.Web/connections"
]
}
]
}],
"outputs": {
"hubName": "[basics('finopsalertsName')]",
"location": "[location()]",
"tagsByResource": "[steps('tags').tagsByResource]"},
"resourceTypes": [
"Microsoft.Logic/workflows",
"Microsoft.Web/connections"
]
}
}
51 changes: 51 additions & 0 deletions src/templates/finops-alerts/main.bicep
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//==============================================================================
// Parameters
//==============================================================================

targetScope = 'resourceGroup'

@description('Azure location where resources should be created')
param location string = resourceGroup().location

@description('Name of the logic app')
@minLength(1)
@maxLength(20)
param appName string = 'finops-alerts'

@description('Specifies the frequency of the recurrence trigger. Possible values are Week, Day or Hour.')
param recurrenceFrequency string = 'Week'

@description('Specifies the interval for the recurrence trigger. Represents the number of frequency units.')
param recurrenceInterval int = 1

@description('Specifies the type of the trigger. For this example, it is a recurrence trigger.')
param recurrenceType string = 'Recurrence'

//@description('A list of resource Id of subscriptions.')
//param subscriptionsIds array = [
//'dbc1e833-6b33-4788-b219-b9266b898fad'
//]

@description('The Id of the subscription to deploy the logic app in.')
param logicAppSubscriptionId string = ''

@description('The name of the resource group.')
param resourceGroupName string = ''

//==============================================================================
// Resources
//==============================================================================

module logicApp 'modules/logicApp.bicep' = {
name: 'logicApp-${uniqueString(deployment().name,location,appName)}'
scope: resourceGroup(logicAppSubscriptionId, resourceGroupName)
params: {
appName: appName
location: location
recurrenceFrequency: recurrenceFrequency
recurrenceInterval: recurrenceInterval
recurrenceType: recurrenceType
}
}


Loading