Back to Blog

Proactive Monitoring for the DOP-C02 Exam: CloudWatch Synthetics Canaries & RUM (and the Canary-Deployment Trap)

A DevOps-scale guide to proactive and synthetic monitoring for the AWS DOP-C02 exam. How CloudWatch Synthetics canaries test endpoints and workflows on a schedule, how RUM captures real-user experience, how to alarm on canary failure, and the crucial difference between a Synthetics canary and a canary deployment.

By Sailor Team , September 16, 2026

Most CloudWatch monitoring is reactive: a metric alarm fires after latency climbs or error rates spike — which means real users already felt the problem before your pager went off. And if traffic to an endpoint drops to zero because it’s completely broken, some metric-based alarms never fire at all, because “no requests” can look identical to “no problem.” The DOP-C02 exam expects you to close that gap with proactive, synthetic monitoring: continuously testing your endpoints and user journeys on a schedule, whether or not real customers are hitting them, so you detect an outage before anyone reports it.

This guide covers the two AWS services the Monitoring and Logging domain uses for that job — CloudWatch Synthetics (canaries) and CloudWatch RUM (real-user monitoring) — and it clears up the single most common point of confusion in the whole topic: a Synthetics canary and a canary deployment are unrelated things that happen to share a word. It assumes you already know reactive CloudWatch — metrics, alarms, Logs Insights — which the DOP-C02 monitoring and observability guide covers; here we build the proactive layer on top.

First, Kill the Confusion: Canary Monitoring vs Canary Deployment

The word “canary” shows up in two completely different AWS contexts, and the exam knows candidates mix them up.

Synthetics canary (monitoring)Canary deployment (release)
What it isA scripted probe that tests an endpoint or workflow on a scheduleA deployment strategy that shifts a small % of traffic to a new version, then the rest
ServiceCloudWatch SyntheticsCodeDeploy (also ECS/Lambda traffic shifting)
PurposeDetect outages and regressions proactivelyRelease new code with limited blast radius
Example nameA canary that loads /health every minuteCanary10Percent5Minutes
Exam signal”test the endpoint on a schedule,” “detect an outage before customers""shift 10% of traffic, then the rest,” “validate a release in production”

Both borrow the “canary in a coal mine” metaphor — an early warning — but they solve different problems. If a scenario is about detecting whether something is up, it’s Synthetics. If it’s about releasing a new version safely, it’s a canary deployment, which the DOP-C02 deployment strategies guide covers. Keep the two in separate mental boxes and a whole class of trick questions becomes easy.

CloudWatch Synthetics: Canaries That Test Like a User

A canary is a configurable script that runs on a schedule and exercises your application exactly the way a customer would — loading a URL, calling an API, or clicking through a multi-step workflow — from the outside. Under the hood each canary runs as a managed AWS Lambda function using a Synthetics runtime (Node.js with Puppeteer, or Python with Selenium), so you get real browser or HTTP behavior, not just a TCP ping.

Every run produces rich, debuggable artifacts and metrics:

  • CloudWatch metrics in the CloudWatchSynthetics namespace — SuccessPercent, Duration, Failed, and HTTP status counts (2xx, 4xx, 5xx). You build alarms on these.
  • Artifacts in Amazon S3 — screenshots, HTTP Archive (HAR) files, and logs for every run, so when a canary fails you can see exactly what the “user” saw.
  • CloudWatch Logs for the script’s own output.

The blueprints you should recognize

You rarely write a canary from scratch on the job — the console ships blueprints that generate the script for you. Knowing what each one is for is enough for the exam:

BlueprintWhat it monitors
Heartbeat monitoringLoads a single URL and verifies it returns successfully and (optionally) renders — the classic “is the site up?” check
API canaryIssues a sequence of REST API calls with headers/body and validates responses and status codes
Broken link checkerCrawls a page and reports links that 404
GUI workflow builder / Canary RecorderMulti-step browser flows — log in, add to cart, check out — recorded as a script
Visual monitoringCaptures a screenshot each run and compares it to a baseline, catching visual/layout regressions

Scheduling and reaching private endpoints

A canary runs on a rate or cron schedule — as often as once a minute — or as a one-off. To monitor a private endpoint (an internal ALB, a service with no public DNS), you configure the canary to run inside your VPC, and it reaches the target over private networking just like your own workloads.

Turning a failing canary into action

A canary on its own only observes. To make it respond, alarm on its metrics and wire the alarm into your existing remediation path:

