Find the gaps in your AWS monitoring before an outage does

Many AWS accounts have resources with no alarms on them at all. We audit what is and is not covered, deploy the alarms as code and run the endpoint checks AWS does not.

alarm coverage
Covered No alarm
rds-prod no alarm covered
ecs-api no alarm covered
cloudfront-web no alarm covered
sqs-jobs no alarm covered
HTTP 200 TLS ok WSS ok
The audit finds the gaps and the alarms close them as code.

Alarm coverage you can see, resource by resource

You cannot alarm on what you forgot you were running. Most teams cover the obvious resources and miss the rest, so the first an on-call engineer hears of a problem is a customer reporting it. Cloud Monitoring finds the resources with no alarms and closes the gaps as code.

Ask what is firing and where your gaps are through the Infrastructure Lens MCP →

Find the gaps, then close them with alarms as code

The audit, the alarms and the checks all run in your AWS accounts.

monitoring onboarding
How Cloud Monitoring is set up A read-only scan of your AWS accounts marks each resource as having an alarm or not and writes the first draft of the alarm configuration. The draft is tuned with thresholds and severities and committed to a config repository in your AWS accounts, where a pipeline runs cfn-guardian and CloudFormation creates the alarms. Each alarm routes by severity, Critical, Warning, Task or Informational, and a nightly check confirms every alarm can still reach someone. your AWS accounts rds-prod ecs-api sqs-jobs cloudfront-web no alarm no alarm no alarm no alarm covered covered covered covered scanned read-only alarms.yaml Resources: RDSInstance: - Id: rds-prod ECSService: - Id: ecs-api SQSQueue: - Id: sqs-jobs thresholds and severities set config repo in your AWS accounts pipeline runs cfn-guardian CloudFormation creates the alarms SEVERITY ROUTING Critical pages an engineer Warning reviewed daily Task becomes a ticket Informational goes to Slack nightly check alarms can reach someone 1/5Scan your AWS accounts read-only for resources with no alarm 2/5Write the first draft of the alarm configuration 3/5Tune and commit it, then the pipeline deploys the alarms 4/5Each alarm routes by severity to the right people 5/5Every night, a check confirms each alarm can still reach someone Scan, draft, deploy as code, route by severity, check nightly
The scan is read-only, and every change to the alarms is a commit you can review.

Audit your coverage

We scan your AWS accounts read-only for 27 types of resource worth alarming on, and mark each one as having an alarm or not.

Get the coverage report

The gaps come back as a report, and the same scan writes the first draft of the alarm configuration.

Deploy alarms as code

We tune the draft and commit it to the config repository. A pipeline runs cfn-guardian, and CloudFormation creates the alarms with defaults already set for 50 resource groups.

Add the checks AWS does not run

Lightweight Lambda checks cover HTTP, WebSocket, TLS, certificate and domain expiry, and emit straight to CloudWatch, without the cost of heavy canaries.

Route alerts by severity

Alarms route through SNS by severity, so a Critical alarm pages an engineer while Warning, Task and Informational alarms wait for review.

Keep the alarms working

Every night a check confirms each alarm still has its actions and subscriptions, and drift detection shows any manual change to the alarms.

See which resources have no alarms

A dashboard tells you about the resources you already alarm on. It says nothing about the ones you forgot. We audit your AWS accounts for CloudWatch alarm coverage and report the gaps, so you know which alarms to create instead of guessing.

  • Scans 27 resource types read-only, from EC2 and RDS to ECS, Lambda and SQS
  • Reports covered against uncovered for every resource it finds
  • Writes the first draft of the alarm configuration
  • Endpoint checks and services the scan cannot see, such as EKS and Kafka, are added by hand
coverage report
Before After
rds-prod no alarm
covered
ecs-api no alarm
covered
cloudfront-web no alarm
covered
The gaps are listed, then closed.
Every resource the audit finds, with or without an alarm.

Alarms as code, with defaults that make sense

Alarms are defined in YAML, kept in a code repository and deployed through CloudFormation, with defaults already set for 50 resource groups and four levels of severity. The alarms deploy as their own CloudFormation stack in your AWS accounts, so they sit alongside your existing Terraform or CDK rather than replacing it. Monitoring is versioned and repeatable, not clicked together in the console and forgotten.

  • Default alarms across EC2, RDS, ECS, Lambda, API Gateway, CloudFront, EKS, Kafka and more
  • When base2 runs it, Critical pages an engineer around the clock once thresholds are tuned, Warning is reviewed daily, Task becomes a ticket and Informational goes to Slack
  • Log metric filter alarms for the patterns that matter in your logs
  • Anomaly detection alarms where a fixed threshold does not fit
severity routing
Alarm Severity
rds free space below 50 GB
Critical
rds free space below 100 GB
Task
log filter error pattern
Informational
Defined in YAML, deployed through CloudFormation.

The checks AWS does not run for you

AWS has no native WebSocket check, and CloudWatch Synthetics canaries are heavy and expensive for what most teams actually need. Our checks run as small Lambdas and emit straight to CloudWatch, so you monitor the things AWS leaves to you without the canary bill.

  • HTTP availability, status code and response body checks
  • Certificate and domain expiry before either lapses, plus TLS version checks
  • WebSocket endpoint checks, which AWS has no native equivalent for
  • TCP port, SFTP and SQL query checks, including endpoints inside your VPC
endpoint checks
Endpoint Result
https GET /health
200, 84 ms
ssl certificate
valid, 84 days
wss live socket
echo ok
The checks AWS leaves to you, without the canary cost.

Built by base2Services

The monitoring we run on every AWS environment we manage, so a problem reaches us before it reaches your customers.

base2Services is an AWS Advanced Consulting Partner specialising in platform engineering and managed AWS operations. Cloud Monitoring is part of how we run AWS for people, not a side project. If you would rather not run it yourself, the team that built it runs it across your accounts and owns the response.

AWS Advanced Consulting Partner
See how base2 manages AWS →