Integration
Streamwake + Amazon CloudWatch

Streamwake + Amazon CloudWatch.
Don't replace Amazon CloudWatch — we pull its metrics and logs as incident evidence, correlate against viewer impact, and emit the remediation back as a CloudWatch metric.

Don't replace Amazon CloudWatch — we pull its metrics and logs as evidence during incident investigation (AWS/MediaLive ActiveAlerts, CloudWatch Logs FilterLogEvents on the channel-events log group, plus the AWS MediaLive + Amazon CloudFront pair the +AWS MediaLive + +CloudFront pages already name), correlate against viewer-impact signals on the same bus, and emit the recommended remediation back as a `streamwake.cloudwatch.remediation.applied` metric on the same CloudWatch account. Same dashboard panel, same alert policy, same AWS-native surface — bi-directional end to end.

Amazon CloudWatch aws-native metrics + logs — getmetricdata + filterlogevents + sts assumerole. Streamwake doesn't replace Amazon CloudWatch— we correlate its signals and drive remediation on the anomalies it already surfaces.

Where each layer sits

What Amazon CloudWatch owns. What Streamwake runs on top.

Honest framing of the surface the vendor owns and the surface Streamwake runs on top of it. Both layers run together in production — same signal bus, different obligations.

What Amazon CloudWatch owns

Metrics + Logs + Alarms + Dashboards

The CloudWatch metrics namespace + stat-stream bus the AWS stack already writes into (AWS/MediaLive, AWS/MediaPackage, AWS/CloudFront, AWS/Lambda, custom metrics), the CloudWatch Logs log groups CloudWatch surfaces as first-class signals, the per-metric Alarm authoring + multi-alarm grouping + SNS notification tree, and the per-account Dashboards the operator renders. CloudWatch owns the fan-in; Streamwake pulls it on top of an incident.

Cross-service signal + STS AssumeRole

The AWS cross-service signals that sit on the same account (CloudFront + MediaLive + MediaPackage + Lambda) plus the STS:AssumeRole API that converts a long-lived credential pair into short-lived credentials for cross-account pulls. CloudWatch owns the AWS-side boundary; Streamwake reads it through a single SigV4 + IAM role posture so the operator never has to ship static keys into the loop.
What Streamwake runs on top

Detect → Classify → Pull evidence + bi-directional sync

The autonomous loop on top of the CloudWatch signal bus — every AWS/MediaLive ActiveAlerts drift, CloudWatch Logs FilterLogEvents skew, CloudFront cache-miss latency fan-out, and confidence-scored metric-vs-classification skew gets pulled as evidence rows for the active incident, gets ranked with a typed confidence (cloudwatch.<metric_or_log_event> → <classification_slug>), and is matched to the smallest safe remediation. The typed fix is emitted back as a `streamwake.cloudwatch.remediation.applied` metric on the same account so the same CloudWatch dashboard panel the agent read is the panel the agent updated.

CloudwatchCorrelationsPanel on the incident detail

A viewer-impact histogram + per-row CloudWatch evidence viewer mounted under the existing `HypothesisList` on /app/incidents/[id] — every captured metric series slice and FilterLogEvents match lands as a typed row alongside the ranked root-cause hypotheses, so the operator reads the AWS-side chart and the streaming-side chart in the same frame, and the postmortem carries both.
How it works

An incident closed
before your viewers notice.

Four steps from a Amazon CloudWatchanomaly to a closed incident with a typed postmortem. Read top to bottom — the loop is closed end to end.

  1. 1

    Save the CloudWatch source

    Per-user CloudwatchSource row holds the AWS region, the metric namespace + metric name (or log group + filter pattern), and the credentials posture — a static accessKeyId + secretAccessKey pair (the minimum IAM setup) OR an IAM roleArn the SigV4 helper assumes via sts:AssumeRole. The recommended posture is the role + no static secret on disk; the form accepts either.

  2. 2

    Pull evidence during an incident

    The CloudwatchCorrelationsPanel on /app/incidents/[id] calls `/api/v1/cloudwatch-evidence/collect` with the active incidentId; the route signs one GetMetricData call (or FilterLogEvents call) against `monitoring.<region>.amazonaws.com` (or `logs.<region>.amazonaws.com`) using the SigV4 helper, persists the matching CloudwatchEvidence row(s), and advances the source's lastVerifiedAt on 2xx.

  3. 3

    Correlate + streaming-classify

    The agent joins the captured CloudWatch evidence against the CDN, encoder, and DRM signals on the same bus, then ranks root cause with a typed confidence score (aws_medialive_active_alerts_vs_origin_classification vs cloudwatch_logs_filter_skew vs cloudfront_cache_miss_latency_fan_out_vs_classification vs cloudwatch_metric_vs_classification_skew) — so a CloudWatch-side signal is never collapsed with a streaming-side regression that started the same window into one symptom.

  4. 4

    Run the fix + emit back to CloudWatch

    The agent picks the smallest safe remediation — retune the AWS MediaLive encoder profile, retune the regional CloudFront PoP routing, re-anchor a CloudWatch Alarm threshold, re-issue a CloudWatch Logs FilterLogEvents filter, etc. — verifies recovery, AND emits the same remediation as `streamwake.cloudwatch.remediation.applied` on the same CloudWatch namespace so the same Dashboard panel the operator already renders re-renders the loop-closure metric the moment the fix lands.

