/* data "external" "nlb-targetgroups" { program = ["bash", "${path.module}/list-nlb-targetgroups.sh"] query = { parameter = var.load-balancer } } */ locals { nlb-name = "net/${split("/", var.load-balancer)[2]}/${split("/", var.load-balancer)[3]}" } resource "aws_cloudwatch_metric_alarm" "nlb-TCP_Target_Reset_Count" { alarm_name = "${var.settings.TCP_Target_Reset_Count.ecccode}-NLB_${local.nlb-name}-TCP_Target_Reset_Count" comparison_operator = var.settings.TCP_Target_Reset_Count.comparison_operator evaluation_periods = var.settings.TCP_Target_Reset_Count.evaluation_periods metric_name = "TCP_Target_Reset_Count" period = var.settings.TCP_Target_Reset_Count.period statistic = var.settings.TCP_Target_Reset_Count.statistic threshold = var.settings.TCP_Target_Reset_Count.threshold alarm_description = "NLB:TCP_Target_Reset_Count" namespace = "AWS/NetworkELB" insufficient_data_actions = [] actions_enabled = var.actions-enabled alarm_actions = [var.settings.TCP_Target_Reset_Count.action] ok_actions = [var.settings.TCP_Target_Reset_Count.action] dimensions = { LoadBalancer = local.nlb-name } } /* module "nlb-targetgroups" { source = "../../util/resource-list" resource-type = "nlb-targetgroups" query-input = var.load-balancer asrolearn = var.asrolearn } */ // causes Rate exceeded error, maybe because of adaptive AWS_RETRY_MODE? /* module "nlb_tgs" { assume_role_arn = var.asrolearn role_session_name = "terraform-resource-list" source = "../../util/terraform-aws-cli" aws_cli_commands = ["elbv2", "describe-target-groups", "--load-balancer-arn", var.load-balancer] aws_cli_query = "TargetGroups[*].TargetGroupArn" } */ module nlb_tgs { source = "../../util/awscli" access_key = var.target-account-ak aws_cli_commands = "elbv2 describe-target-groups --load-balancer-arn ${var.load-balancer} --query TargetGroups[*].TargetGroupArn" secret_key = var.target-account-sk session_token = var.target-account-token } resource "aws_cloudwatch_metric_alarm" "nlb-HealthyHostCount" { # for_each = module.nlb-targetgroups.result-set for_each = toset(module.nlb_tgs.awscliout) alarm_name = "${var.settings.HealthHostCountMin.ecccode}-NLBTG_${split(":", each.value)[5]}-HealthyHostCount" comparison_operator = var.settings.HealthHostCountMin.comparison_operator evaluation_periods = var.settings.HealthHostCountMin.evaluation_periods metric_name = "HealthyHostCount" period = var.settings.HealthHostCountMin.period statistic = var.settings.HealthHostCountMin.statistic threshold = var.settings.HealthHostCountMin.threshold alarm_description = "NLBTG:HealthyHostCount" namespace = "AWS/NetworkELB" insufficient_data_actions = [] actions_enabled = var.actions-enabled alarm_actions = [var.settings.HealthHostCountMin.action] ok_actions = [var.settings.HealthHostCountMin.action] dimensions = { TargetGroup = split(":", each.value)[5] LoadBalancer = "net/${split("/", var.load-balancer)[2]}/${split("/", var.load-balancer)[3]}" } } resource "aws_cloudwatch_metric_alarm" "nlb-UnHealthyHostCount" { # for_each = module.nlb-targetgroups.result-set for_each = toset(module.nlb_tgs.awscliout) alarm_name = "${var.settings.UnHealthyHostCount.ecccode}-NLBTG_${split(":", each.value)[5]}-UnHealthyHostCount" comparison_operator = var.settings.UnHealthyHostCount.comparison_operator evaluation_periods = var.settings.UnHealthyHostCount.evaluation_periods metric_name = "UnHealthyHostCount" period = var.settings.UnHealthyHostCount.period statistic = var.settings.UnHealthyHostCount.statistic threshold = var.settings.UnHealthyHostCount.threshold alarm_description = "NLBTG:UnHealthyHostCount" namespace = "AWS/NetworkELB" insufficient_data_actions = [] actions_enabled = var.actions-enabled alarm_actions = [var.settings.UnHealthyHostCount.action] ok_actions = [var.settings.UnHealthyHostCount.action] dimensions = { TargetGroup = split(":", each.value)[5] LoadBalancer = "net/${split("/", var.load-balancer)[2]}/${split("/", var.load-balancer)[3]}" } }