# Azure Metric Alerts Integration

## Azure Metric Alerts — Webhook Integration

Azure Monitor lets you fire alerts when any resource metric crosses a threshold — CPU usage, storage capacity, request latency, whatever you're tracking. Those alerts can hit a webhook endpoint directly via Action Groups, which is how we get them into the on-call platform.

This guide walks through setting up a Storage Account metric alert as an example. The same steps apply to any other Azure resource type.

### 1. Create a Storage Account (if you don't have one)

You need at least one Azure resource to attach a metric alert to. A Storage Account works well for testing — it's free to create and always has measurable metrics.

Go to **Azure Portal** → search **Storage accounts** → **+ Create**. Fill in the basics (subscription, resource group, name, region) and click through to **Review + create**.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2F9KTfmZk3GIMcTF8KQ8BX%2FEkran%20Resmi%202026-03-03%2017.39.03.png?alt=media&#x26;token=d1baab74-fdce-45f1-9aef-4fe82008f9f3" alt=""><figcaption></figcaption></figure>

Hit **Create**. Once the deployment finishes you'll see this:

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FzUilS5qcIxJbb22B1JDc%2FEkran%20Resmi%202026-03-03%2017.40.42.png?alt=media&#x26;token=a5104ea6-0765-47a2-a3f9-360c72e522b9" alt=""><figcaption></figcaption></figure>

Click **Go to resource** to open the storage account.

### 2. Create the alert rule

From the storage account overview, go to **Monitor → Alerts** in the left panel, then **+ Create → Alert rule**. On the **Scope** tab, click **Select scope** — a panel slides in on the right. Find your storage account in the list, check it, and hit **Apply**.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FwGFgGUDxFMvKvNZrYWiR%2FEkran%20Resmi%202026-03-03%2017.42.43.png?alt=media&#x26;token=805d8cc1-159f-4994-85fe-0422f28d8e18" alt=""><figcaption></figcaption></figure>

### 3. Set the condition

Switch to the **Condition** tab. Click **Select a signal** — a search panel opens. Type `used` and select **Used capacity** from the results.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FjqHg0mtl5zOExAUCBUKG%2Fimage.png?alt=media&#x26;token=94c2a4d6-10a6-4dad-a18d-7733be1756c6" alt=""><figcaption></figcaption></figure>

On the condition configuration screen, set the threshold to whatever makes sense for your alert. For a quick test, **Greater than 0 bytes** works fine since any data in the account will trigger it.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FYnUbnTVplWNurqWBGie3%2Fimage.png?alt=media&#x26;token=6398dcb9-1088-4e3d-9832-017e0ab336c1" alt=""><figcaption></figcaption></figure>

Click **Next: Actions**.

### 4. Create the action group

On the **Actions** tab, select **Use action groups**, then **+ Create action group**. Give it a name — something like `OnCall-Webhook-Group` — and set a short display name.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FTkl5jECaai8Az9sTHBqB%2FEkran%20Resmi%202026-03-03%2017.50.00.png?alt=media&#x26;token=e326094e-7e50-4439-a9e0-b7db76b36612" alt=""><figcaption></figcaption></figure>

Click through to the **Actions** tab within the action group form. Set **Action type** to **Webhook**, give it a name like `TriggerWebhook`, and paste your on-call platform webhook URL into the **URI** field. Make sure **Enable the common alert schema** is set to **Yes** — this standardizes the payload format across all Azure alert types.

Hit **OK**, then **Review + create** → **Create**.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FeinXsDEhEGfnGn8VakkD%2FEkran%20Resmi%202026-03-03%2017.50.58.png?alt=media&#x26;token=918e719c-b84b-41b0-9d8b-0dcf06dec307" alt=""><figcaption></figcaption></figure>

Back in the alert rule form, you'll see a panel to select from existing action groups. Pick **OnCall-Webhook-Group** and click **Select**.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2F88M7fNyJss7GRYJHNaj9%2FEkran%20Resmi%202026-03-03%2017.52.16.png?alt=media&#x26;token=42b5ac7e-13b4-4f9b-a397-2d5b9fd09973" alt=""><figcaption></figcaption></figure>

### 5. Name the alert rule

On the **Details** tab, give the alert rule a descriptive name. Set the severity level to match what this alert means for your environment.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FocvrIi92o30iIB1q3uKk%2FEkran%20Resmi%202026-03-03%2017.53.13.png?alt=media&#x26;token=75f1a1b7-18cf-48f5-8df6-2dfd81da2264" alt=""><figcaption></figcaption></figure>

Click **Review + create** → **Create**.

### 6. Verify the action group

To confirm the webhook URL is correctly set, go to **Monitor → Alerts → Action groups** and open **OnCall-Webhook-Group**. The Actions section should show the webhook entry with your URL.

<figure><img src="https://4108595529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FimJRSa33y5Ej6rwXrBeA%2Fuploads%2FpKeMVgGiWbYVDdpQp3F8%2FEkran%20Resmi%202026-03-03%2017.54.55.png?alt=media&#x26;token=5f08fe43-d43c-451a-abf9-4f9d3f7ba758" alt=""><figcaption></figcaption></figure>

That's it. When the metric condition is met, Azure will POST the alert payload to your webhook URL and the on-call platform will create an alert automatically.

### Field mappings

Azure Metric alerts use the Common Alert Schema. The platform reads the following fields:

| Azure Field                        | Platform Field                                                           |
| ---------------------------------- | ------------------------------------------------------------------------ |
| `data.essentials.alertId`          | Fingerprint — ties together fired and resolved events for the same alert |
| `data.essentials.monitorCondition` | `Fired` → ALERT, `Resolved` → RESOLVE                                    |
| `data.essentials.severity`         | Priority                                                                 |
| `data.essentials.alertRule`        | Alert title                                                              |

Severity to priority mapping:

| Azure Severity | Platform Priority |
| -------------- | ----------------- |
| Sev0           | CRITICAL          |
| Sev1           | HIGH              |
| Sev2           | MEDIUM            |
| Sev3           | LOW               |
| Sev4           | LOW               |

**Will alerts resolve automatically?** Yes — when the metric condition clears, Azure fires another webhook with `monitorCondition: Resolved` and the platform closes the alert.
