Skip to content

Commit ccc7999

Browse files
authored
Merge pull request #7 from companieshouse/update/alb-asg-alarms-sns
Adding ASG alarms, updating ALB alarms and adding SNS topic for delivery
2 parents c7beddc + 610bda5 commit ccc7999

File tree

11 files changed

+154
-10
lines changed

11 files changed

+154
-10
lines changed

groups/adminsites-infrastructure/README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,16 @@
2424
| <a name="module_adminsites_asg_security_group"></a> [adminsites\_asg\_security\_group](#module\_adminsites\_asg\_security\_group) | terraform-aws-modules/security-group/aws | ~> 3.0 |
2525
| <a name="module_adminsites_internal_alb"></a> [adminsites\_internal\_alb](#module\_adminsites\_internal\_alb) | terraform-aws-modules/alb/aws | ~> 5.0 |
2626
| <a name="module_adminsites_internal_alb_security_group"></a> [adminsites\_internal\_alb\_security\_group](#module\_adminsites\_internal\_alb\_security\_group) | terraform-aws-modules/security-group/aws | ~> 3.0 |
27+
| <a name="module_cloudwatch_sns_notifications"></a> [cloudwatch\_sns\_notifications](#module\_cloudwatch\_sns\_notifications) | terraform-aws-modules/sns/aws | 3.3.0 |
2728
| <a name="module_ewfadmin_autoscaling_groups"></a> [ewfadmin\_autoscaling\_groups](#module\_ewfadmin\_autoscaling\_groups) | [email protected]:companieshouse/terraform-modules//aws/terraform-aws-autoscaling?ref=tags/1.0.36 | |
29+
| <a name="module_ewfadmin_autoscaling_groups_alarms"></a> [ewfadmin\_autoscaling\_groups\_alarms](#module\_ewfadmin\_autoscaling\_groups\_alarms) | [email protected]:companieshouse/terraform-modules//aws/asg-cloudwatch-alarms?ref=tags/1.0.108 | |
2830
| <a name="module_ewfadmin_iam_profile"></a> [ewfadmin\_iam\_profile](#module\_ewfadmin\_iam\_profile) | [email protected]:companieshouse/terraform-modules//aws/instance_profile?ref=tags/1.0.59 | |
29-
| <a name="module_internal_alb_metrics"></a> [internal\_alb\_metrics](#module\_internal\_alb\_metrics) | [email protected]:companieshouse/terraform-modules//aws/alb-metrics?ref=tags/1.0.26 | |
31+
| <a name="module_internal_alb_alarms"></a> [internal\_alb\_alarms](#module\_internal\_alb\_alarms) | [email protected]:companieshouse/terraform-modules//aws/alb-cloudwatch-alarms?ref=tags/1.0.104 | |
3032
| <a name="module_xmladmin_autoscaling_groups"></a> [xmladmin\_autoscaling\_groups](#module\_xmladmin\_autoscaling\_groups) | [email protected]:companieshouse/terraform-modules//aws/terraform-aws-autoscaling?ref=tags/1.0.36 | |
33+
| <a name="module_xmladmin_autoscaling_groups_alarms"></a> [xmladmin\_autoscaling\_groups\_alarms](#module\_xmladmin\_autoscaling\_groups\_alarms) | [email protected]:companieshouse/terraform-modules//aws/asg-cloudwatch-alarms?ref=tags/1.0.108 | |
3134
| <a name="module_xmladmin_iam_profile"></a> [xmladmin\_iam\_profile](#module\_xmladmin\_iam\_profile) | [email protected]:companieshouse/terraform-modules//aws/instance_profile?ref=tags/1.0.59 | |
3235
| <a name="module_xmloutadmin_autoscaling_groups"></a> [xmloutadmin\_autoscaling\_groups](#module\_xmloutadmin\_autoscaling\_groups) | [email protected]:companieshouse/terraform-modules//aws/terraform-aws-autoscaling?ref=tags/1.0.36 | |
36+
| <a name="module_xmloutadmin_autoscaling_groups_alarms"></a> [xmloutadmin\_autoscaling\_groups\_alarms](#module\_xmloutadmin\_autoscaling\_groups\_alarms) | [email protected]:companieshouse/terraform-modules//aws/asg-cloudwatch-alarms?ref=tags/1.0.108 | |
3337
| <a name="module_xmloutadmin_iam_profile"></a> [xmloutadmin\_iam\_profile](#module\_xmloutadmin\_iam\_profile) | [email protected]:companieshouse/terraform-modules//aws/instance_profile?ref=tags/1.0.59 | |
3438

3539
## Resources
@@ -97,6 +101,7 @@
97101
| <a name="input_cw_logs"></a> [cw\_logs](#input\_cw\_logs) | Map of log file information; used to create log groups, IAM permissions and passed to the application to configure remote logging | `map(any)` | `{}` | no |
98102
| <a name="input_default_log_group_retention_in_days"></a> [default\_log\_group\_retention\_in\_days](#input\_default\_log\_group\_retention\_in\_days) | Total days to retain logs in CloudWatch log group if not specified for specific logs | `number` | `14` | no |
99103
| <a name="input_domain_name"></a> [domain\_name](#input\_domain\_name) | Top level domain dame | `string` | `"companieshouse.gov.uk"` | no |
104+
| <a name="input_enable_sns_topic"></a> [enable\_sns\_topic](#input\_enable\_sns\_topic) | A boolean value to alter deployment of an SNS topic for CloudWatch actions | `bool` | `false` | no |
100105
| <a name="input_ewfadmin_custom_logs"></a> [ewfadmin\_custom\_logs](#input\_ewfadmin\_custom\_logs) | Map of log file information for EWF Admin specifically; used to create log groups, IAM permissions and passed to the application to configure remote logging | `map(any)` | `{}` | no |
101106
| <a name="input_health_check_path"></a> [health\_check\_path](#input\_health\_check\_path) | Target group health check path | `string` | `"/"` | no |
102107
| <a name="input_nfs_mount_destination_parent_dir"></a> [nfs\_mount\_destination\_parent\_dir](#input\_nfs\_mount\_destination\_parent\_dir) | The parent folder that all NFS shares should be mounted inside on the EC2 instance | `string` | `"/mnt"` | no |

groups/adminsites-infrastructure/alb-internal.tf

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,27 @@ module "adminsites_internal_alb" {
177177
}
178178

179179
#--------------------------------------------
180-
# Internal ALB CloudWatch Merics
180+
# Internal ALB CloudWatch Alarms
181181
#--------------------------------------------
182-
module "internal_alb_metrics" {
183-
source = "[email protected]:companieshouse/terraform-modules//aws/alb-metrics?ref=tags/1.0.26"
184-
185-
load_balancer_id = module.adminsites_internal_alb.this_lb_id
186-
target_group_ids = module.adminsites_internal_alb.target_group_arns
187-
188-
depends_on = [module.adminsites_internal_alb]
189-
}
182+
module "internal_alb_alarms" {
183+
source = "[email protected]:companieshouse/terraform-modules//aws/alb-cloudwatch-alarms?ref=tags/1.0.104"
184+
185+
alb_arn_suffix = module.adminsites_internal_alb.this_lb_arn_suffix
186+
target_group_arn_suffixes = module.adminsites_internal_alb.target_group_arn_suffixes
187+
188+
prefix = "admin-sites-"
189+
response_time_threshold = "100"
190+
evaluation_periods = "3"
191+
statistic_period = "60"
192+
maximum_4xx_threshold = "2"
193+
maximum_5xx_threshold = "2"
194+
unhealthy_hosts_threshold = "1"
195+
196+
actions_alarm = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
197+
actions_ok = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
198+
199+
depends_on = [
200+
module.cloudwatch_sns_notifications,
201+
module.adminsites_internal_alb
202+
]
203+
}

groups/adminsites-infrastructure/autoscaling_group_ewfadmin.tf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,35 @@ module "ewfadmin_autoscaling_groups" {
7373
module.adminsites_internal_alb
7474
]
7575
}
76+
77+
#--------------------------------------------
78+
# EWF Admin CloudWatch Alarms
79+
#--------------------------------------------
80+
module "ewfadmin_autoscaling_groups_alarms" {
81+
source = "[email protected]:companieshouse/terraform-modules//aws/asg-cloudwatch-alarms?ref=tags/1.0.108"
82+
83+
autoscaling_group_name = module.ewfadmin_autoscaling_groups.this_autoscaling_group_name
84+
prefix = "ewfadmin-asg-alarms"
85+
86+
in_service_evaluation_periods = "3"
87+
in_service_statistic_period = "120"
88+
expected_instances_in_service = var.desired_capacity
89+
in_pending_evaluation_periods = "3"
90+
in_pending_statistic_period = "120"
91+
in_standby_evaluation_periods = "3"
92+
in_standby_statistic_period = "120"
93+
in_terminating_evaluation_periods = "3"
94+
in_terminating_statistic_period = "120"
95+
total_instances_evaluation_periods = "3"
96+
total_instances_statistic_period = "120"
97+
total_instances_in_service = var.desired_capacity
98+
99+
actions_alarm = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
100+
actions_ok = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
101+
102+
103+
depends_on = [
104+
module.cloudwatch_sns_notifications,
105+
module.ewfadmin_autoscaling_groups
106+
]
107+
}

groups/adminsites-infrastructure/autoscaling_group_xmladmin.tf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,36 @@ module "xmladmin_autoscaling_groups" {
7272
depends_on = [
7373
module.adminsites_internal_alb
7474
]
75+
}
76+
77+
#--------------------------------------------
78+
# XML Admin CloudWatch Alarms
79+
#--------------------------------------------
80+
module "xmladmin_autoscaling_groups_alarms" {
81+
source = "[email protected]:companieshouse/terraform-modules//aws/asg-cloudwatch-alarms?ref=tags/1.0.108"
82+
83+
autoscaling_group_name = module.xmladmin_autoscaling_groups.this_autoscaling_group_name
84+
prefix = "xmladmin-asg-alarms"
85+
86+
in_service_evaluation_periods = "3"
87+
in_service_statistic_period = "120"
88+
expected_instances_in_service = var.desired_capacity
89+
in_pending_evaluation_periods = "3"
90+
in_pending_statistic_period = "120"
91+
in_standby_evaluation_periods = "3"
92+
in_standby_statistic_period = "120"
93+
in_terminating_evaluation_periods = "3"
94+
in_terminating_statistic_period = "120"
95+
total_instances_evaluation_periods = "3"
96+
total_instances_statistic_period = "120"
97+
total_instances_in_service = var.desired_capacity
98+
99+
actions_alarm = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
100+
actions_ok = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
101+
102+
103+
depends_on = [
104+
module.cloudwatch_sns_notifications,
105+
module.xmladmin_autoscaling_groups
106+
]
75107
}

groups/adminsites-infrastructure/autoscaling_group_xmloutadmin.tf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,36 @@ module "xmloutadmin_autoscaling_groups" {
7272
depends_on = [
7373
module.adminsites_internal_alb
7474
]
75+
}
76+
77+
#--------------------------------------------
78+
# XMLout Admin CloudWatch Alarms
79+
#--------------------------------------------
80+
module "xmloutadmin_autoscaling_groups_alarms" {
81+
source = "[email protected]:companieshouse/terraform-modules//aws/asg-cloudwatch-alarms?ref=tags/1.0.108"
82+
83+
autoscaling_group_name = module.xmloutadmin_autoscaling_groups.this_autoscaling_group_name
84+
prefix = "xmladmin-asg-alarms"
85+
86+
in_service_evaluation_periods = "3"
87+
in_service_statistic_period = "120"
88+
expected_instances_in_service = var.desired_capacity
89+
in_pending_evaluation_periods = "3"
90+
in_pending_statistic_period = "120"
91+
in_standby_evaluation_periods = "3"
92+
in_standby_statistic_period = "120"
93+
in_terminating_evaluation_periods = "3"
94+
in_terminating_statistic_period = "120"
95+
total_instances_evaluation_periods = "3"
96+
total_instances_statistic_period = "120"
97+
total_instances_in_service = var.desired_capacity
98+
99+
actions_alarm = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
100+
actions_ok = var.enable_sns_topic ? [module.cloudwatch_sns_notifications[0].sns_topic_arn] : []
101+
102+
103+
depends_on = [
104+
module.cloudwatch_sns_notifications,
105+
module.xmloutadmin_autoscaling_groups
106+
]
75107
}

groups/adminsites-infrastructure/locals.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ locals {
66
s3_releases = data.vault_generic_secret.s3_releases.data
77
adminsites_ec2_data = data.vault_generic_secret.adminsites_ec2_data.data
88

9+
sns_kms_key_id = data.vault_generic_secret.kms_keys.data["sns"]
910
logs_kms_key_id = data.vault_generic_secret.kms_keys.data["logs"]
1011
ssm_kms_key_id = data.vault_generic_secret.security_kms_keys.data["session-manager-kms-key-arn"]
1112
session_manager_bucket_name = data.vault_generic_secret.security_s3_buckets.data["session-manager-bucket-name"]

groups/adminsites-infrastructure/profiles/heritage-development-eu-west-2/vars

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ min_size = 0
1818
max_size = 0
1919
desired_capacity = 0
2020

21+
enable_sns_topic = "false"
22+
2123
# CVO Mounts
2224
nfs_server = "10.104.9.145"
2325
nfs_mount_destination_parent_dir = "/mnt/nfs/filings"

groups/adminsites-infrastructure/profiles/heritage-live-eu-west-2/vars

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ min_size = 1
1818
max_size = 1
1919
desired_capacity = 1
2020

21+
enable_sns_topic = "true"
22+
2123
# CVO Mounts
2224
nfs_server = "192.168.255.35"
2325
nfs_mount_destination_parent_dir = "/mnt/nfs/filings"

groups/adminsites-infrastructure/profiles/heritage-staging-eu-west-2/vars

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ min_size = 1
1818
max_size = 1
1919
desired_capacity = 1
2020

21+
enable_sns_topic = "false"
22+
2123
# CVO Mounts
2224
nfs_server = "192.168.255.19"
2325
nfs_mount_destination_parent_dir = "/mnt/nfs/filings"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module "cloudwatch_sns_notifications" {
2+
count = var.enable_sns_topic ? 1 : 0
3+
4+
source = "terraform-aws-modules/sns/aws"
5+
version = "3.3.0"
6+
7+
name_prefix = "${var.application}-cloudwatch-"
8+
display_name = "${var.application}-cloudwatch-alarms"
9+
kms_master_key_id = local.sns_kms_key_id
10+
11+
tags = merge(
12+
local.default_tags,
13+
map(
14+
"ServiceTeam", "${upper(var.application)}-FE-Support"
15+
)
16+
)
17+
}

0 commit comments

Comments
 (0)