AWS bill line item
CW:AlarmMonitorUsage
The per-alarm hourly charge (prorated to per-month) for every standard-resolution metric alarm that exists in your account, whether or not it has ever fired.
CloudWatch alarms
Verified against official AWS documentation last checked
Why it shows up
Alarms created by infrastructure-as-code stacks or auto-scaling configurations often outlive the resources they monitor, sitting in an insufficient-data state and billing indefinitely until someone notices and deletes them.
Alarms built on metric-math expressions or anomaly-detection bands are charged per underlying metric referenced, not per alarm, so one alarm in the console can bill as several.
How to cut it
- Periodically find alarms stuck in an insufficient-data state tied to deleted resources.
- Delete unused alarms left behind by decommissioned stacks or one-off experiments.
- Avoid composite and high-resolution alarms unless the faster evaluation cadence meaningfully changes response time.
- Aggregate data upstream instead of building one metric-math alarm that references many individual metrics.
How to read a usage type
The colon in CW:AlarmMonitorUsage doesn't introduce an instance type the way it does in a code like BoxUsage:m5.large. This code carries no region or direction token either, so there's nothing to break down here.
Source
Source: AWS docs →Found CW:AlarmMonitorUsage on your own bill?
Drop your Cost Explorer CSV into the AWS Bill Analyzer. It'll flag line items like this one on your own bill and link straight back to the fix.
Analyze your own bill →The invoice is a lagging signal.
A monthly invoice tells you what already happened. CostMon builds a daily baseline, so a spike stands out while you can still act on it.