Skip to main content

Microsoft Azure

Oodle integrates with Microsoft Azure to pull platform metrics from Azure Monitor. Oodle uses a read-only Microsoft Entra app registration that you create to discover the resources in your subscription through Azure Resource Graph, read their metrics, and enrich each metric with resource metadata and tags.

One integration record covers one Azure subscription. To monitor several subscriptions, add one record for each.

Prerequisites

  • An Azure subscription
  • Permission to create an app registration in the Microsoft Entra tenant of that subscription, and to assign roles on the subscription (or on a resource group in it)
  • An Oodle account (navigate to ap1, us1 to start setup)

Setup

  1. Open the Azure integration page in Oodle (ap1, us1), or click Settings > Integrations in the left sidebar and select the Microsoft Azure tile.
  2. Click Add subscription (+ button) to open the setup drawer.

The setup drawer shows where to find each value in the Azure portal. Follow the instructions in the drawer, or use the tabs below for detailed guidance:

1. Get your tenant and subscription IDs

2. Register an application

  1. Open App registrations and click New registration.
  2. Name it oodle-azure-metrics. Keep the default account type and leave the Redirect URI empty; this integration does not use it.
  3. Click Register, then copy the Application (client) ID from the Overview page.

3. Create a client secret

  1. In the app registration, open Certificates & secrets and click New client secret.
  2. Choose an expiry and click Add.
  3. Copy the secret Value (not the Secret ID). Azure shows the value only once.
Client secret expiry

Microsoft Entra caps a client secret lifetime at two years, and an expired secret stops collection. Note the expiry date, and when you rotate the secret, paste the new value into the Oodle drawer.

4. Grant the app the Monitoring Reader role

  1. Open the subscription in the Azure portal and click Access control (IAM).
  2. Click Add > Add role assignment.
  3. Select the Monitoring Reader role.
  4. Under Members, select User, group, or service principal, search for oodle-azure-metrics, and select it.
  5. Click Review + assign.

Monitoring Reader is the only role Oodle needs. For a narrower grant, assign the role on a resource group instead of the whole subscription; Oodle then collects only the resources in that group.

5. Save in Oodle

Enter these values in the Oodle setup drawer:

FieldValue
Subscription NameA name you choose. It labels this subscription in Oodle and appears as the subscription_name label on every metric.
Directory (tenant) IDFrom step 1
Subscription IDFrom step 1
Application (client) IDFrom step 2
Client SecretFrom step 3

Then open the Metric Collection tab, choose the services to collect (see Choosing services and filters), and click Save.

When you click Save, Oodle tests the credentials with one Azure Resource Graph query. A wrong tenant ID, client ID, or client secret is reported immediately. An Azure role assignment takes two to three minutes to propagate, so if you assigned the role moments ago, Oodle saves the subscription as Connecting and starts collection on its own once the assignment lands.

Choosing services and filters

Azure bills your subscription for every metric read, so collection is opt-in per service. The Metric Collection tab of the setup drawer controls what Oodle collects.

Services

Pick the Azure services to collect from. Each entry is one Azure resource type, shown with its ARM type (for example microsoft.compute/virtualmachines). When you save a subscription without choosing, Oodle collects these services by default:

  • Virtual Machines
  • Azure Kubernetes Service (AKS)
  • Load Balancer
  • SQL Database
  • App Service

Tag filters

Add tags to a row of services to collect only the resources that carry them:

  • A resource must have every tag on the row to be collected.
  • A tag key on its own matches any value.
  • Leave the tags empty to collect every resource of the services on that row.
  • Tags apply only to their own row. Add a second row to collect other services with different tags, for example every Virtual Machine but only env=production Storage Accounts.

Subscription filters

These optional filters narrow every row at once. A resource must pass them as well as its row's tags:

FilterEffect
Resource groupsCollect only resources in the listed resource groups (comma-separated, for example rg-prod, rg-staging).
Resource name patternCollect only resources whose name matches the regular expression (for example ^prod-).

Verification

Once setup is complete, verify the integration is working:

  1. Navigate to ap1, us1 and confirm the subscription status shows as connected.
  2. Go to ap1, us1 and search for metrics prefixed with azure_ to confirm data is flowing.

Allow up to 15 minutes for the first metrics to appear: Azure Resource Graph can take several minutes to index a newly granted subscription, and collection runs on a five-minute schedule behind a five-minute delay (see How Oodle collects Azure metrics).

Dashboards

