> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devhelm.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Resource Group Health

> Aggregate monitor and service health into DevHelm resource groups

By the end of this guide, you'll have monitors and services grouped together for unified health views and coordinated alert management.

<Accordion title="Prerequisites">
  * DevHelm CLI installed or an API token
  * At least two monitors or service dependencies
</Accordion>

## What resource groups do

Resource groups let you:

* **Aggregate health** — see the overall status of a logical service composed of multiple monitors and dependencies
* **Suppress noise** — when a group-level incident is active, suppress individual member alerts
* **Simplify routing** — use `resource_group_id_in` in notification policies to route group alerts

## Create a resource group

<Steps>
  <Step title="Create the group">
    <CodeGroup>
      ```bash CLI theme={null}
      devhelm resource-groups create \
        --name "Payment Stack" \
        --description "All payment-related monitors and services"
      ```

      ```bash API theme={null}
      curl -X POST https://api.devhelm.io/api/v1/resource-groups \
        -H "Authorization: Bearer $DEVHELM_API_TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
          "name": "Payment Stack",
          "description": "All payment-related monitors and services"
        }'
      ```
    </CodeGroup>
  </Step>

  <Step title="Add members">
    ```bash theme={null}
    curl -X POST https://api.devhelm.io/api/v1/resource-groups/<group-id>/members \
      -H "Authorization: Bearer $DEVHELM_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"memberType": "monitor", "memberId": "<stripe-webhook-monitor-id>"}'

    curl -X POST https://api.devhelm.io/api/v1/resource-groups/<group-id>/members \
      -H "Authorization: Bearer $DEVHELM_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"memberType": "monitor", "memberId": "<checkout-api-monitor-id>"}'

    curl -X POST https://api.devhelm.io/api/v1/resource-groups/<group-id>/members \
      -H "Authorization: Bearer $DEVHELM_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"memberType": "service", "memberId": "<stripe-service-id>"}'
    ```
  </Step>

  <Step title="View group health">
    ```bash theme={null}
    devhelm resource-groups get <group-id>
    ```

    The response shows the aggregate status across all members.
  </Step>
</Steps>

## Alert suppression

When a group has `suppressMemberAlerts` enabled and a group-level incident is active, individual member alerts are suppressed. This prevents alert storms when multiple monitors in a group fail due to a shared root cause.

For example, if your database cluster goes down and all 5 services that depend on it fail, you get one group incident instead of 5 individual alerts.

See [Alert suppression](/alerting/suppression) for details.

## Route group alerts

Create notification policies targeting specific resource groups:

```json theme={null}
{
  "name": "Payment stack to payments channel",
  "matchRules": [
    { "type": "resource_group_id_in", "values": ["<payment-stack-group-id>"] }
  ],
  "escalation": {
    "steps": [{
      "delayMinutes": 0,
      "channelIds": ["<payments-slack-id>"]
    }]
  },
  "priority": 10
}
```

## Example group structures

<AccordionGroup>
  <Accordion title="Infrastructure layer">
    Group database monitors, cache monitors, and message queue monitors. When the infrastructure layer is unhealthy, suppress alerts from dependent application monitors.
  </Accordion>

  <Accordion title="Customer-facing service">
    Group the API monitor, CDN monitor, and third-party payment dependency. Single health indicator for stakeholder dashboards.
  </Accordion>

  <Accordion title="Regional deployment">
    Group all monitors for a specific region (US-East, EU-West). Route regional group alerts to the corresponding on-call team.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Alert suppression" icon="bell-slash" href="/alerting/suppression">
    How group suppression prevents alert storms.
  </Card>

  <Card title="Status Data guide" icon="chart-line" href="/guides/status-data">
    Add third-party services as group members.
  </Card>

  <Card title="Alert routing by tag" icon="tags" href="/guides/alert-routing-by-tag">
    Combine groups with tag-based routing.
  </Card>
</CardGroup>
