Difference between revisions of "Terraform resource: aws cloudwatch metric alarm"

From wikieduonline
Jump to navigation Jump to search
Line 3: Line 3:
  
 
== Examples ==
 
== Examples ==
<pre>
+
 
resource "aws_cloudwatch_metric_alarm" "db_cpu_utilization_too_high" {
+
resource "aws_cloudwatch_metric_alarm" "db_cpu_utilization_too_high" {
 
   alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-highCPUUtilization")
 
   alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-highCPUUtilization")
 
   comparison_operator = "GreaterThanThreshold"
 
   comparison_operator = "GreaterThanThreshold"
 
   evaluation_periods  = "5"
 
   evaluation_periods  = "5"
 
   metric_name        = "CPUUtilization"
 
   metric_name        = "CPUUtilization"
   namespace          = "AWS/RDS"
+
   namespace          = "[[AWS/RDS]]"
 
   period              = "120"
 
   period              = "120"
 
   statistic          = "Average"
 
   statistic          = "Average"
Line 18: Line 18:
 
     DBInstanceIdentifier = aws_db_instance.rds_instance.id
 
     DBInstanceIdentifier = aws_db_instance.rds_instance.id
 
   }
 
   }
}
+
}
  
 +
<pre>
 
resource "aws_cloudwatch_metric_alarm" "db_disk_queue_depth_too_high" {
 
resource "aws_cloudwatch_metric_alarm" "db_disk_queue_depth_too_high" {
 
   alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-highDiskQueueDepth")
 
   alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-highDiskQueueDepth")
Line 68: Line 69:
 
}
 
}
 
</pre>
 
</pre>
 
 
  
 
== ChatGPT examples (01/2023) ==
 
== ChatGPT examples (01/2023) ==

Revision as of 08:52, 8 February 2023


Examples

resource "aws_cloudwatch_metric_alarm" "db_cpu_utilization_too_high" {
 alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-highCPUUtilization")
 comparison_operator = "GreaterThanThreshold"
 evaluation_periods  = "5"
 metric_name         = "CPUUtilization"
 namespace           = "AWS/RDS"
 period              = "120"
 statistic           = "Average"
 threshold           = "80"
 alarm_description   = "Average database CPU utilization is too high."
 dimensions = {
   DBInstanceIdentifier = aws_db_instance.rds_instance.id
 }
}
 
resource "aws_cloudwatch_metric_alarm" "db_disk_queue_depth_too_high" {
  alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-highDiskQueueDepth")
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = "2"
  metric_name         = "DiskQueueDepth"
  namespace           = "AWS/RDS"
  period              = "120"
  statistic           = "Average"
  threshold           = "10"
  alarm_description   = "Average database disk queue depth is too high, performance may be negatively impacted."

  dimensions = {
    DBInstanceIdentifier = aws_db_instance.rds_instance.id
  }
}

resource "aws_cloudwatch_metric_alarm" "db_disk_free_storage_space_too_low" {
  alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-lowFreeStorageSpace")
  comparison_operator = "LessThanThreshold"
  evaluation_periods  = "2"
  metric_name         = "FreeStorageSpace"
  namespace           = "AWS/RDS"
  period              = "120"
  statistic           = "Average"
  threshold           = "10"
  alarm_description   = "Average database free storage space is too low and may fill up soon."

  dimensions = {
    DBInstanceIdentifier = aws_db_instance.rds_instance.id
  }
}

resource "aws_cloudwatch_metric_alarm" "db_memory_freeable_too_low" {
  alarm_name          = format("%s-%s", lower("${var.rds_name}"), "db-lowFreeableMemory")
  comparison_operator = "LessThanThreshold"
  evaluation_periods  = "2"
  metric_name         = "FreeableMemory"
  namespace           = "AWS/RDS"
  period              = "120"
  statistic           = "Average"
  threshold           = "10"
  alarm_description   = "Average database freeable memory is too low, performance may be negatively impacted."

  dimensions = {
    DBInstanceIdentifier = aws_db_instance.rds_instance.id
  }
}

ChatGPT examples (01/2023)

resource "aws_cloudwatch_metric_alarm" "elb_5xx_error_rate" {
 alarm_name                = "elb_5xx_error_rate"
 comparison_operator       = "GreaterThanThreshold"
 evaluation_periods        = "5"
 metric_name               = "HTTPCode_Backend_5XX"
 namespace                 = "AWS/ApplicationELB"
 period                    = "60"
 statistic                 = "SampleCount"
 threshold                 = "1"
 alarm_description         = "This alarm will notify when the 5XX error rate is greater than 1% for 5 consecutive minutes"
 alarm_actions             = [aws_sns_topic.example.arn]
 dimensions = {
   LoadBalancer = aws_elbv2_load_balancer.example.name
 }
}
resource "aws_cloudwatch_metric_alarm" "elb_response_time" {
 alarm_name                = "elb_response_time"
 comparison_operator       = "GreaterThanThreshold"
 evaluation_periods        = "5"
 metric_name               = "TargetResponseTime"
 namespace                 = "AWS/ApplicationELB"
 period                    = "60"
 statistic                 = "Average"
 threshold                 = "2"
 alarm_description         = "This alarm will notify when the average response time is greater than 2 seconds for 5 consecutive data points"
 alarm_actions             = [aws_sns_topic.example.arn]
 dimensions = {
   LoadBalancer = aws_elbv2_load_balancer.example.name
 }
}
resource "aws_cloudwatch_metric_alarm" "elb_response_time" {
 alarm_name                = "elb_response_time"
 comparison_operator       = "GreaterThanThreshold"
 evaluation_periods        = "5"
 metric_name               = "TargetResponseTime"
 namespace                 = "AWS/ApplicationELB"
 period                    = "60"
 statistic                 = "Maximum"
 threshold                 = "1"
 alarm_description         = "This alarm will notify when the maximum response time is greater than 1 second for 5 consecutive data points"
 alarm_actions             = [aws_sns_topic.example.arn]
 dimensions = {
   LoadBalancer = aws_elbv2_load_balancer.example.name
 }
}
resource "aws_cloudwatch_metric_alarm" "elb_response_time_90th_percentile" {
 alarm_name                = "elb_response_time_90th_percentile"
 comparison_operator       = "GreaterThanThreshold"
 evaluation_periods        = "5"
 metric_name               = "TargetResponseTime"
 namespace                 = "AWS/ApplicationELB"
 period                    = "60"
 statistic                 = "p90"
 threshold                 = "1"
 alarm_description         = "This alarm will notify when the 90th percentile of the response time is greater than 1 second for 5 consecutive data points"
 alarm_actions             = [aws_sns_topic.example.arn]
 dimensions = {
   LoadBalancer = aws_elbv2_load_balancer.example.name
 }
}
resource "aws_sns_topic" "example" {
 name = "example-topic"
}

Related

See also

Advertising: