Bird
Raised Fist0
AWScloud~30 mins

CloudWatch dashboards in AWS - Mini Project: Build & Apply

Choose your learning style10 modes available
Create a Simple AWS CloudWatch Dashboard
📖 Scenario: You are a cloud engineer setting up monitoring for a web application hosted on AWS. You want to create a CloudWatch dashboard to visualize key metrics like CPU utilization and network traffic.
🎯 Goal: Build a CloudWatch dashboard JSON configuration that shows two widgets: one for CPU utilization and one for network in/out for an EC2 instance.
📋 What You'll Learn
Create a dashboard body JSON structure with widgets array
Add a widget for CPUUtilization metric from EC2 namespace
Add a widget for NetworkIn and NetworkOut metrics from EC2 namespace
Use correct metric dimensions with InstanceId
Use valid JSON structure deployable to AWS CloudWatch
💡 Why This Matters
🌍 Real World
CloudWatch dashboards help visualize and monitor AWS resource metrics in one place, making it easier to spot issues and optimize performance.
💼 Career
Cloud engineers and DevOps professionals often create and maintain dashboards to ensure system health and respond quickly to alerts.
Progress0 / 4 steps
1
Create the initial dashboard JSON structure
Create a variable called dashboard_body and assign it a JSON string with an empty widgets array: {"widgets": []}.
AWS
Hint

Use single quotes outside and double quotes inside for the JSON string.

2
Add a CPU Utilization widget configuration
Add a variable called cpu_widget and assign it a JSON object string representing a CloudWatch metric widget for CPUUtilization metric in the AWS/EC2 namespace with dimension InstanceId set to i-1234567890abcdef0. The widget should have a width of 6 and height of 6.
AWS
Hint

Follow AWS CloudWatch metric widget JSON format with properties including metrics array.

3
Add a Network In/Out widget configuration
Add a variable called network_widget and assign it a JSON object string representing a CloudWatch metric widget for NetworkIn and NetworkOut metrics in the AWS/EC2 namespace with dimension InstanceId set to i-1234567890abcdef0. The widget should have a width of 6 and height of 6.
AWS
Hint

Include both NetworkIn and NetworkOut metrics in the metrics array.

4
Combine widgets into the dashboard body
Update the dashboard_body variable to include the cpu_widget and network_widget JSON objects inside the widgets array. Use Python's json module to parse and combine the JSON strings properly.
AWS
Hint

Use json.loads() to convert strings to objects, append widgets, then json.dumps() to convert back to string.

Practice

(1/5)
1. What is the main purpose of an AWS CloudWatch dashboard?
easy
A. To deploy new cloud servers automatically
B. To store backups of cloud data
C. To visually display cloud resource metrics in one place
D. To manage user permissions for AWS services

Solution

  1. Step 1: Understand CloudWatch dashboard function

    CloudWatch dashboards collect and show metrics visually for easy monitoring.
  2. Step 2: Compare options with dashboard purpose

    Only To visually display cloud resource metrics in one place describes visual display of metrics; others describe unrelated tasks.
  3. Final Answer:

    To visually display cloud resource metrics in one place -> Option C
  4. Quick Check:

    Dashboard = Visual metrics display [OK]
Hint: Dashboards show metrics visually, not manage or store data [OK]
Common Mistakes:
  • Confusing dashboards with backup storage
  • Thinking dashboards manage permissions
  • Assuming dashboards deploy servers
2. Which JSON element is required to add a widget to a CloudWatch dashboard?
easy
A. "widgets" array containing widget objects
B. "servers" array listing EC2 instances
C. "permissions" object defining access rights
D. "backups" array for snapshot data

Solution

  1. Step 1: Identify JSON structure for dashboards

    CloudWatch dashboards use a "widgets" array to hold widget definitions.
  2. Step 2: Eliminate unrelated JSON elements

    Options A, B, and D relate to servers, permissions, or backups, not widgets.
  3. Final Answer:

    "widgets" array containing widget objects -> Option A
  4. Quick Check:

    Widgets array = dashboard widgets [OK]
Hint: Widgets array holds dashboard widgets in JSON [OK]
Common Mistakes:
  • Using 'servers' instead of 'widgets'
  • Confusing permissions with widget data
  • Including backups in dashboard JSON
3. Given this widget JSON snippet for a CloudWatch dashboard:
{"type": "metric", "x": 0, "y": 0, "width": 6, "height": 6, "properties": {"metrics": [["AWS/EC2", "CPUUtilization", "InstanceId", "i-1234567890abcdef0"]], "period": 300, "stat": "Average"}}

What metric will this widget display?
medium
A. Total network traffic of all EC2 instances
B. Average CPU utilization of the specified EC2 instance
C. Disk read operations for the specified EC2 instance
D. Memory usage of the specified EC2 instance

Solution

  1. Step 1: Analyze the metric details in JSON

    The metric is "CPUUtilization" for AWS/EC2 with a specific InstanceId, using average statistic.
  2. Step 2: Match metric to options

    Average CPU utilization of the specified EC2 instance matches CPU utilization average; others mention different metrics not in JSON.
  3. Final Answer:

    Average CPU utilization of the specified EC2 instance -> Option B
  4. Quick Check:

    Metric name = CPUUtilization [OK]
Hint: Look for metric name and stat in properties.metrics [OK]
Common Mistakes:
  • Confusing CPU with network or disk metrics
  • Ignoring the InstanceId filter
  • Assuming memory metric without it specified
4. You uploaded a CloudWatch dashboard JSON but the widgets do not appear. Which is the most likely error?
medium
A. The JSON is missing the required "widgets" array
B. The EC2 instances are stopped
C. The AWS region is incorrect in the AWS CLI configuration
D. The IAM user lacks S3 bucket permissions

Solution

  1. Step 1: Identify JSON structure requirement

    CloudWatch dashboards require a "widgets" array; missing it means no widgets show.
  2. Step 2: Evaluate other options for widget display

    Stopped EC2 or region mismatch may affect metrics but not widget display; S3 permissions unrelated.
  3. Final Answer:

    The JSON is missing the required "widgets" array -> Option A
  4. Quick Check:

    Missing widgets array = no widgets shown [OK]
Hint: Always check for 'widgets' array in dashboard JSON [OK]
Common Mistakes:
  • Blaming stopped instances for widget display
  • Confusing region config with dashboard JSON
  • Assuming S3 permissions affect dashboards
5. You want a CloudWatch dashboard to show CPU utilization for multiple EC2 instances side by side. Which JSON widget configuration approach is best?
hard
A. Add a text widget listing instance IDs
B. Create multiple dashboards, one per instance
C. Use a single metric widget without specifying InstanceId
D. Create one widget with multiple metrics, each metric for one instance

Solution

  1. Step 1: Understand dashboard widget capabilities

    A single widget can show multiple metrics side by side by listing each instance's CPU metric.
  2. Step 2: Evaluate other options for efficiency and clarity

    Multiple dashboards (B) is inefficient; single metric without InstanceId (C) aggregates all instances; text widget (D) does not show metrics.
  3. Final Answer:

    Create one widget with multiple metrics, each metric for one instance -> Option D
  4. Quick Check:

    Multiple metrics in one widget = side-by-side display [OK]
Hint: Use multiple metrics in one widget for side-by-side comparison [OK]
Common Mistakes:
  • Creating separate dashboards wastes effort
  • Omitting InstanceId shows combined data, not per instance
  • Using text widgets instead of metric widgets
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard