<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Youss El</title>
    <description>The latest articles on DEV Community by Youss El (@getnivaro).</description>
    <link>https://dev.to/getnivaro</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4225668%2Fd9e98b70-ee06-4280-8f72-2bca5570a6d6.png</url>
      <title>DEV Community: Youss El</title>
      <link>https://dev.to/getnivaro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/getnivaro"/>
    <language>en</language>
    <item>
      <title>SOA-C03 CloudWatch alarms: the missing-data setting that decides whether you get paged</title>
      <dc:creator>Youss El</dc:creator>
      <pubDate>Wed, 04 Nov 2026 07:53:14 +0000</pubDate>
      <link>https://dev.to/getnivaro/soa-c03-cloudwatch-alarms-the-missing-data-setting-that-decides-whether-you-get-paged-467m</link>
      <guid>https://dev.to/getnivaro/soa-c03-cloudwatch-alarms-the-missing-data-setting-that-decides-whether-you-get-paged-467m</guid>
      <description>&lt;p&gt;"An alarm on a metric that only reports data when something goes wrong never leaves the INSUFFICIENT_DATA state. How do you fix it?"&lt;/p&gt;

&lt;p&gt;Monitoring is a core part of the AWS Certified CloudOps Engineer – Associate exam (SOA-C03, the renamed SysOps Administrator Associate). It's 65 questions in 130 minutes, according to the &lt;a href="https://aws.amazon.com/certification/certified-cloudops-engineer-associate/" rel="noopener noreferrer"&gt;official exam page&lt;/a&gt;, and CloudWatch alarm behavior is the kind of detail operations questions are built around. Here's the part that trips people up most: what an alarm does when data is &lt;em&gt;missing&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three states
&lt;/h2&gt;