What Streamwake catches

Four failure modes Amazon CloudWatch alerts alone miss.

Each one is something the Amazon CloudWatchsignal exposes but the agent loop names and acts on — so a chart becomes a closed incident rather than a triage queue.

aws medialive active alerts drift

Aws Medialive Active Alerts Drift

AWS/MediaLive ActiveAlerts climbs above the per-channel baseline while the same window shows no CloudFront-side cache-miss latency fan-out — the origin-side regression is loud, but a CloudWatch-only reader pins it to the encoder alone. Streamwake catches the ActiveAlerts drift on the same bus AND the matching AWS MediaLive encoder-profile drift on the origin side, joins it against the CloudFront-edge-state-vs-origin-state signals, and classifies it as `aws_medialive_active_alerts_vs_origin_classification` with the typed confidence pinned to the underlying MediaLive encoder-profile regression — never collapsed into the CloudFront-side chart.

cloudwatch logs filter skew

Cloudwatch Logs Filter Skew

A CloudWatch Logs FilterLogEvents filter that mis-matches the routing-discipline contract — e.g. it picks up `AWS-API-Error` events but ignores the matching `ChannelStateChange` events, or the filter pattern is left empty after an LCS re-publish — so the matching log groups return a stale view of the channel-state stream. CloudWatch shows the LHS chart; Streamwake catches the filter-vs-channel-state-skew on the same bus, surfaces the FilterLogEvents-vs-routing-contract hypothesis, and rewrites the filter to the next-routing-contract revision before the second wave of channel-state skew hits.

cloudfront cache miss latency fan out

Cloudfront Cache Miss Latency Fan Out

CloudFront `CacheMiss` latency p95 climbs on a regional edge PoP while the same window shows AWS/MediaLive channel-state noise on the origin — the viewer-side symptom looks CDN-side-only, but the same chart catches a paired AWS-side origin-shield miss. CloudWatch surfaces the per-region skew; Streamwake catches the CloudFront-side skew AND the AWS MediaLive channel-state-flip-vs-origin-shield-miss on the origin side, joins them as one typed classification, and routes the small safe remediation away from the affected PoP without collapsing the two charts into one symptom.

metric-vs-classification skew

Metric-vs-classification Skew

A CloudWatch metric (or Logs event) that the agent classifies with too low or too high a confidence — too high and the operator pages on a chart that has not yet broken; too low and the same chart trips a different CloudWatch Alarm the operator has silenced. CloudWatch reads the metric; Streamwake catches the metric-vs-real-skew on the same bus and re-anchors the confidence curve to the current metric-vs-classification burn-rate so the next metric lands in lockstep with the Alarm the operator already wired and the same CloudWatch dashboard panel re-renders the classification the moment the fix lands as `streamwake.cloudwatch.remediation.applied`.

See the loop run

Monitor your AWS CloudWatch pipeline free.
Next to Amazon CloudWatch.

Paste your MediaLive output URL or CloudFront playback URL — /stream-check runs the same five checks (manifest, segments, bitrate ladder, CDN response, playback errors) in under a minute. No login. Pair it with the Book-a-demo block below for a guided walkthrough of the AWS-side + CloudFront-side evidence correlation probe lane on your CloudWatch account.

Worked incident

AWS/MediaLive ActiveAlerts correlated against CDN cache-miss latency.

Primetime
Posted to the Incident Library

aws.medialive.active_alerts drifted to 14 vs 0 baseline on iad-cmh — paired against Amazon CloudFront cloudfront.cache_miss_latency_p95_ms at 2,184 ms vs 812 ms baseline.

The agent classified the joint AWS-side + CloudFront-side symptom as encoder_alert_active_with_cdn_cache_miss_latency_fan_out at 91% confidence, emitted a paired AWS MediaLive retune + a CloudFront PoP reroute, and emitted the remediation back as streamwake.cloudwatch.remediation.applied on the same CloudWatch namespace — so the same dashboard panel that flagged the ActiveAlerts drift re-renders the loop-closure metric the moment the fix lands.

Direct mapping to the Streamwake detect → classify → fix loop on the CloudWatch signal bus — the same AWS/MediaLive ActiveAlerts drift AND the matching CloudFront cache-miss latency fan-out the page pins to are the signals the CloudwatchCorrelationsPanel renders under the ranked hypothesis list on /app/incidents/[id], and the typed remediation lands back in CloudWatch as a new metric the operator can immediately re-scrape or alert on.

Read the full postmortem
Talk to engineering

Book a 20-minute walkthrough on your AWS CloudWatch account.

We're happy to walk through how the AWS/MediaLive ActiveAlerts drift, CloudFront cache-miss latency fan-out, CloudWatch Logs FilterLogEvents, and sts:AssumeRolecredential posture map onto your existing AWS account. Drop your details below and we'll follow up within 1 business day.