Quickstart: Create alerts with Azure Resource Graph and Log Analytics
Article
In this quickstart, you learn how you can use Azure Log Analytics to create alerts on Azure Resource Graph queries. You can create alerts with Azure Resource Graph query, Log Analytics workspace, and managed identities. The alert's conditions send notifications at a specified interval.
You can use queries to set up alerts for your deployed Azure resources. You can create queries using Azure Resource Graph tables, or you can combine Azure Resource Graph tables and Log Analytics data from Azure Monitor Logs.
In this article's examples, create resources in the same resource group and use the same region, like West US 3. The examples in this article run queries and create alerts for Azure resources in a single Azure tenant. Azure Data Explorer clusters are out of this article's scope.
This article includes two examples of alerts:
Azure Resource Graph: Uses the Azure Resource Graph Resources table to create a query that gets data for your deployed Azure resources and create an alert.
Azure Resource Graph and Log Analytics: Uses the Azure Resource Graph Resources table and Log Analytics data from the from Azure Monitor Logs Heartbeat table. This example uses a virtual machine to show how to set up the query and alert.
Note
Azure Resource Graph alerts integration with Log Analytics is in public preview.
Prerequisites
If you don't have an Azure account, create a free account before you begin.
Resources deployed in Azure like virtual machines or storage accounts.
To use the example for the Azure Resource Graph and Log Analytics query, you need at least one Azure virtual machine with the Azure Monitor Agent.
Create workspace
Create a Log Analytics Workspace in the subscription that's being monitored.
You don't need to create a virtual machine for the example that uses the Azure Resource Graph table.
Note
This section is optional if you have existing virtual machines or know how to create a virtual machine. This example uses a virtual machine to show how to create a query using an Azure Resource Graph table and Log Analytics data.
To get log information, when you connect your virtual machine to the Log Analytics workspace, the Azure Monitor Agent is installed on the virtual machine. If you don't have a virtual machine, you can create one for this example. To avoid unnecessary costs, delete the virtual machine when you're finished with the example.
The following instructions are basic settings for a Linux virtual machine. Detailed steps about how to create a virtual machine are outside the scope of this article. Your organization might require different security or networking settings for virtual machines.
From Create a virtual machine you can accept default settings with the following exceptions:
Basics
Resource group: demo-arg-alert-rg
virtual machine name: Enter a virtual machine name like demovm01.
Availability options: No infrastructure redundancy required
Size: Standard_B1s
Administrator account: You must create credentials, but for this example, you don't need to sign in:
Authentication type: SSH public key
Username: Create a username
SSH public key source: Generate new key pair
Key pair name: Accept default name
Public inbound ports: None
Disks
Verify Delete with VM is selected.
Networking
Public IP: None
Select Delete NIC when VM is deleted.
Management
Select Enable auto-shutdown.
Select a shutdown time in your time zone.
Add your email address if you want a shutdown notification.
Monitoring, Advanced, and Tags
No changes needed for this example.
Select Review + create and then Create.
You're prompted to Generate new key pair. Select Download private key and create resource. When you're finished with the virtual machine, delete the private key file from your computer.
Select Go to resource after the virtual machine is deployed.
Note
This section is optional if you know how to connect a virtual machine to a Log Analytics workspace and Azure Monitor Agent.
Set up a data collection rule for monitoring the virtual machine.
From the Azure search field, enter data collection rules and select Data collection rules.
Select Create:
Rule name: Enter a name like demo-data-collection-rule.
Subscription: Select your subscription.
Resource Group: Select demo-arg-alert-rg.
Region: West US 3.
Platform type: Select All.
Select Next: Resources:
Select Add resources.
Subscription: Select your subscription.
Scope: Select your resource group and the virtual machine's name.
Select Apply.
Select Next: Collect and deliver:
Select Add data source.
Data source type: Select Performance Counters.
Select Next: Destination and Add destination:
Destination type: Azure Monitor Logs.
Subscription: Select your subscription.
Account or namespace: Select your Log Analytics workspace, demo-arg-alert-workspace.
Select Add data source.
Select Review + create, then Create.
Select Go to resource when the deployment is finished.
Verify monitoring is configured for the virtual machine:
Go to your data collection rule and review the Configuration:
Data Sources: Shows the data source Performance Counters and destination Azure Monitor Logs.
Resources: Shows the virtual machine, resource group, and subscription.
Go to your Log Analytics workspace demo-arg-alert-workspace. Select Settings > Agents > Linux servers and your Linux computer is connected to the Azure Monitor Linux agent. It can take a few minutes for the agent to be displayed.
Go to your virtual machine and select Settings > Extensions + applications and verify that the AzureMonitorLinuxAgentshows provisioning succeeded.
From the Log Analytics workspace, create an Azure Resource Graph query to get a count of your Azure resources. This example uses the Azure Resource Graph Resources table.
Select Logs from the left side of the Log Analytics workspace page. Close the Queries window if displayed.
Use the following code in the New Query:
arg("").Resources
| count
Table names in Log Analytics need to be camel case with the first letter of each word capitalized, like Resources or ResourceContainers. You can also use lowercase like resources or resourcecontainers.
Select Run.
The Results displays the Count of resources in your Azure subscription. Make a note of that number because you need it for the alert rule's condition. When you manually run the query the count is based on user identity, and a fired alert uses a managed identity. It's possible that the count might vary between a manual run or fired alert.
Remove the count from your query.
arg("").Resources
From the Log Analytics workspace, create an Azure Resource Graph query to get the last heartbeat information from your virtual machine. This example uses the Azure Resource Graph Resources table and Log Analytics data from the from Azure Monitor Logs Heartbeat table.
Go to your demo-arg-alert-workspace Log Analytics workspace.
Select Logs from the left side of the Log Analytics workspace page. Close the Queries window if displayed.
Use the following code in the New Query:
arg("").Resources
| where type == 'microsoft.compute/virtualmachines'
| project ResourceId = id, name, PowerState = tostring(properties.extended.instanceView.powerState.code)
| join (Heartbeat
| where TimeGenerated > ago(15m)
| summarize lastHeartBeat = max(TimeGenerated) by ResourceId)
on ResourceId
| project lastHeartBeat, PowerState, name, ResourceId
Table names in Log Analytics need to be camel case with the first letter of each word capitalized, like Resources or ResourceContainers. You can also use lowercase like resources or resourcecontainers.
You can use other timeframes for the TimeGenerated. For example, rather than minutes like 15m use hours like 12h, 24h, 48h.
Select Run.
The query should return the virtual machine's last heartbeat, power state, name, and resource ID. If no Results are displayed, continue to the next steps. New configurations can take 30 minutes for monitoring data to become available for the query and alerts.
From the Log Analytics workspace, select New alert rule. The query from your Log Analytics workspace is copied to the alert rule. Create an alert rule has several tabs that need to be updated to create the alert.
Scope
Verify that the scope defaults to your Log Analytics workspace named demo-arg-alert-workspace.
Only if your scope isn't set to the default, do the following steps:
Go to the Scope tab and select Select scope.
At the bottom of the Selected resources screen, remove the current scope.
Select the option to Select scope.
Expand the demo-arg-alert-rg from the list of resources and select demo-arg-alert-workspace.
Select Apply.
Select Next: Condition.
Condition
The form has several fields to complete:
Signal name: Custom log search
Search query: Displays the query code
If you changed the scope, you need to add the query from the Create query section.
Measurement
Measure: Table rows
Aggregation type: Count
Aggregation granularity: 5 minutes
Alert logic
Operator: Greater than
Threshold value: Use a number that's less that the number returned from the resources count.
For example, if your resource count was 50 then use 45. This value triggers the alert to fire when it evaluates your resources because your number of resources is greater than the threshold value.
Frequency of evaluation: 5 minutes
Select Next: Actions.
Actions
Select Create action group:
Subscription: Select your Azure subscription.
Resource group: demo-arg-alert-rg
Region: Global allows the action groups service to select location.
Action group name: demo-arg-alert-action-group
Display name: demo-action (limit is 12 characters)
Select the Email checkbox and type your email address.
Select Ok.
Select Review + create, verify the summary is correct, and select Create. You're returned to the Actions tab of the Create an alert rule page. The Action group name shows the action group you created. You receive an email notification to confirm you were added to the action group.
Select Next: Details.
Details
Use the following information on the Details tab:
Subscription: Select your Azure subscription.
Resource group: demo-arg-alert-rg
Severity: Accept the default value 3 - Informational.
Alert rule name: demo-arg-alert-rule
Alert rule description: Email alert for count of Azure resources
Region: West US 3
Identity: Select System assigned managed identity.
Select Review + create, verify the summary is correct, and select Create. You're returned to the Logs page of your Log Analytics workspace.
Assign role
Assign the Log Analytics Reader to the system-assigned managed identity so that it has permissions fire alerts that send email notifications.
Select Monitoring > Alerts in the Log Analytics workspace. Select OK if you're prompted that Your unsaved edits will be discarded.
Select Alert rules.
Select demo-arg-alert-rule.
Select Settings > Identity > System assigned:
Status: On
Object ID: Shows the GUID for your Enterprise Application (service principal) in Microsoft Entra ID.
Permission: Select Azure role assignments:
Verify your subscription is selected.
Select Add role assignment:
Scope: Subscription
Subscription: Select your Azure subscription name.
Role: Log Analytics Reader
Select Save.
It takes a few minutes for the Log Analytics Reader to display on the Azure role assignments page. Select Refresh to update the page.
Use your browser's back button to return to the Identity and then select Overview to return to the alert rule. Select the link to your resource group named demo-arg-alert-rg.
Although out of scope for this article, for an Azure Data Explorer cluster add the Reader role to the system-assigned managed identity. For more information, at the end of this article select the link Role assignments for Azure Data Explorer clusters.
From the Log Analytics workspace, select New alert rule. The query from your Log Analytics workspace is copied to the alert rule. The Create an alert rule has several tabs that need to be updated.
Scope
Verify that the scope defaults to your Log Analytics workspace named demo-arg-alert-workspace.
Only if your scope isn't set to the default, do the following steps:
Go to the Scope tab and select Select scope.
At the bottom of the Selected resources screen, delete the current scope.
Expand the demo-arg-alert-rg from the list of resources and select demo-arg-alert-workspace.
Select Apply.
Select Next: Condition.
Condition
The form has several fields to complete:
Signal name: Custom log search
Search query: Displays the query code
If you changed the scope, you need to add the query from the Create query section.
Measurement
Measure: Table rows
Aggregation type: Count
Aggregation granularity: 5 minutes
Alert logic
Operator: Less than
Threshold value: 2
Frequency of evaluation: 5 minutes
Select Next: Actions.
Actions
Select Create action group:
Subscription: Select your Azure subscription.
Resource group: demo-arg-alert-rg
Region: Global allows the action groups service to select location.
Select the Email checkbox and type your email address
Select Ok
Select Review + create, verify the summary is correct, and select Create. You're returned to the Actions tab of the Create an alert rule page. The Action group name shows the action group you created. You receive an email notification to confirm you were added to the action group.
Select Next: Details.
Details
Use the following information on the Details tab:
Subscription: Select your Azure subscription.
Resource group: demo-arg-alert-rg
Severity: Select 2 - Warning.
Alert rule name: demo-arg-la-alert-rule
Alert rule description: Email alert for ARG-LA query of Azure virtual machine
Region: West US 3
Identity: Select System assigned managed identity
Select Review + create, verify the summary is correct, and select Create. You're returned to the Logs page of your Log Analytics workspace.
Assign role
Assign the Log Analytics Reader to the system-assigned managed identity so that it has permissions fire alerts that send email notifications.
Select Monitoring > Alerts in the Log Analytics workspace. Select OK if you're prompted that Your unsaved edits will be discarded.
Select Alert rules.
Select demo-arg-la-alert-rule.
Select Settings > Identity > System assigned:
Status: On
Object ID: Shows the GUID for your Enterprise Application (service principal) in Microsoft Entra ID.
Permission: Select Azure role assignments
Verify your subscription is selected
Select Add role assignment:
Scope: Subscription
Subscription: Select your Azure subscription name
Role: Log Analytics Reader
Select Save.
It takes a few minutes for the Log Analytics Reader to display on the Azure role assignments page. Select Refresh to update the page.
Use your browser's back button to return to the Identity and select Overview to return to the alert rule. Select the link to your resource group named demo-arg-alert-rg.
Although out of scope for this article, for an Azure Data Explorer cluster add the Reader role to the system-assigned managed identity. For more information, at the end of this article select the link Role assignments for Azure Data Explorer clusters.
After the role is assigned to your alert rule, you begin to receive email for alert messages. The rule was created to send alerts every five minutes and it takes a few minutes to get the first alert.
You can also view the alerts in the Azure portal:
Go to the resource group demo-arg-alert-rg.
Select demo-arg-alert-workspace in your list of resources.
Select Monitoring > Alerts.
A list of alerts is displayed.
After the role is assigned to your alert rule, you begin to receive email for alert messages. The rule was created to send alerts every five minutes and it takes a few minutes to get the first alert.
You can also view the alerts in the Azure portal:
Go to the resource group demo-arg-alert-rg.
Select your virtual machine.
Select Monitoring > Alerts.
A list of alerts is displayed.
For a new configuration, it might take 30 minutes for log information to become available and create alerts. During that time, you might notice the virtual machine's alert rule displays alerts in the workspace's monitoring alerts. When the virtual machine's log information becomes available, the alerts are displayed in the virtual machine's monitoring alerts.
Clean up resources
If you want to keep the alert configuration but stop the alert from firing and sending email notifications, you can disable it. Go to your alert rule demo-arg-alert-rule or demo-arg-la-alert-rule and select Disable.
If you don't need this alert or the resources you created in this example, delete the resource group with the following steps:
Go to your resource group demo-arg-alert-rg.
Select Delete resource group.
Type the resource group name to confirm.
Select Delete.
If you created a virtual machine, delete the private key you downloaded to your computer during the deployment. The filename has a .pem extension.
Related content
For more information about the query language or how to explore resources, go to the following articles.