Synthetics canary (every 1 min)
        │  publishes SuccessPercent, Duration, 4xx/5xx
        ▼
CloudWatch alarm  (SuccessPercent < 100 for 2 datapoints)
        │  ALARM
        ▼
Amazon SNS ──► on-call notification
        └────► Lambda / SSM Automation runbook (auto-remediation)

That alarm-to-remediation pattern is the same one the incident response and auto-remediation guide develops for reactive alarms — the only difference is that the signal source is a proactive synthetic test rather than a real-traffic metric. A common exam scenario: “a critical login endpoint must be tested continuously, and the on-call engineer paged the moment it breaks, even at 3 a.m. with no live traffic.” The answer is a Synthetics canary + CloudWatch alarm + SNS, not a metric alarm on request latency (which needs live traffic to mean anything).

A minimal canary schedule, in CloudFormation terms

You don’t need to memorize the full resource, but recognize its shape — a canary bundles the script (from S3 or inline), a runtime version, a schedule, and an artifact bucket:

Type: AWS::Synthetics::Canary
Properties:
  Name: checkout-heartbeat
  RuntimeVersion: syn-nodejs-puppeteer-9.0
  ArtifactS3Location: s3://my-canary-artifacts/checkout/
  ExecutionRoleArn: !GetAtt CanaryRole.Arn
  Schedule:
    Expression: "rate(1 minute)"
  RunConfig:
    TimeoutInSeconds: 60
  StartCanaryAfterCreation: true
  Code:
    Handler: pageLoadBlueprint.handler
    S3Bucket: my-canary-scripts
    S3Key: checkout-heartbeat.zip

CloudWatch RUM: What Real Users Actually Experience

Synthetics tells you whether an endpoint responds to a simulated user from AWS infrastructure. It cannot tell you that customers on a specific mobile browser in a particular region are seeing slow page loads. That’s real-user monitoring (RUM).

CloudWatch RUM collects client-side telemetry from actual browsers. You create an app monitor, embed the generated RUM web client (a JavaScript snippet) in your web application, and it streams back:

  • Performance — page load times and Core Web Vitals (LCP, INP, CLS)
  • Errors — JavaScript errors and failed requests as real users hit them
  • Sessions and journeys — how users move through the app
  • Client breakdowns — by browser, device, OS, and geography

RUM data is viewable in the console and can be surfaced as CloudWatch metrics for alarming. Critically, RUM can integrate with AWS X-Ray, linking a slow or failed browser session to the backend trace behind it — end-to-end visibility from the user’s click through every service. (The RUM web client authenticates via a Cognito identity pool so unauthenticated browsers can send data without exposing credentials.)

Synthetics vs RUM: pick the right lens

They are complements, not substitutes, and the exam tests the distinction directly:

CloudWatch SyntheticsCloudWatch RUM
Data sourceSimulated users (scripts from AWS)Real users (their browsers)
Runs whenOn a schedule, 24/7, even with zero trafficOnly when real users are active
Great atDetecting outages proactively, uptime SLAs, testing critical paths before customersUnderstanding real experience, per-browser/geo issues, Core Web Vitals
Blind spotCan’t see problems only real users/devices hitCan’t detect an outage when no one is online to trigger it
Exam signal”detect before customers,” “scheduled endpoint test""measure actual user experience,” “which browsers are slow”

The strongest operational answer often uses both: canaries guarantee you learn about an outage first, and RUM explains what real users are living through the rest of the time.

A Note on Feature Flags and Experiments

You may see older material pair Synthetics and RUM with CloudWatch Evidently for feature flags and A/B experiments. Be aware that Evidently reached end of support (October 2025), and AWS now directs feature-flag and progressive-rollout use cases to AWS AppConfig feature flags. For the exam, understand the concept — evaluating a feature per-user at the application layer, and rolling it out gradually — but map it to AppConfig rather than Evidently, and don’t confuse an application-layer feature flag (who sees a feature) with a CodeDeploy canary deployment (which infrastructure gets traffic).

Exam Decision Table

ScenarioAnswer
Detect an outage before customers report itSynthetics canary + alarm + SNS
Continuously test a login/checkout workflow on a scheduleSynthetics GUI workflow canary
Monitor a private internal endpoint proactivelySynthetics canary configured to run in the VPC
Catch visual/layout regressions on a pageSynthetics visual monitoring blueprint
Understand real-user page load times by browser/regionCloudWatch RUM
Link a slow browser session to its backend traceRUM + X-Ray
Shift 10% of production traffic to a new version, then the restCodeDeploy canary deployment (not Synthetics)
Gradually expose a new feature to a % of users at the app layerAWS AppConfig feature flags