&lt;p&gt;A metric alarm is always in one of these states (&lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/alarm-evaluation.html" rel="noopener noreferrer"&gt;alarm evaluation docs&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;OK&lt;/code&gt;: the metric is within the threshold.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ALARM&lt;/code&gt;: the metric is outside the threshold.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;INSUFFICIENT_DATA&lt;/code&gt;: the alarm has just started, the metric isn't available, or there isn't enough data to decide.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An alarm only invokes its actions when it &lt;em&gt;changes state&lt;/em&gt; (the exception is Auto Scaling actions, which repeat once per minute while the alarm stays in the new state).&lt;/p&gt;

&lt;h2&gt;
  
  
  Three settings that control evaluation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Period&lt;/strong&gt;: how long each data point covers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation Periods (N)&lt;/strong&gt;: how many of the most recent data points are looked at.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Datapoints to Alarm (M)&lt;/strong&gt;: how many of those must be breaching. They don't have to be consecutive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If M and N differ, you have an "M out of N" alarm. For example, 4 out of 5 with a 1-minute period has an evaluation interval of 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat missing data: four options
&lt;/h2&gt;

&lt;p&gt;Not every data point always arrives: a connection drops, a server goes down, or a metric reports only when something happens. For each alarm you choose how to treat those gaps (&lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/alarms-and-missing-data.html" rel="noopener noreferrer"&gt;missing data docs&lt;/a&gt;):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Missing data points are treated as...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notBreaching&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Good, within the threshold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;breaching&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bad, violating the threshold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ignore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Nothing: the current alarm state is kept&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;missing&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing: if &lt;em&gt;all&lt;/em&gt; data points in the range are missing, the alarm goes to &lt;code&gt;INSUFFICIENT_DATA&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The default is &lt;code&gt;missing&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When does each make sense? AWS gives two examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A rollback alarm on a metric that &lt;em&gt;continually&lt;/em&gt; reports data: missing data probably means something is wrong, so use &lt;code&gt;breaching&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A metric that only produces data when an error occurs, such as &lt;code&gt;ThrottledRequests&lt;/code&gt; in DynamoDB: no data means no errors, so use &lt;code&gt;notBreaching&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two more details worth knowing: alarms on &lt;code&gt;AWS/DynamoDB&lt;/code&gt; metrics default to &lt;code&gt;ignore&lt;/code&gt;, and for EC2 alarms that stop, terminate, reboot or recover an instance, AWS recommends treating missing data as &lt;code&gt;missing&lt;/code&gt; and triggering the action only from the &lt;code&gt;ALARM&lt;/code&gt; state, because EC2 metrics can briefly go missing even for a healthy instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the alarm does with all-missing data
&lt;/h2&gt;

&lt;p&gt;Say Datapoints to Alarm and Evaluation Periods are both 3, and the five most recent data points are all missing. The result depends only on the setting:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Resulting state&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;missing&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;INSUFFICIENT_DATA&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ignore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Keeps the current state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;breaching&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ALARM&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notBreaching&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;OK&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If at least as many real data points exist as Evaluation Periods, CloudWatch just evaluates those real points and the missing-data setting isn't used at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trap: alarm noise and composite alarms
&lt;/h2&gt;

&lt;p&gt;Too many alarms paging you for the same incident? A &lt;strong&gt;composite alarm&lt;/strong&gt; combines the states of other alarms with a rule expression, so you can alert only on the composite. Composite alarms can send SNS notifications and create investigations, Systems Manager OpsItems or incidents, but they can't perform EC2 or Auto Scaling actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trap: the alarm that never fires fast enough
&lt;/h2&gt;

&lt;p&gt;The evaluation window is Period × Evaluation Periods. For periods of one minute or longer, the alarm is evaluated every minute. An alarm with a very long evaluation window reacts slowly: if the window exceeds one day, it's only evaluated once per hour. If a question asks why a daily-job alarm took an hour to react, that's the reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  A sample question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;An application publishes a custom metric &lt;code&gt;FailedPayments&lt;/code&gt; only when a payment fails. A CloudWatch alarm on it stays in INSUFFICIENT_DATA for days, and the on-call team can't tell whether things are healthy. What should the CloudOps engineer do?&lt;/p&gt;

&lt;p&gt;A. Increase the alarm period to 24 hours.&lt;br&gt;
B. Set the alarm to treat missing data as &lt;code&gt;notBreaching&lt;/code&gt;.&lt;br&gt;
C. Set the alarm to treat missing data as &lt;code&gt;breaching&lt;/code&gt;.&lt;br&gt;
D. Replace the alarm with a composite alarm.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Answer: B.&lt;/strong&gt; The metric only exists when failures happen, so a gap means "no failures". &lt;code&gt;notBreaching&lt;/code&gt; keeps the alarm in &lt;code&gt;OK&lt;/code&gt; during those gaps. &lt;code&gt;breaching&lt;/code&gt; would page the team whenever payments are healthy. A longer period doesn't change how gaps are treated, and a composite alarm just combines other alarms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist before exam day
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Three states: &lt;code&gt;OK&lt;/code&gt;, &lt;code&gt;ALARM&lt;/code&gt;, &lt;code&gt;INSUFFICIENT_DATA&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Know Period, Evaluation Periods and Datapoints to Alarm, and what "M out of N" means.&lt;/li&gt;
&lt;li&gt;Four missing-data options, and the default is &lt;code&gt;missing&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Metric only reports on errors → &lt;code&gt;notBreaching&lt;/code&gt;. Metric should always report → &lt;code&gt;breaching&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Actions fire on state changes, not on every evaluation.&lt;/li&gt;
&lt;li&gt;Composite alarms reduce noise but can't run EC2 or Auto Scaling actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good luck with SOA-C03.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I wrote 2 SOA-C03 practice exams (130 scenario questions with an explanation for every option). $34.99 until Dec 4: &lt;a href="https://www.udemy.com/course/aws-cloudops-engineer-associate-soa-c03-2-practice-exams/?couponCode=SOAC03LAUNCH" rel="noopener noreferrer"&gt;https://www.udemy.com/course/aws-cloudops-engineer-associate-soa-c03-2-practice-exams/?couponCode=SOAC03LAUNCH&lt;/a&gt;. Not affiliated with or endorsed by AWS.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudwatch</category>
      <category>certification</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
