Skip to content

Commit 648d52c

Browse files
authored
Merge pull request #23 from stafot/fix/MM-36254
Add a cost allocation tag to postgres instances
2 parents 8c4f79c + 3794d67 commit 648d52c

File tree

2 files changed

+60
-53
lines changed

2 files changed

+60
-53
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77

88
coverage.out
99
.vscode
10+
.idea
1011
build/_output/

terraform/aws/modules/rds-aurora-postgresql/main.tf

Lines changed: 59 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
locals {
2-
master_password = var.password == "" ? random_password.master_password.result : var.password
3-
database_id = var.db_id == "" ? random_string.db_cluster_identifier.result : var.db_id
4-
max_connections = var.max_postgresql_connections == "auto" || var.max_postgresql_connections == "" ? var.max_postgresql_connections_map[var.instance_type] : var.max_postgresql_connections
2+
master_password = var.password == "" ? random_password.master_password.result : var.password
3+
database_id = var.db_id == "" ? random_string.db_cluster_identifier.result : var.db_id
4+
max_connections = var.max_postgresql_connections == "auto" || var.max_postgresql_connections == "" ? var.max_postgresql_connections_map[var.instance_type] : var.max_postgresql_connections
55
performance_insights_enabled = var.environment == "prod" ? var.performance_insights_enabled : false
66
}
77

@@ -73,22 +73,28 @@ resource "aws_rds_cluster" "provisioning_rds_cluster" {
7373
}
7474

