Skip to content

Commit fe36fc4

Browse files
authored
Merge pull request #4 from jmengoni/fix-alarms
Fix alarm bug + add alarms for all nodes
2 parents fc7ee3a + 081ea0c commit fe36fc4

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ on:
44
push:
55
branches:
66
- main
7+
permissions:
8+
actions: read
9+
checks: read
10+
contents: read
11+
pull-requests: write
712
jobs:
813
ci:
914
uses: SPHTech-Platform/reusable-workflows/.github/workflows/terraform.yaml@main

alarms.tf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
resource "aws_cloudwatch_metric_alarm" "cache_cpu" {
2-
count = var.enabled ? 1 : 0
2+
count = var.enabled ? local.num_nodes : 0
33

4-
alarm_name = "${local.cluster_id}-cpu-utilization"
4+
alarm_name = "${tolist(aws_elasticache_replication_group.this[0].member_clusters)[count.index]}-cpu-utilization"
55
alarm_description = "Redis cluster CPU utilization"
66

77
comparison_operator = "GreaterThanThreshold"
@@ -18,7 +18,7 @@ resource "aws_cloudwatch_metric_alarm" "cache_cpu" {
1818
threshold = var.alarm_cpu_threshold_percent
1919

2020
dimensions = {
21-
CacheClusterId = local.cluster_id
21+
CacheClusterId = tolist(aws_elasticache_replication_group.this[0].member_clusters)[count.index]
2222
}
2323

2424
alarm_actions = var.alarm_actions
@@ -30,9 +30,9 @@ resource "aws_cloudwatch_metric_alarm" "cache_cpu" {
3030
}
3131

3232
resource "aws_cloudwatch_metric_alarm" "cache_memory" {
33-
count = var.enabled ? 1 : 0
33+
count = var.enabled ? local.num_nodes : 0
3434

35-
alarm_name = "${local.cluster_id}-freeable-memory"
35+
alarm_name = "${tolist(aws_elasticache_replication_group.this[0].member_clusters)[count.index]}-freeable-memory"
3636
alarm_description = "Redis cluster freeable memory"
3737

3838
comparison_operator = "LessThanThreshold"
@@ -49,7 +49,7 @@ resource "aws_cloudwatch_metric_alarm" "cache_memory" {
4949
tags = var.tags
5050

5151
dimensions = {
52-
CacheClusterId = local.cluster_id
52+
CacheClusterId = tolist(aws_elasticache_replication_group.this[0].member_clusters)[count.index]
5353
}
5454

5555
alarm_actions = var.alarm_actions

main.tf

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
locals {
22
cluster_id = coalesce(var.cluster_id, var.name)
3+
4+
cluster_size = var.replication_enabled ? var.cluster_size >= 2 ? var.cluster_size : 2 : var.cluster_size
5+
6+
num_nodes = var.cluster_mode_enabled ? var.num_node_groups * var.replicas_per_node_group : local.cluster_size
7+
8+
parameters = var.cluster_mode_enabled ? concat(
9+
var.parameters,
10+
[{
11+
name = "cluster-enabled"
12+
value = "yes"
13+
}]
14+
) : var.parameters
315
}
416

517
resource "aws_elasticache_parameter_group" "this" {
@@ -9,7 +21,7 @@ resource "aws_elasticache_parameter_group" "this" {
921
family = var.elasticache_parameter_group_family
1022

1123
dynamic "parameter" {
12-
for_each = var.parameters
24+
for_each = local.parameters
1325

1426
content {
1527
name = parameter.value.name
@@ -36,9 +48,9 @@ resource "aws_elasticache_replication_group" "this" {
3648
port = var.port
3749

3850
node_type = var.instance_type
39-
num_cache_clusters = var.replication_enabled ? var.cluster_size >= 2 ? var.cluster_size : 2 : var.cluster_size
51+
num_cache_clusters = var.cluster_mode_enabled ? null : local.cluster_size
4052

41-
preferred_cache_cluster_azs = var.replication_enabled ? var.preferred_cache_cluster_azs : null
53+
preferred_cache_cluster_azs = var.replication_enabled && !var.cluster_mode_enabled ? var.preferred_cache_cluster_azs : null
4254

4355
parameter_group_name = var.parameter_group_name != "" ? var.parameter_group_name : aws_elasticache_parameter_group.this[0].name
4456
subnet_group_name = try(aws_elasticache_subnet_group.this[0].name, var.subnet_group_name)

0 commit comments

Comments
 (0)