Common DOP-C02 Traps

  • Confusing a Synthetics canary with a canary deployment. Monitoring vs release — different services, different purpose.
  • Reaching for a metric alarm when there’s no traffic. A latency/error alarm needs live requests to be meaningful; a canary works at 3 a.m. with zero users.
  • Assuming RUM detects outages. RUM only sees what real users generate; if everyone’s asleep, it’s silent. Use Synthetics for uptime.
  • Forgetting canaries can run in a VPC. Private endpoints are monitorable — you don’t need to make them public.
  • Treating a canary as self-healing. A canary detects; you still need an alarm plus an action (SNS, Lambda, or an SSM Automation runbook) to remediate.
  • Citing Evidently as a current service. It’s end-of-support — map feature flags to AppConfig.

How to Practice This Topic

Reading the difference between Synthetics and RUM is easy; recalling the right one under exam pressure, inside a dense scenario stem, is the actual skill. Build a heartbeat canary against any public URL, add an API canary with a status-code check, wire a CloudWatch alarm on SuccessPercent, and watch the artifacts land in S3 when you deliberately break the target. Then read a batch of scenario questions and force yourself to name the service and the trap in one line before looking at the options.

Timed, scenario-driven questions are the fastest way to get there. Sailor.sh’s AWS Certified DevOps Engineer – Professional (DOP-C02) Mock Exam Bundle is built around exactly the “which service, which pattern” scenarios the real exam uses, with detailed explanations that reinforce distinctions like canary-monitoring versus canary-deployment so they stick. Use this article to learn the mechanics; use full-length practice to make the recognition automatic. For the complete domain map and logistics, start with the DOP-C02 exam guide for 2026.

Frequently Asked Questions

What is a CloudWatch Synthetics canary?

A canary is a configurable script that runs on a schedule (as a managed Lambda function) to test an endpoint, API, or user workflow from the outside — like a simulated user. It publishes CloudWatch metrics such as SuccessPercent and Duration and stores screenshots, HAR files, and logs in S3 for debugging.

How is a Synthetics canary different from a canary deployment?

They’re unrelated despite the shared word. A Synthetics canary is a monitoring probe (CloudWatch Synthetics) that tests whether something works. A canary deployment is a release strategy (CodeDeploy) that shifts a small percentage of traffic to a new version before the rest. Monitoring versus releasing.

When should I use Synthetics instead of a CloudWatch metric alarm?

Use Synthetics when you need to detect problems proactively, independent of live traffic — testing a critical endpoint on a schedule, catching outages at times of low or zero usage, or validating a full user journey. A metric alarm is reactive and needs real requests to be meaningful.

Can a canary monitor a private endpoint that isn’t on the internet?

Yes. Configure the canary to run inside your VPC and it can reach internal ALBs and private services over private networking, just like your own workloads.

What does CloudWatch RUM add over Synthetics?

RUM captures real user experience from actual browsers — page load times, Core Web Vitals, JavaScript errors, and breakdowns by browser, device, and geography — and can link sessions to backend traces via X-Ray. Synthetics simulates users on a schedule; RUM observes the real ones. Most mature setups use both.

Is CloudWatch Evidently still the answer for feature flags?

No. Evidently reached end of support in October 2025. For feature flags and progressive feature rollouts, use AWS AppConfig feature flags. Know the concept for the exam, but map it to AppConfig.

Key Takeaways

  • Proactive beats reactive for detecting outages: Synthetics canaries test on a schedule, even with zero live traffic, so you learn about a break before customers do.
  • A Synthetics canary (monitoring) is not a canary deployment (CodeDeploy release) — the shared word is the trap.
  • Canaries run as managed Lambda, publish SuccessPercent/Duration/status metrics, store screenshots and HAR files in S3, can run in a VPC, and only respond when paired with an alarm + SNS/remediation.
  • RUM measures real-user experience (Core Web Vitals, JS errors, per-browser/geo) and links to X-Ray; Synthetics and RUM are complements.
  • Feature flags and experiments now map to AWS AppConfig — Evidently is end-of-support.

Limited Time Offer: Get 80% off all Mock Exam Bundles | Sale ends in 7 days. Start learning today.

Claim Now