Oodle provisions a set of dashboards for Azure when you add a subscription. Click View Dashboards on the integration tile, or open the Azure Oodle Integration folder in Dashboards, to find:

  • Azure Overview
  • Azure Virtual Machines
  • Azure Kubernetes Service
  • Azure App Service
  • Azure SQL Database
  • Azure Storage Accounts
  • Azure Load Balancer
  • Azure Cosmos DB
  • Azure Key Vault
  • Azure Cache for Redis
  • Azure Managed Disks
  • Azure Network Interfaces

Each dashboard filters by the subscription_name, resource_group, and resource_name labels.

Metric names and labels

Metric names

Every Azure metric is prefixed with azure_, followed by the metric namespace and the metric name in snake case:

Azure namespaceAzure metricOodle metric
Microsoft.Compute/virtualMachinesPercentage CPUazure_vm_percentage_cpu
Microsoft.Storage/storageAccountsUsedCapacityazure_storage_used_capacity
Microsoft.Web/sitesCpuTimeazure_app_services_cpu_time
Microsoft.Sql/servers/databasescpu_percentazure_sql_servers_databases_cpu_percent
Microsoft.Storage/storageAccounts/blobServicesTransactionsazure_storage_storageaccounts_blobservices_transactions

Virtual Machines, Storage Accounts, and App Service use the short names vm, storage, and app_services, which match the names Datadog publishes, so queries written for Datadog carry over. Every other namespace is the ARM resource type without the Microsoft. prefix, with / replaced by _.

Azure publishes several aggregations of each metric (Average, Total, Count, Maximum, Minimum). The primary aggregation carries the bare metric name, and every other aggregation is suffixed with its name, for example azure_vm_percentage_cpu (Average) and azure_vm_percentage_cpu_maximum.

Labels

Every Azure metric carries these labels:

LabelValue
cloud_providerazure
subscription_idThe Azure subscription ID
subscription_nameThe name you gave the subscription in Oodle
resource_groupThe resource group of the resource
regionThe Azure region of the resource
resource_typeThe ARM resource type, for example microsoft.compute/virtualmachines
resource_nameThe name of the resource
unitThe unit Azure reports, for example Percent or Bytes
aggregationThe Azure aggregation of the sample, for example Average or Total

In addition, each Azure metric dimension (for example LUN on a disk metric) and each tag on the resource becomes a label, with the name converted to a valid label name. The labels in the table above take priority: a resource tag named region does not replace the region label.

Troubleshooting

IssueResolution
Saving reports that Azure denied accessThe Monitoring Reader role assignment has not propagated yet, or targets the wrong scope. Wait two to three minutes and save again. If it persists, confirm the assignment covers the subscription or resource group that holds the resources you want.
Saving reports MissingSubscriptionRegistrationThe Microsoft.Insights resource provider is not registered on this subscription. Azure Monitor registers it on almost every subscription already, so this is rare. Run az provider register --namespace Microsoft.Insights, or open the subscription > Resource providers in the portal, search for Microsoft.Insights, and register it.
Saving reports that Oodle failed to reach Azure with these credentialsCheck the tenant ID, subscription ID, client ID, and client secret. Make sure you pasted the secret Value and not the Secret ID.
The subscription connects but no metrics appearWait about 15 minutes. Then confirm the services you expect are enabled on the Metric Collection tab, and that no resource group, tag, or name filter excludes them.
Some resource types report but others do notOnly the services enabled on the subscription are collected. Enable the missing service on the Metric Collection tab.
Metrics stopped after a whileThe client secret has expired. Create a new secret in the app registration and paste it into the Oodle drawer.

How Oodle collects Azure metrics

Discovery

Oodle queries Azure Resource Graph to list the resources of the enabled services in the subscription, applies your tag, resource group, and name filters, and reads the resource tags that become labels. Resource Graph is eventually consistent, so a newly created resource can take a few minutes to appear.

Polling interval

Oodle reads Azure Monitor on a recurring interval, every 5 minutes by default, and requests one-minute granularity, which is the finest grain Azure platform metrics offer. To adjust the interval, reach out to Oodle Support.

A shorter polling interval increases the number of metric reads Oodle makes against your subscription, which affects your Azure Monitor costs.

Expected data delay

Azure publishes a datapoint before it has finished receiving all of its samples, and revises the value afterwards. Oodle reads each window five minutes behind the current time so that every stored value is final. Combined with the polling interval, metrics typically appear in Oodle 5 to 10 minutes after they are recorded in Azure. This delay is normal and applies to all polling-based integrations.

Custom metrics and guest OS metrics

Azure Monitor platform metrics cover the Azure resources themselves. To bring custom application metrics or Virtual Machine guest OS metrics into Oodle, send them directly with an agent. See the other metrics integrations for options on sending data to Oodle directly.


Support

If you need assistance or have any questions, please reach out to us through: