Skip to content

Commit 421584f

Browse files
authored
Merge pull request #4065 from nhsuk/enhanced_db_monitoring
Enhanced DB monitoring
2 parents d90e111 + de30bb1 commit 421584f

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

terraform/app/env/production.tfvars

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ minimum_web_replicas = 2
3030
maximum_web_replicas = 4
3131
container_insights = "enhanced"
3232

33-
enable_backup_to_vault = true
33+
enable_backup_to_vault = true
34+
enable_enhanced_db_monitoring = true

terraform/app/env/qa.tfvars

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@ minimum_web_replicas = 2
2626
maximum_web_replicas = 4
2727
container_insights = "enhanced"
2828

29-
enable_backup_to_vault = true
29+
enable_backup_to_vault = true
30+
enable_enhanced_db_monitoring = true

terraform/app/rds.tf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ resource "aws_rds_cluster" "core" {
5353
preferred_backup_window = "01:00-01:30"
5454
preferred_maintenance_window = "sun:02:30-sun:03:00"
5555
db_cluster_parameter_group_name = "default.aurora-postgresql16"
56+
monitoring_interval = var.enable_enhanced_db_monitoring ? 30 : 0
57+
monitoring_role_arn = var.enable_enhanced_db_monitoring ? aws_iam_role.enhanced_db_monitoring[0].arn : null
58+
enabled_cloudwatch_logs_exports = ["postgresql", "instance"]
5659

5760
serverlessv2_scaling_configuration {
5861
max_capacity = var.max_aurora_capacity_units
@@ -83,4 +86,20 @@ resource "aws_rds_cluster_instance" "core" {
8386
engine_version = aws_rds_cluster.core.engine_version
8487
db_subnet_group_name = aws_db_subnet_group.core.name
8588
promotion_tier = each.value["promotion_tier"]
89+
monitoring_interval = var.enable_enhanced_db_monitoring ? 30 : 0
90+
monitoring_role_arn = var.enable_enhanced_db_monitoring ? aws_iam_role.enhanced_db_monitoring[0].arn : null
91+
}
92+
93+
resource "aws_iam_role" "enhanced_db_monitoring" {
94+
count = var.enable_enhanced_db_monitoring ? 1 : 0
95+
name = "enhanced-db-monitoring-role-${var.environment}"
96+
assume_role_policy = templatefile(
97+
"../app/templates/iam_assume_role.json.tpl",
98+
{ service_name = "monitoring.rds.amazonaws.com" })
99+
}
100+
101+
resource "aws_iam_role_policy_attachment" "enhanced_db_monitoring_policy" {
102+
count = var.enable_enhanced_db_monitoring ? 1 : 0
103+
role = aws_iam_role.enhanced_db_monitoring[0].name
104+
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole"
86105
}

terraform/app/variables.tf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,13 @@ variable "enable_splunk" {
175175
nullable = false
176176
}
177177

178+
variable "enable_enhanced_db_monitoring" {
179+
type = bool
180+
default = false
181+
description = "Boolean toggle to determine whether enhanced DB monitoring should be enabled."
182+
nullable = false
183+
}
184+
178185
variable "app_version" {
179186
type = string
180187
description = "The version identifier for the MAVIS application deployment"

0 commit comments

Comments
 (0)