Terraform Datadog Belgie (RDS Dashboard) Module
Overview
This Terraform module creates an AWS RDS database monitoring dashboard in Datadog with comprehensive metrics for performance, storage, connections, and replication lag. Designed specifically for Belgian/EU deployments with pre-configured alert recipients and monitoring thresholds.
Features
- Comprehensive RDS Metrics: CPU, memory, connections, storage, disk queue, latency
- Dynamic Dashboard: 25+ preconfigured widgets with automatic metric visualization
- Flexible Alerting: Configurable alert recipients for different severity levels
- CloudWatch Integration: Leverages AWS RDS CloudWatch metrics
- Customizable Monitors: Map-based monitor configuration for easy customization
Resources Created
datadog_dashboard: RDS Database Dashboard with 25+ widgets including:- Query value widgets for read/write latency and IOPS
- Timeseries for replication lag, connections, CPU, memory, disk metrics
- Toplist widgets for metric ranking
- Note widgets for dashboard organization
Dashboard Widgets
The dashboard includes comprehensive monitoring for:
- Read/Write Latency (query value widgets)
- Replication Lag (timeseries)
- Database Connections (timeseries)
- CPU Utilization (timeseries + toplist)
- Read/Write Operations (timeseries)
- Freeable Memory (timeseries + toplist)
- Disk Queue Depth (timeseries)
- Free Storage Space (timeseries + toplist)
Requirements
| Name | Version |
|---|---|
| terraform | >= 0.12 |
| datadog | >= 3.1.2 |
| aws | >= 2.0 |
Usage
module "rds_dashboard" {
source = "./terraform-datadog-belgie"
region = "eu-west-1"
api_key = var.datadog_api_key
app_key = var.datadog_app_key
datadog_site = "https://api.datadoghq.eu/"
aws_profile = "production"
cfa_slug = "my-cfa"
team = "platform-team"
application = "myapp"
stage = "prd"
alert_recipients = ["team@example.com"]
recipients = ["team@example.com"]
warning_recipients = ["team@example.com"]
dd_rds_monitors = {
cpu = {
enabled = true
warning = 75
critical = 90
name = "RDS CPU High"
}
# ... additional monitors
}
}
Inputs
| Name | Description | Type | Required | Default |
|---|---|---|---|---|
region |
AWS region for resources | string |
yes | - |
api_key |
Datadog API key | string |
yes | - |
app_key |
Datadog APP key | string |
yes | - |
datadog_site |
Datadog site (EU or US) | string |
no | "https://api.datadoghq.eu/" |
aws_profile |
AWS account this integration belongs to | string |
yes | - |
cfa_slug |
CFA this integration belongs to | string |
yes | - |
team |
Team this integration belongs to | string |
yes | - |
application |
Application name | string |
yes | - |
stage |
Stage (dev, tst, acc, prd) | string |
yes | - |
alert_recipients |
Alert notification recipients | list(string) |
no | ["patrick.de.ruiter@sanoma.com"] |
recipients |
General notification recipients | list(string) |
no | ["patrick.de.ruiter@sanoma.com"] |
warning_recipients |
Warning notification recipients | list(string) |
no | ["patrick.de.ruiter@sanoma.com"] |
dd_rds_monitors |
RDS monitor configuration map | map(any) |
no | See variables.tf |
RDS Monitors Configuration
The dd_rds_monitors variable accepts a map with the following monitor types:
cpu: CPU utilization monitoringmemory: Freeable memory monitoringconnections: Database connections monitoringstorage: Free storage space monitoringdisk_queue: Disk queue depth monitoringread_latency: Read latency monitoringwrite_latency: Write latency monitoringreplication_lag: Replication lag monitoring
Each monitor can be configured with:
{
enabled = bool # Enable/disable the monitor
warning = number # Warning threshold
critical = number # Critical threshold
name = string # Monitor name
}
Outputs
Currently, this module does not export any outputs (outputs are commented out).
Local Values
The module uses several local values for dynamic configuration:
dbidentifier: Formatted as{application}-{stage}rdsgraphs: Map of 8 RDS metric queriesfull_message: Constructed alert message with linkstags: Standard tags (team, stage, application)
RDS Metrics Monitored
| Metric | CloudWatch Metric Name | Description |
|---|---|---|
| CPU | aws.rds.cpuutilization |
CPU utilization percentage |
| Memory | aws.rds.freeable_memory |
Freeable memory in bytes |
| Connections | aws.rds.database_connections |
Number of database connections |
| Storage | aws.rds.free_storage_space |
Free storage space in bytes |
| Read Latency | aws.rds.read_latency |
Read operation latency |
| Write Latency | aws.rds.write_latency |
Write operation latency |
| Disk Queue | aws.rds.disk_queue_depth |
Disk queue depth |
| Replication Lag | aws.rds.replica_lag |
Replication lag in seconds |
Dashboard Layout
- Layout Type: Free layout (allows custom positioning)
- Read-Only: No (allows modifications in UI)
- Widget Organization: Sections with note widgets as headers
- Conditional Formatting: Metric values color-coded based on thresholds
Tagging Strategy
All resources are tagged with:
team:{team}stage:{stage}application:{application}
Notes
- Default Datadog site is EU (GDPR compliance)
- Dashboard uses free layout for flexible widget positioning
- Metrics are sourced from AWS RDS CloudWatch integration
- Database identifier is auto-generated from application and stage variables
- Alert messages include links to related monitors
License
Internal use only - Sanoma/WeBuildYourCloud
Authors
Created and maintained by the Platform Engineering team.
Description
Terraform module for creating AWS RDS monitoring dashboards in Datadog with comprehensive metrics for performance, storage, connections, and replication
Languages
HCL
100%