7575
resource "aws_rds_cluster_instance" "provisioning_rds_db_instance" {
76-
count = var.replica_min
77-
identifier = format("rds-db-instance-multitenant-%s-%s-%s", split("-", var.vpc_id)[1], local.database_id, (count.index + 1))
78-
cluster_identifier = aws_rds_cluster.provisioning_rds_cluster.id
79-
engine = var.engine
80-
engine_version = var.engine_version
81-
instance_class = var.instance_type
82-
db_subnet_group_name = "mattermost-provisioner-db-${var.vpc_id}-postgresql"
83-
db_parameter_group_name = aws_db_parameter_group.db_parameter_group_postgresql.id
84-
preferred_maintenance_window = var.preferred_maintenance_window
85-
apply_immediately = var.apply_immediately
86-
monitoring_role_arn = data.aws_iam_role.enhanced_monitoring.arn
87-
monitoring_interval = var.monitoring_interval
88-
promotion_tier = count.index + 1
89-
performance_insights_enabled = local.performance_insights_enabled
76+
count = var.replica_min
77+
identifier = format("rds-db-instance-multitenant-%s-%s-%s", split("-", var.vpc_id)[1], local.database_id, (count.index + 1))
78+
cluster_identifier = aws_rds_cluster.provisioning_rds_cluster.id
79+
engine = var.engine
80+
engine_version = var.engine_version
81+
instance_class = var.instance_type
82+
db_subnet_group_name = "mattermost-provisioner-db-${var.vpc_id}-postgresql"
83+
db_parameter_group_name = aws_db_parameter_group.db_parameter_group_postgresql.id
84+
preferred_maintenance_window = var.preferred_maintenance_window
85+
apply_immediately = var.apply_immediately
86+
monitoring_role_arn = data.aws_iam_role.enhanced_monitoring.arn
87+
monitoring_interval = var.monitoring_interval
88+
promotion_tier = count.index + 1
89+
performance_insights_enabled = local.performance_insights_enabled
9090

91-
tags = var.tags
91+
tags = merge(
92+
{
93+
"DatabaseType" = var.multitenant_tag,
94+
"MattermostCloudInstallationDatabase" = "PostgreSQL/Aurora"
95+
},
96+
var.tags
97+
)
9298

9399
lifecycle {
94100
ignore_changes = [
@@ -143,28 +149,28 @@ data "aws_sns_topic" "horizontal_scaling_sns_topic" {
143149
}
144150

145151
resource "aws_cloudwatch_metric_alarm" "db_instances_alarm_cpu" {
146-
count = var.replica_min
147-
alarm_name = format("rds-db-instance-multitenant-%s-%s-%s-cpu", split("-", var.vpc_id)[1], local.database_id, (count.index + 1))
148-
comparison_operator = "GreaterThanOrEqualToThreshold"
149-
evaluation_periods = "3"
150-
metric_name = "CPUUtilization"
151-
namespace = "AWS/RDS"
152-
period = "600"
153-
statistic = "Average"
154-
threshold = "70"
155-
alarm_description = "This metric monitors RDS DB Instance cpu utilization"
156-
actions_enabled = true
157-
alarm_actions = [data.aws_sns_topic.horizontal_scaling_sns_topic.arn]
158-
dimensions = {DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier}
152+
count = var.replica_min
153+
alarm_name = format("rds-db-instance-multitenant-%s-%s-%s-cpu", split("-", var.vpc_id)[1], local.database_id, (count.index + 1))
154+
comparison_operator = "GreaterThanOrEqualToThreshold"
155+
evaluation_periods = "3"
156+
metric_name = "CPUUtilization"
157+
namespace = "AWS/RDS"
158+
period = "600"
159+
statistic = "Average"
160+
threshold = "70"
161+
alarm_description = "This metric monitors RDS DB Instance cpu utilization"
162+
actions_enabled = true
163+
alarm_actions = [data.aws_sns_topic.horizontal_scaling_sns_topic.arn]
164+
dimensions = { DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier }
159165
}
160166

161167
resource "aws_cloudwatch_metric_alarm" "db_instances_alarm_memory" {
162-
count = var.replica_min
163-
alarm_name = format("rds-db-instance-multitenant-%s-%s-%s-memory", split("-", var.vpc_id)[1], local.database_id, (count.index + 1))
164-
comparison_operator = "LessThanOrEqualToThreshold"
165-
evaluation_periods = "3"
166-
threshold = var.memory_alarm_limit
167-
alarm_description = "This metric monitors RDS DB Instance freeable memory"
168+
count = var.replica_min
169+
alarm_name = format("rds-db-instance-multitenant-%s-%s-%s-memory", split("-", var.vpc_id)[1], local.database_id, (count.index + 1))
170+
comparison_operator = "LessThanOrEqualToThreshold"
171+
evaluation_periods = "3"
172+
threshold = var.memory_alarm_limit
173+
alarm_description = "This metric monitors RDS DB Instance freeable memory"
168174
metric_query {
169175
id = "e1"
170176
expression = "m1+${var.memory_cache_proportion}*${var.ram_memory_bytes[var.instance_type]}"
@@ -173,18 +179,18 @@ resource "aws_cloudwatch_metric_alarm" "db_instances_alarm_memory" {
173179
}
174180

175181
metric_query {
176-
id = "m1"
182+
id = "m1"
177183
metric {
178-
metric_name = "FreeableMemory"
179-
namespace = "AWS/RDS"
180-
period = "600"
181-
stat = "Average"
182-
dimensions = {DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier}
184+
metric_name = "FreeableMemory"
185+
namespace = "AWS/RDS"
186+
period = "600"
187+
stat = "Average"
188+
dimensions = { DBInstanceIdentifier = aws_rds_cluster_instance.provisioning_rds_db_instance[count.index].identifier }
183189
}
184190
return_data = "false"
185191
}
186-
actions_enabled = true
187-
alarm_actions = [data.aws_sns_topic.horizontal_scaling_sns_topic.arn]
192+
actions_enabled = true
193+
alarm_actions = [data.aws_sns_topic.horizontal_scaling_sns_topic.arn]
188194
}
189195

190196

@@ -200,22 +206,22 @@ resource "aws_db_parameter_group" "db_parameter_group_postgresql" {
200206
}
201207

202208
parameter {
203-
name = "random_page_cost"
209+
name = "random_page_cost"
204210
value = var.random_page_cost
205211
}
206212

207213
parameter {
208-
name = "tcp_keepalives_count"
214+
name = "tcp_keepalives_count"
209215
value = var.tcp_keepalives_count
210216
}
211217

212218
parameter {
213-
name = "tcp_keepalives_idle"
219+
name = "tcp_keepalives_idle"
214220
value = var.tcp_keepalives_idle
215221
}
216222

217223
parameter {
218-
name = "tcp_keepalives_interval"
224+
name = "tcp_keepalives_interval"
219225
value = var.tcp_keepalives_interval
220226
}
221227

@@ -240,22 +246,22 @@ resource "aws_rds_cluster_parameter_group" "cluster_parameter_group_postgresql"
240246
}
241247

242248
parameter {
243-
name = "random_page_cost"
249+
name = "random_page_cost"
244250
value = var.random_page_cost
245251
}
246252

247253
parameter {
248-
name = "tcp_keepalives_count"
254+
name = "tcp_keepalives_count"
249255
value = var.tcp_keepalives_count
250256
}
251257

252258
parameter {
253-
name = "tcp_keepalives_idle"
259+
name = "tcp_keepalives_idle"
254260
value = var.tcp_keepalives_idle
255261
}
256262

257263
parameter {
258-
name = "tcp_keepalives_interval"
264+
name = "tcp_keepalives_interval"
259265
value = var.tcp_keepalives_interval
260266
}
261267

0 commit comments

Comments
 (0)